sushi 3.2.4 → 4.0.1

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 (527) hide show
  1. package/dist/_cjs/calculate/fee.js +2 -2
  2. package/dist/_cjs/calculate/fee.js.map +1 -1
  3. package/dist/_cjs/index.js +0 -3
  4. package/dist/_cjs/index.js.map +1 -1
  5. package/dist/_cjs/math/functions/get-big-int.js +15 -0
  6. package/dist/_cjs/math/functions/get-big-int.js.map +1 -0
  7. package/dist/_cjs/math/functions/index.js +3 -1
  8. package/dist/_cjs/math/functions/index.js.map +1 -1
  9. package/dist/_cjs/pool/sushiswap-v3/utils/computePoolAddress.js +14 -18
  10. package/dist/_cjs/pool/sushiswap-v3/utils/computePoolAddress.js.map +1 -1
  11. package/dist/_cjs/router/index.js +27 -11
  12. package/dist/_cjs/router/index.js.map +1 -1
  13. package/dist/_cjs/router/pool-type.js +14 -0
  14. package/dist/_cjs/router/pool-type.js.map +1 -0
  15. package/dist/_cjs/router/route-status.js +10 -0
  16. package/dist/_cjs/router/route-status.js.map +1 -0
  17. package/dist/_cjs/router/router-liquidity-source.js +9 -0
  18. package/dist/_cjs/router/router-liquidity-source.js.map +1 -0
  19. package/dist/_cjs/validate/index.js +1 -0
  20. package/dist/_cjs/validate/index.js.map +1 -1
  21. package/dist/_cjs/{serializer/AddressValidation.js → validate/isAddressFast.js} +1 -1
  22. package/dist/_cjs/validate/isAddressFast.js.map +1 -0
  23. package/dist/_esm/calculate/fee.js +1 -1
  24. package/dist/_esm/calculate/fee.js.map +1 -1
  25. package/dist/_esm/index.js +0 -3
  26. package/dist/_esm/index.js.map +1 -1
  27. package/dist/_esm/math/functions/get-big-int.js +12 -0
  28. package/dist/_esm/math/functions/get-big-int.js.map +1 -0
  29. package/dist/_esm/math/functions/index.js +1 -0
  30. package/dist/_esm/math/functions/index.js.map +1 -1
  31. package/dist/_esm/pool/sushiswap-v3/utils/computePoolAddress.js +15 -18
  32. package/dist/_esm/pool/sushiswap-v3/utils/computePoolAddress.js.map +1 -1
  33. package/dist/_esm/router/get-currency-combinations.js +0 -2
  34. package/dist/_esm/router/get-currency-combinations.js.map +1 -1
  35. package/dist/_esm/router/index.js +21 -11
  36. package/dist/_esm/router/index.js.map +1 -1
  37. package/dist/_esm/router/pool-type.js +11 -0
  38. package/dist/_esm/router/pool-type.js.map +1 -0
  39. package/dist/_esm/router/route-status.js +7 -0
  40. package/dist/_esm/router/route-status.js.map +1 -0
  41. package/dist/_esm/router/router-liquidity-source.js +6 -0
  42. package/dist/_esm/router/router-liquidity-source.js.map +1 -0
  43. package/dist/_esm/validate/index.js +1 -0
  44. package/dist/_esm/validate/index.js.map +1 -1
  45. package/dist/_esm/{serializer/AddressValidation.js → validate/isAddressFast.js} +1 -1
  46. package/dist/_esm/validate/isAddressFast.js.map +1 -0
  47. package/dist/_types/index.d.ts +0 -3
  48. package/dist/_types/index.d.ts.map +1 -1
  49. package/dist/_types/math/functions/get-big-int.d.ts +2 -0
  50. package/dist/_types/math/functions/get-big-int.d.ts.map +1 -0
  51. package/dist/_types/math/functions/index.d.ts +1 -0
  52. package/dist/_types/math/functions/index.d.ts.map +1 -1
  53. package/dist/_types/pool/sushiswap-v3/utils/computePoolAddress.d.ts.map +1 -1
  54. package/dist/_types/router/get-currency-combinations.d.ts +2 -2
  55. package/dist/_types/router/get-currency-combinations.d.ts.map +1 -1
  56. package/dist/_types/router/index.d.ts +24 -11
  57. package/dist/_types/router/index.d.ts.map +1 -1
  58. package/dist/_types/router/pool-type.d.ts +10 -0
  59. package/dist/_types/router/pool-type.d.ts.map +1 -0
  60. package/dist/_types/router/route-status.d.ts +6 -0
  61. package/dist/_types/router/route-status.d.ts.map +1 -0
  62. package/dist/_types/router/router-liquidity-source.d.ts +5 -0
  63. package/dist/_types/router/router-liquidity-source.d.ts.map +1 -0
  64. package/dist/_types/validate/index.d.ts +1 -0
  65. package/dist/_types/validate/index.d.ts.map +1 -1
  66. package/dist/_types/{serializer/AddressValidation.d.ts → validate/isAddressFast.d.ts} +1 -1
  67. package/dist/_types/validate/isAddressFast.d.ts.map +1 -0
  68. package/package.json +1 -25
  69. package/dist/_cjs/pricing/IncrementalPricer.js +0 -375
  70. package/dist/_cjs/pricing/IncrementalPricer.js.map +0 -1
  71. package/dist/_cjs/pricing/PoolTokenGraph.js +0 -58
  72. package/dist/_cjs/pricing/PoolTokenGraph.js.map +0 -1
  73. package/dist/_cjs/pricing/index.js +0 -18
  74. package/dist/_cjs/pricing/index.js.map +0 -1
  75. package/dist/_cjs/router/HEXer.js +0 -112
  76. package/dist/_cjs/router/HEXer.js.map +0 -1
  77. package/dist/_cjs/router/PoolBinarySerialization.js +0 -466
  78. package/dist/_cjs/router/PoolBinarySerialization.js.map +0 -1
  79. package/dist/_cjs/router/Sankey.AnyChart.js +0 -25
  80. package/dist/_cjs/router/Sankey.AnyChart.js.map +0 -1
  81. package/dist/_cjs/router/curve-sdk.js +0 -204
  82. package/dist/_cjs/router/curve-sdk.js.map +0 -1
  83. package/dist/_cjs/router/data-fetcher.js +0 -159
  84. package/dist/_cjs/router/data-fetcher.js.map +0 -1
  85. package/dist/_cjs/router/liquidity-providers/ApeSwap.js +0 -31
  86. package/dist/_cjs/router/liquidity-providers/ApeSwap.js.map +0 -1
  87. package/dist/_cjs/router/liquidity-providers/Biswap.js +0 -26
  88. package/dist/_cjs/router/liquidity-providers/Biswap.js.map +0 -1
  89. package/dist/_cjs/router/liquidity-providers/CurvePoolsWhitelist.js +0 -3983
  90. package/dist/_cjs/router/liquidity-providers/CurvePoolsWhitelist.js.map +0 -1
  91. package/dist/_cjs/router/liquidity-providers/CurveProvider.js +0 -398
  92. package/dist/_cjs/router/liquidity-providers/CurveProvider.js.map +0 -1
  93. package/dist/_cjs/router/liquidity-providers/CurveProviderWhitelist.js +0 -99
  94. package/dist/_cjs/router/liquidity-providers/CurveProviderWhitelist.js.map +0 -1
  95. package/dist/_cjs/router/liquidity-providers/Dfyn.js +0 -31
  96. package/dist/_cjs/router/liquidity-providers/Dfyn.js.map +0 -1
  97. package/dist/_cjs/router/liquidity-providers/DovishV3.js +0 -28
  98. package/dist/_cjs/router/liquidity-providers/DovishV3.js.map +0 -1
  99. package/dist/_cjs/router/liquidity-providers/Elk.js +0 -47
  100. package/dist/_cjs/router/liquidity-providers/Elk.js.map +0 -1
  101. package/dist/_cjs/router/liquidity-providers/HoneySwap.js +0 -25
  102. package/dist/_cjs/router/liquidity-providers/HoneySwap.js.map +0 -1
  103. package/dist/_cjs/router/liquidity-providers/JetSwap.js +0 -29
  104. package/dist/_cjs/router/liquidity-providers/JetSwap.js.map +0 -1
  105. package/dist/_cjs/router/liquidity-providers/LaserSwap.js +0 -26
  106. package/dist/_cjs/router/liquidity-providers/LaserSwap.js.map +0 -1
  107. package/dist/_cjs/router/liquidity-providers/LiquidityProvider.js +0 -100
  108. package/dist/_cjs/router/liquidity-providers/LiquidityProvider.js.map +0 -1
  109. package/dist/_cjs/router/liquidity-providers/NativeWrapProvider.js +0 -46
  110. package/dist/_cjs/router/liquidity-providers/NativeWrapProvider.js.map +0 -1
  111. package/dist/_cjs/router/liquidity-providers/NetSwap.js +0 -25
  112. package/dist/_cjs/router/liquidity-providers/NetSwap.js.map +0 -1
  113. package/dist/_cjs/router/liquidity-providers/PancakeSwap.js +0 -28
  114. package/dist/_cjs/router/liquidity-providers/PancakeSwap.js.map +0 -1
  115. package/dist/_cjs/router/liquidity-providers/QuickSwap.js +0 -25
  116. package/dist/_cjs/router/liquidity-providers/QuickSwap.js.map +0 -1
  117. package/dist/_cjs/router/liquidity-providers/SpookySwap.js +0 -25
  118. package/dist/_cjs/router/liquidity-providers/SpookySwap.js.map +0 -1
  119. package/dist/_cjs/router/liquidity-providers/SushiSwapV2.js +0 -20
  120. package/dist/_cjs/router/liquidity-providers/SushiSwapV2.js.map +0 -1
  121. package/dist/_cjs/router/liquidity-providers/SushiSwapV3.js +0 -106
  122. package/dist/_cjs/router/liquidity-providers/SushiSwapV3.js.map +0 -1
  123. package/dist/_cjs/router/liquidity-providers/TraderJoe.js +0 -25
  124. package/dist/_cjs/router/liquidity-providers/TraderJoe.js.map +0 -1
  125. package/dist/_cjs/router/liquidity-providers/UbeSwap.js +0 -25
  126. package/dist/_cjs/router/liquidity-providers/UbeSwap.js.map +0 -1
  127. package/dist/_cjs/router/liquidity-providers/UniswapV2.js +0 -25
  128. package/dist/_cjs/router/liquidity-providers/UniswapV2.js.map +0 -1
  129. package/dist/_cjs/router/liquidity-providers/UniswapV2Base.js +0 -112
  130. package/dist/_cjs/router/liquidity-providers/UniswapV2Base.js.map +0 -1
  131. package/dist/_cjs/router/liquidity-providers/UniswapV3.js +0 -43
  132. package/dist/_cjs/router/liquidity-providers/UniswapV3.js.map +0 -1
  133. package/dist/_cjs/router/liquidity-providers/UniswapV3Base.js +0 -281
  134. package/dist/_cjs/router/liquidity-providers/UniswapV3Base.js.map +0 -1
  135. package/dist/_cjs/router/liquidity-providers/index.js +0 -27
  136. package/dist/_cjs/router/liquidity-providers/index.js.map +0 -1
  137. package/dist/_cjs/router/pool-codes/BentoBridge.js +0 -82
  138. package/dist/_cjs/router/pool-codes/BentoBridge.js.map +0 -1
  139. package/dist/_cjs/router/pool-codes/BentoPool.js +0 -47
  140. package/dist/_cjs/router/pool-codes/BentoPool.js.map +0 -1
  141. package/dist/_cjs/router/pool-codes/Bridge.js +0 -7
  142. package/dist/_cjs/router/pool-codes/Bridge.js.map +0 -1
  143. package/dist/_cjs/router/pool-codes/ConstantProductPool.js +0 -42
  144. package/dist/_cjs/router/pool-codes/ConstantProductPool.js.map +0 -1
  145. package/dist/_cjs/router/pool-codes/CurvePool.js +0 -43
  146. package/dist/_cjs/router/pool-codes/CurvePool.js.map +0 -1
  147. package/dist/_cjs/router/pool-codes/NativeWrapBridge.js +0 -50
  148. package/dist/_cjs/router/pool-codes/NativeWrapBridge.js.map +0 -1
  149. package/dist/_cjs/router/pool-codes/PoolCode.js +0 -35
  150. package/dist/_cjs/router/pool-codes/PoolCode.js.map +0 -1
  151. package/dist/_cjs/router/pool-codes/TridentCLPool.js +0 -27
  152. package/dist/_cjs/router/pool-codes/TridentCLPool.js.map +0 -1
  153. package/dist/_cjs/router/pool-codes/UniV3Pool.js +0 -27
  154. package/dist/_cjs/router/pool-codes/UniV3Pool.js.map +0 -1
  155. package/dist/_cjs/router/pool-codes/UniV4Pool.js +0 -40
  156. package/dist/_cjs/router/pool-codes/UniV4Pool.js.map +0 -1
  157. package/dist/_cjs/router/pool-codes/index.js +0 -22
  158. package/dist/_cjs/router/pool-codes/index.js.map +0 -1
  159. package/dist/_cjs/router/router.js +0 -352
  160. package/dist/_cjs/router/router.js.map +0 -1
  161. package/dist/_cjs/router/routingBases.js +0 -55
  162. package/dist/_cjs/router/routingBases.js.map +0 -1
  163. package/dist/_cjs/router/tines-to-route-processor-2.js +0 -187
  164. package/dist/_cjs/router/tines-to-route-processor-2.js.map +0 -1
  165. package/dist/_cjs/router/tines-to-route-processor-4.js +0 -69
  166. package/dist/_cjs/router/tines-to-route-processor-4.js.map +0 -1
  167. package/dist/_cjs/router/tines-to-route-processor-6.js +0 -17
  168. package/dist/_cjs/router/tines-to-route-processor-6.js.map +0 -1
  169. package/dist/_cjs/router/tines-to-route-processor.js +0 -192
  170. package/dist/_cjs/router/tines-to-route-processor.js.map +0 -1
  171. package/dist/_cjs/serializer/AddressValidation.js.map +0 -1
  172. package/dist/_cjs/serializer/BinarySerialization.js +0 -256
  173. package/dist/_cjs/serializer/BinarySerialization.js.map +0 -1
  174. package/dist/_cjs/serializer/index.js +0 -18
  175. package/dist/_cjs/serializer/index.js.map +0 -1
  176. package/dist/_cjs/tines/BridgeBento.js +0 -116
  177. package/dist/_cjs/tines/BridgeBento.js.map +0 -1
  178. package/dist/_cjs/tines/BridgeBidirectionalUnlimited.js +0 -26
  179. package/dist/_cjs/tines/BridgeBidirectionalUnlimited.js.map +0 -1
  180. package/dist/_cjs/tines/BridgeStargateV04OneWay.js +0 -44
  181. package/dist/_cjs/tines/BridgeStargateV04OneWay.js.map +0 -1
  182. package/dist/_cjs/tines/CLPool.js +0 -248
  183. package/dist/_cjs/tines/CLPool.js.map +0 -1
  184. package/dist/_cjs/tines/CurveMultitokenPool.js +0 -238
  185. package/dist/_cjs/tines/CurveMultitokenPool.js.map +0 -1
  186. package/dist/_cjs/tines/CurveMultitokenPoolSingle.js +0 -195
  187. package/dist/_cjs/tines/CurveMultitokenPoolSingle.js.map +0 -1
  188. package/dist/_cjs/tines/CurvePool.js +0 -121
  189. package/dist/_cjs/tines/CurvePool.js.map +0 -1
  190. package/dist/_cjs/tines/Graph.js +0 -1187
  191. package/dist/_cjs/tines/Graph.js.map +0 -1
  192. package/dist/_cjs/tines/MultiRouter.js +0 -192
  193. package/dist/_cjs/tines/MultiRouter.js.map +0 -1
  194. package/dist/_cjs/tines/PrimaryPools.js +0 -147
  195. package/dist/_cjs/tines/PrimaryPools.js.map +0 -1
  196. package/dist/_cjs/tines/RPool.js +0 -77
  197. package/dist/_cjs/tines/RPool.js.map +0 -1
  198. package/dist/_cjs/tines/StableSwapPool.js +0 -222
  199. package/dist/_cjs/tines/StableSwapPool.js.map +0 -1
  200. package/dist/_cjs/tines/StarGateFeesV04.js +0 -113
  201. package/dist/_cjs/tines/StarGateFeesV04.js.map +0 -1
  202. package/dist/_cjs/tines/UniV3Pool.js +0 -291
  203. package/dist/_cjs/tines/UniV3Pool.js.map +0 -1
  204. package/dist/_cjs/tines/UniV4Pool.js +0 -28
  205. package/dist/_cjs/tines/UniV4Pool.js.map +0 -1
  206. package/dist/_cjs/tines/Utils.js +0 -113
  207. package/dist/_cjs/tines/Utils.js.map +0 -1
  208. package/dist/_cjs/tines/constants/hybrid.js +0 -5
  209. package/dist/_cjs/tines/constants/hybrid.js.map +0 -1
  210. package/dist/_cjs/tines/constants/index.js +0 -18
  211. package/dist/_cjs/tines/constants/index.js.map +0 -1
  212. package/dist/_cjs/tines/functions/computeHybridLiquidity.js +0 -25
  213. package/dist/_cjs/tines/functions/computeHybridLiquidity.js.map +0 -1
  214. package/dist/_cjs/tines/functions/convertTokenToBento.js +0 -13
  215. package/dist/_cjs/tines/functions/convertTokenToBento.js.map +0 -1
  216. package/dist/_cjs/tines/functions/getBentoChainId.js +0 -7
  217. package/dist/_cjs/tines/functions/getBentoChainId.js.map +0 -1
  218. package/dist/_cjs/tines/functions/index.js +0 -10
  219. package/dist/_cjs/tines/functions/index.js.map +0 -1
  220. package/dist/_cjs/tines/index.js +0 -34
  221. package/dist/_cjs/tines/index.js.map +0 -1
  222. package/dist/_esm/pricing/IncrementalPricer.js +0 -430
  223. package/dist/_esm/pricing/IncrementalPricer.js.map +0 -1
  224. package/dist/_esm/pricing/PoolTokenGraph.js +0 -56
  225. package/dist/_esm/pricing/PoolTokenGraph.js.map +0 -1
  226. package/dist/_esm/pricing/index.js +0 -2
  227. package/dist/_esm/pricing/index.js.map +0 -1
  228. package/dist/_esm/router/HEXer.js +0 -110
  229. package/dist/_esm/router/HEXer.js.map +0 -1
  230. package/dist/_esm/router/PoolBinarySerialization.js +0 -471
  231. package/dist/_esm/router/PoolBinarySerialization.js.map +0 -1
  232. package/dist/_esm/router/Sankey.AnyChart.js +0 -25
  233. package/dist/_esm/router/Sankey.AnyChart.js.map +0 -1
  234. package/dist/_esm/router/curve-sdk.js +0 -215
  235. package/dist/_esm/router/curve-sdk.js.map +0 -1
  236. package/dist/_esm/router/data-fetcher.js +0 -188
  237. package/dist/_esm/router/data-fetcher.js.map +0 -1
  238. package/dist/_esm/router/liquidity-providers/ApeSwap.js +0 -27
  239. package/dist/_esm/router/liquidity-providers/ApeSwap.js.map +0 -1
  240. package/dist/_esm/router/liquidity-providers/Biswap.js +0 -22
  241. package/dist/_esm/router/liquidity-providers/Biswap.js.map +0 -1
  242. package/dist/_esm/router/liquidity-providers/CurvePoolsWhitelist.js +0 -3980
  243. package/dist/_esm/router/liquidity-providers/CurvePoolsWhitelist.js.map +0 -1
  244. package/dist/_esm/router/liquidity-providers/CurveProvider.js +0 -473
  245. package/dist/_esm/router/liquidity-providers/CurveProvider.js.map +0 -1
  246. package/dist/_esm/router/liquidity-providers/CurveProviderWhitelist.js +0 -200
  247. package/dist/_esm/router/liquidity-providers/CurveProviderWhitelist.js.map +0 -1
  248. package/dist/_esm/router/liquidity-providers/Dfyn.js +0 -27
  249. package/dist/_esm/router/liquidity-providers/Dfyn.js.map +0 -1
  250. package/dist/_esm/router/liquidity-providers/DovishV3.js +0 -24
  251. package/dist/_esm/router/liquidity-providers/DovishV3.js.map +0 -1
  252. package/dist/_esm/router/liquidity-providers/Elk.js +0 -51
  253. package/dist/_esm/router/liquidity-providers/Elk.js.map +0 -1
  254. package/dist/_esm/router/liquidity-providers/HoneySwap.js +0 -21
  255. package/dist/_esm/router/liquidity-providers/HoneySwap.js.map +0 -1
  256. package/dist/_esm/router/liquidity-providers/JetSwap.js +0 -25
  257. package/dist/_esm/router/liquidity-providers/JetSwap.js.map +0 -1
  258. package/dist/_esm/router/liquidity-providers/LaserSwap.js +0 -22
  259. package/dist/_esm/router/liquidity-providers/LaserSwap.js.map +0 -1
  260. package/dist/_esm/router/liquidity-providers/LiquidityProvider.js +0 -106
  261. package/dist/_esm/router/liquidity-providers/LiquidityProvider.js.map +0 -1
  262. package/dist/_esm/router/liquidity-providers/NativeWrapProvider.js +0 -42
  263. package/dist/_esm/router/liquidity-providers/NativeWrapProvider.js.map +0 -1
  264. package/dist/_esm/router/liquidity-providers/NetSwap.js +0 -21
  265. package/dist/_esm/router/liquidity-providers/NetSwap.js.map +0 -1
  266. package/dist/_esm/router/liquidity-providers/PancakeSwap.js +0 -24
  267. package/dist/_esm/router/liquidity-providers/PancakeSwap.js.map +0 -1
  268. package/dist/_esm/router/liquidity-providers/QuickSwap.js +0 -21
  269. package/dist/_esm/router/liquidity-providers/QuickSwap.js.map +0 -1
  270. package/dist/_esm/router/liquidity-providers/SpookySwap.js +0 -21
  271. package/dist/_esm/router/liquidity-providers/SpookySwap.js.map +0 -1
  272. package/dist/_esm/router/liquidity-providers/SushiSwapV2.js +0 -17
  273. package/dist/_esm/router/liquidity-providers/SushiSwapV2.js.map +0 -1
  274. package/dist/_esm/router/liquidity-providers/SushiSwapV3.js +0 -102
  275. package/dist/_esm/router/liquidity-providers/SushiSwapV3.js.map +0 -1
  276. package/dist/_esm/router/liquidity-providers/TraderJoe.js +0 -21
  277. package/dist/_esm/router/liquidity-providers/TraderJoe.js.map +0 -1
  278. package/dist/_esm/router/liquidity-providers/UbeSwap.js +0 -21
  279. package/dist/_esm/router/liquidity-providers/UbeSwap.js.map +0 -1
  280. package/dist/_esm/router/liquidity-providers/UniswapV2.js +0 -21
  281. package/dist/_esm/router/liquidity-providers/UniswapV2.js.map +0 -1
  282. package/dist/_esm/router/liquidity-providers/UniswapV2Base.js +0 -112
  283. package/dist/_esm/router/liquidity-providers/UniswapV2Base.js.map +0 -1
  284. package/dist/_esm/router/liquidity-providers/UniswapV3.js +0 -39
  285. package/dist/_esm/router/liquidity-providers/UniswapV3.js.map +0 -1
  286. package/dist/_esm/router/liquidity-providers/UniswapV3Base.js +0 -286
  287. package/dist/_esm/router/liquidity-providers/UniswapV3Base.js.map +0 -1
  288. package/dist/_esm/router/liquidity-providers/index.js +0 -9
  289. package/dist/_esm/router/liquidity-providers/index.js.map +0 -1
  290. package/dist/_esm/router/pool-codes/BentoBridge.js +0 -86
  291. package/dist/_esm/router/pool-codes/BentoBridge.js.map +0 -1
  292. package/dist/_esm/router/pool-codes/BentoPool.js +0 -48
  293. package/dist/_esm/router/pool-codes/BentoPool.js.map +0 -1
  294. package/dist/_esm/router/pool-codes/Bridge.js +0 -4
  295. package/dist/_esm/router/pool-codes/Bridge.js.map +0 -1
  296. package/dist/_esm/router/pool-codes/ConstantProductPool.js +0 -41
  297. package/dist/_esm/router/pool-codes/ConstantProductPool.js.map +0 -1
  298. package/dist/_esm/router/pool-codes/CurvePool.js +0 -41
  299. package/dist/_esm/router/pool-codes/CurvePool.js.map +0 -1
  300. package/dist/_esm/router/pool-codes/NativeWrapBridge.js +0 -52
  301. package/dist/_esm/router/pool-codes/NativeWrapBridge.js.map +0 -1
  302. package/dist/_esm/router/pool-codes/PoolCode.js +0 -36
  303. package/dist/_esm/router/pool-codes/PoolCode.js.map +0 -1
  304. package/dist/_esm/router/pool-codes/TridentCLPool.js +0 -25
  305. package/dist/_esm/router/pool-codes/TridentCLPool.js.map +0 -1
  306. package/dist/_esm/router/pool-codes/UniV3Pool.js +0 -25
  307. package/dist/_esm/router/pool-codes/UniV3Pool.js.map +0 -1
  308. package/dist/_esm/router/pool-codes/UniV4Pool.js +0 -37
  309. package/dist/_esm/router/pool-codes/UniV4Pool.js.map +0 -1
  310. package/dist/_esm/router/pool-codes/index.js +0 -10
  311. package/dist/_esm/router/pool-codes/index.js.map +0 -1
  312. package/dist/_esm/router/router.js +0 -351
  313. package/dist/_esm/router/router.js.map +0 -1
  314. package/dist/_esm/router/routingBases.js +0 -50
  315. package/dist/_esm/router/routingBases.js.map +0 -1
  316. package/dist/_esm/router/tines-to-route-processor-2.js +0 -189
  317. package/dist/_esm/router/tines-to-route-processor-2.js.map +0 -1
  318. package/dist/_esm/router/tines-to-route-processor-4.js +0 -75
  319. package/dist/_esm/router/tines-to-route-processor-4.js.map +0 -1
  320. package/dist/_esm/router/tines-to-route-processor-6.js +0 -14
  321. package/dist/_esm/router/tines-to-route-processor-6.js.map +0 -1
  322. package/dist/_esm/router/tines-to-route-processor.js +0 -200
  323. package/dist/_esm/router/tines-to-route-processor.js.map +0 -1
  324. package/dist/_esm/serializer/AddressValidation.js.map +0 -1
  325. package/dist/_esm/serializer/BinarySerialization.js +0 -270
  326. package/dist/_esm/serializer/BinarySerialization.js.map +0 -1
  327. package/dist/_esm/serializer/index.js +0 -2
  328. package/dist/_esm/serializer/index.js.map +0 -1
  329. package/dist/_esm/tines/BridgeBento.js +0 -116
  330. package/dist/_esm/tines/BridgeBento.js.map +0 -1
  331. package/dist/_esm/tines/BridgeBidirectionalUnlimited.js +0 -22
  332. package/dist/_esm/tines/BridgeBidirectionalUnlimited.js.map +0 -1
  333. package/dist/_esm/tines/BridgeStargateV04OneWay.js +0 -43
  334. package/dist/_esm/tines/BridgeStargateV04OneWay.js.map +0 -1
  335. package/dist/_esm/tines/CLPool.js +0 -265
  336. package/dist/_esm/tines/CLPool.js.map +0 -1
  337. package/dist/_esm/tines/CurveMultitokenPool.js +0 -268
  338. package/dist/_esm/tines/CurveMultitokenPool.js.map +0 -1
  339. package/dist/_esm/tines/CurveMultitokenPoolSingle.js +0 -194
  340. package/dist/_esm/tines/CurveMultitokenPoolSingle.js.map +0 -1
  341. package/dist/_esm/tines/CurvePool.js +0 -120
  342. package/dist/_esm/tines/CurvePool.js.map +0 -1
  343. package/dist/_esm/tines/Graph.js +0 -1324
  344. package/dist/_esm/tines/Graph.js.map +0 -1
  345. package/dist/_esm/tines/MultiRouter.js +0 -191
  346. package/dist/_esm/tines/MultiRouter.js.map +0 -1
  347. package/dist/_esm/tines/PrimaryPools.js +0 -166
  348. package/dist/_esm/tines/PrimaryPools.js.map +0 -1
  349. package/dist/_esm/tines/RPool.js +0 -80
  350. package/dist/_esm/tines/RPool.js.map +0 -1
  351. package/dist/_esm/tines/StableSwapPool.js +0 -221
  352. package/dist/_esm/tines/StableSwapPool.js.map +0 -1
  353. package/dist/_esm/tines/StarGateFeesV04.js +0 -135
  354. package/dist/_esm/tines/StarGateFeesV04.js.map +0 -1
  355. package/dist/_esm/tines/UniV3Pool.js +0 -325
  356. package/dist/_esm/tines/UniV3Pool.js.map +0 -1
  357. package/dist/_esm/tines/UniV4Pool.js +0 -40
  358. package/dist/_esm/tines/UniV4Pool.js.map +0 -1
  359. package/dist/_esm/tines/Utils.js +0 -108
  360. package/dist/_esm/tines/Utils.js.map +0 -1
  361. package/dist/_esm/tines/constants/hybrid.js +0 -2
  362. package/dist/_esm/tines/constants/hybrid.js.map +0 -1
  363. package/dist/_esm/tines/constants/index.js +0 -2
  364. package/dist/_esm/tines/constants/index.js.map +0 -1
  365. package/dist/_esm/tines/functions/computeHybridLiquidity.js +0 -22
  366. package/dist/_esm/tines/functions/computeHybridLiquidity.js.map +0 -1
  367. package/dist/_esm/tines/functions/convertTokenToBento.js +0 -11
  368. package/dist/_esm/tines/functions/convertTokenToBento.js.map +0 -1
  369. package/dist/_esm/tines/functions/getBentoChainId.js +0 -4
  370. package/dist/_esm/tines/functions/getBentoChainId.js.map +0 -1
  371. package/dist/_esm/tines/functions/index.js +0 -4
  372. package/dist/_esm/tines/functions/index.js.map +0 -1
  373. package/dist/_esm/tines/index.js +0 -18
  374. package/dist/_esm/tines/index.js.map +0 -1
  375. package/dist/_types/pricing/IncrementalPricer.d.ts +0 -48
  376. package/dist/_types/pricing/IncrementalPricer.d.ts.map +0 -1
  377. package/dist/_types/pricing/PoolTokenGraph.d.ts +0 -22
  378. package/dist/_types/pricing/PoolTokenGraph.d.ts.map +0 -1
  379. package/dist/_types/pricing/index.d.ts +0 -2
  380. package/dist/_types/pricing/index.d.ts.map +0 -1
  381. package/dist/_types/router/HEXer.d.ts +0 -20
  382. package/dist/_types/router/HEXer.d.ts.map +0 -1
  383. package/dist/_types/router/PoolBinarySerialization.d.ts +0 -11
  384. package/dist/_types/router/PoolBinarySerialization.d.ts.map +0 -1
  385. package/dist/_types/router/Sankey.AnyChart.d.ts +0 -7
  386. package/dist/_types/router/Sankey.AnyChart.d.ts.map +0 -1
  387. package/dist/_types/router/curve-sdk.d.ts +0 -214
  388. package/dist/_types/router/curve-sdk.d.ts.map +0 -1
  389. package/dist/_types/router/data-fetcher.d.ts +0 -24
  390. package/dist/_types/router/data-fetcher.d.ts.map +0 -1
  391. package/dist/_types/router/liquidity-providers/ApeSwap.d.ts +0 -10
  392. package/dist/_types/router/liquidity-providers/ApeSwap.d.ts.map +0 -1
  393. package/dist/_types/router/liquidity-providers/Biswap.d.ts +0 -11
  394. package/dist/_types/router/liquidity-providers/Biswap.d.ts.map +0 -1
  395. package/dist/_types/router/liquidity-providers/CurvePoolsWhitelist.d.ts +0 -12
  396. package/dist/_types/router/liquidity-providers/CurvePoolsWhitelist.d.ts.map +0 -1
  397. package/dist/_types/router/liquidity-providers/CurveProvider.d.ts +0 -41
  398. package/dist/_types/router/liquidity-providers/CurveProvider.d.ts.map +0 -1
  399. package/dist/_types/router/liquidity-providers/CurveProviderWhitelist.d.ts +0 -40
  400. package/dist/_types/router/liquidity-providers/CurveProviderWhitelist.d.ts.map +0 -1
  401. package/dist/_types/router/liquidity-providers/Dfyn.d.ts +0 -10
  402. package/dist/_types/router/liquidity-providers/Dfyn.d.ts.map +0 -1
  403. package/dist/_types/router/liquidity-providers/DovishV3.d.ts +0 -10
  404. package/dist/_types/router/liquidity-providers/DovishV3.d.ts.map +0 -1
  405. package/dist/_types/router/liquidity-providers/Elk.d.ts +0 -10
  406. package/dist/_types/router/liquidity-providers/Elk.d.ts.map +0 -1
  407. package/dist/_types/router/liquidity-providers/HoneySwap.d.ts +0 -10
  408. package/dist/_types/router/liquidity-providers/HoneySwap.d.ts.map +0 -1
  409. package/dist/_types/router/liquidity-providers/JetSwap.d.ts +0 -10
  410. package/dist/_types/router/liquidity-providers/JetSwap.d.ts.map +0 -1
  411. package/dist/_types/router/liquidity-providers/LaserSwap.d.ts +0 -11
  412. package/dist/_types/router/liquidity-providers/LaserSwap.d.ts.map +0 -1
  413. package/dist/_types/router/liquidity-providers/LiquidityProvider.d.ts +0 -123
  414. package/dist/_types/router/liquidity-providers/LiquidityProvider.d.ts.map +0 -1
  415. package/dist/_types/router/liquidity-providers/NativeWrapProvider.d.ts +0 -15
  416. package/dist/_types/router/liquidity-providers/NativeWrapProvider.d.ts.map +0 -1
  417. package/dist/_types/router/liquidity-providers/NetSwap.d.ts +0 -10
  418. package/dist/_types/router/liquidity-providers/NetSwap.d.ts.map +0 -1
  419. package/dist/_types/router/liquidity-providers/PancakeSwap.d.ts +0 -11
  420. package/dist/_types/router/liquidity-providers/PancakeSwap.d.ts.map +0 -1
  421. package/dist/_types/router/liquidity-providers/QuickSwap.d.ts +0 -10
  422. package/dist/_types/router/liquidity-providers/QuickSwap.d.ts.map +0 -1
  423. package/dist/_types/router/liquidity-providers/SpookySwap.d.ts +0 -10
  424. package/dist/_types/router/liquidity-providers/SpookySwap.d.ts.map +0 -1
  425. package/dist/_types/router/liquidity-providers/SushiSwapV2.d.ts +0 -10
  426. package/dist/_types/router/liquidity-providers/SushiSwapV2.d.ts.map +0 -1
  427. package/dist/_types/router/liquidity-providers/SushiSwapV3.d.ts +0 -10
  428. package/dist/_types/router/liquidity-providers/SushiSwapV3.d.ts.map +0 -1
  429. package/dist/_types/router/liquidity-providers/TraderJoe.d.ts +0 -10
  430. package/dist/_types/router/liquidity-providers/TraderJoe.d.ts.map +0 -1
  431. package/dist/_types/router/liquidity-providers/UbeSwap.d.ts +0 -10
  432. package/dist/_types/router/liquidity-providers/UbeSwap.d.ts.map +0 -1
  433. package/dist/_types/router/liquidity-providers/UniswapV2.d.ts +0 -10
  434. package/dist/_types/router/liquidity-providers/UniswapV2.d.ts.map +0 -1
  435. package/dist/_types/router/liquidity-providers/UniswapV2Base.d.ts +0 -29
  436. package/dist/_types/router/liquidity-providers/UniswapV2Base.d.ts.map +0 -1
  437. package/dist/_types/router/liquidity-providers/UniswapV3.d.ts +0 -10
  438. package/dist/_types/router/liquidity-providers/UniswapV3.d.ts.map +0 -1
  439. package/dist/_types/router/liquidity-providers/UniswapV3Base.d.ts +0 -32
  440. package/dist/_types/router/liquidity-providers/UniswapV3Base.d.ts.map +0 -1
  441. package/dist/_types/router/liquidity-providers/index.d.ts +0 -9
  442. package/dist/_types/router/liquidity-providers/index.d.ts.map +0 -1
  443. package/dist/_types/router/pool-codes/BentoBridge.d.ts +0 -11
  444. package/dist/_types/router/pool-codes/BentoBridge.d.ts.map +0 -1
  445. package/dist/_types/router/pool-codes/BentoPool.d.ts +0 -9
  446. package/dist/_types/router/pool-codes/BentoPool.d.ts.map +0 -1
  447. package/dist/_types/router/pool-codes/Bridge.d.ts +0 -5
  448. package/dist/_types/router/pool-codes/Bridge.d.ts.map +0 -1
  449. package/dist/_types/router/pool-codes/ConstantProductPool.d.ts +0 -10
  450. package/dist/_types/router/pool-codes/ConstantProductPool.d.ts.map +0 -1
  451. package/dist/_types/router/pool-codes/CurvePool.d.ts +0 -13
  452. package/dist/_types/router/pool-codes/CurvePool.d.ts.map +0 -1
  453. package/dist/_types/router/pool-codes/NativeWrapBridge.d.ts +0 -10
  454. package/dist/_types/router/pool-codes/NativeWrapBridge.d.ts.map +0 -1
  455. package/dist/_types/router/pool-codes/PoolCode.d.ts +0 -24
  456. package/dist/_types/router/pool-codes/PoolCode.d.ts.map +0 -1
  457. package/dist/_types/router/pool-codes/TridentCLPool.d.ts +0 -10
  458. package/dist/_types/router/pool-codes/TridentCLPool.d.ts.map +0 -1
  459. package/dist/_types/router/pool-codes/UniV3Pool.d.ts +0 -10
  460. package/dist/_types/router/pool-codes/UniV3Pool.d.ts.map +0 -1
  461. package/dist/_types/router/pool-codes/UniV4Pool.d.ts +0 -13
  462. package/dist/_types/router/pool-codes/UniV4Pool.d.ts.map +0 -1
  463. package/dist/_types/router/pool-codes/index.d.ts +0 -10
  464. package/dist/_types/router/pool-codes/index.d.ts.map +0 -1
  465. package/dist/_types/router/router.d.ts +0 -68
  466. package/dist/_types/router/router.d.ts.map +0 -1
  467. package/dist/_types/router/routingBases.d.ts +0 -8
  468. package/dist/_types/router/routingBases.d.ts.map +0 -1
  469. package/dist/_types/router/tines-to-route-processor-2.d.ts +0 -41
  470. package/dist/_types/router/tines-to-route-processor-2.d.ts.map +0 -1
  471. package/dist/_types/router/tines-to-route-processor-4.d.ts +0 -12
  472. package/dist/_types/router/tines-to-route-processor-4.d.ts.map +0 -1
  473. package/dist/_types/router/tines-to-route-processor-6.d.ts +0 -5
  474. package/dist/_types/router/tines-to-route-processor-6.d.ts.map +0 -1
  475. package/dist/_types/router/tines-to-route-processor.d.ts +0 -21
  476. package/dist/_types/router/tines-to-route-processor.d.ts.map +0 -1
  477. package/dist/_types/serializer/AddressValidation.d.ts.map +0 -1
  478. package/dist/_types/serializer/BinarySerialization.d.ts +0 -43
  479. package/dist/_types/serializer/BinarySerialization.d.ts.map +0 -1
  480. package/dist/_types/serializer/index.d.ts +0 -2
  481. package/dist/_types/serializer/index.d.ts.map +0 -1
  482. package/dist/_types/tines/BridgeBento.d.ts +0 -21
  483. package/dist/_types/tines/BridgeBento.d.ts.map +0 -1
  484. package/dist/_types/tines/BridgeBidirectionalUnlimited.d.ts +0 -16
  485. package/dist/_types/tines/BridgeBidirectionalUnlimited.d.ts.map +0 -1
  486. package/dist/_types/tines/BridgeStargateV04OneWay.d.ts +0 -23
  487. package/dist/_types/tines/BridgeStargateV04OneWay.d.ts.map +0 -1
  488. package/dist/_types/tines/CLPool.d.ts +0 -27
  489. package/dist/_types/tines/CLPool.d.ts.map +0 -1
  490. package/dist/_types/tines/CurveMultitokenPool.d.ts +0 -58
  491. package/dist/_types/tines/CurveMultitokenPool.d.ts.map +0 -1
  492. package/dist/_types/tines/CurveMultitokenPoolSingle.d.ts +0 -54
  493. package/dist/_types/tines/CurveMultitokenPoolSingle.d.ts.map +0 -1
  494. package/dist/_types/tines/CurvePool.d.ts +0 -28
  495. package/dist/_types/tines/CurvePool.d.ts.map +0 -1
  496. package/dist/_types/tines/Graph.d.ts +0 -135
  497. package/dist/_types/tines/Graph.d.ts.map +0 -1
  498. package/dist/_types/tines/MultiRouter.d.ts +0 -11
  499. package/dist/_types/tines/MultiRouter.d.ts.map +0 -1
  500. package/dist/_types/tines/PrimaryPools.d.ts +0 -44
  501. package/dist/_types/tines/PrimaryPools.d.ts.map +0 -1
  502. package/dist/_types/tines/RPool.d.ts +0 -54
  503. package/dist/_types/tines/RPool.d.ts.map +0 -1
  504. package/dist/_types/tines/StableSwapPool.d.ts +0 -50
  505. package/dist/_types/tines/StableSwapPool.d.ts.map +0 -1
  506. package/dist/_types/tines/StarGateFeesV04.d.ts +0 -16
  507. package/dist/_types/tines/StarGateFeesV04.d.ts.map +0 -1
  508. package/dist/_types/tines/UniV3Pool.d.ts +0 -25
  509. package/dist/_types/tines/UniV3Pool.d.ts.map +0 -1
  510. package/dist/_types/tines/UniV4Pool.d.ts +0 -13
  511. package/dist/_types/tines/UniV4Pool.d.ts.map +0 -1
  512. package/dist/_types/tines/Utils.d.ts +0 -9
  513. package/dist/_types/tines/Utils.d.ts.map +0 -1
  514. package/dist/_types/tines/constants/hybrid.d.ts +0 -2
  515. package/dist/_types/tines/constants/hybrid.d.ts.map +0 -1
  516. package/dist/_types/tines/constants/index.d.ts +0 -2
  517. package/dist/_types/tines/constants/index.d.ts.map +0 -1
  518. package/dist/_types/tines/functions/computeHybridLiquidity.d.ts +0 -2
  519. package/dist/_types/tines/functions/computeHybridLiquidity.d.ts.map +0 -1
  520. package/dist/_types/tines/functions/convertTokenToBento.d.ts +0 -4
  521. package/dist/_types/tines/functions/convertTokenToBento.d.ts.map +0 -1
  522. package/dist/_types/tines/functions/getBentoChainId.d.ts +0 -2
  523. package/dist/_types/tines/functions/getBentoChainId.d.ts.map +0 -1
  524. package/dist/_types/tines/functions/index.d.ts +0 -4
  525. package/dist/_types/tines/functions/index.d.ts.map +0 -1
  526. package/dist/_types/tines/index.d.ts +0 -18
  527. package/dist/_types/tines/index.d.ts.map +0 -1
@@ -1,430 +0,0 @@
1
- import { Token } from '../currency/token.js';
2
- import { RPool, calcTokenAddressPrices } from '../tines/index.js';
3
- import { PoolEdge, TokenVert, makePoolTokenGraph } from './PoolTokenGraph.js';
4
- // for debugging
5
- const DEBUG_COMPARE_FULL_RECALC_WITH_TINES_PRICES = false;
6
- const DEBUG_PARTIAL_UPDATE_AFTER_FULL_RECALC_CHECK = 0; // 0% pools for update - no check
7
- const DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES = false;
8
- const FULL_RECALC_INTERVAL = 6 * 3600 * 1000;
9
- const MIN_PRICABLE_LIQUIDITY = 0.8;
10
- const MIN_VALUABLE_PRICE_CHANGE = 1.001; // don't recalc prices if change is lesser than 0.1%
11
- function makePricesRecalcForPool(oldPoolPrice, newPoolPrice, sensability = MIN_VALUABLE_PRICE_CHANGE) {
12
- if (oldPoolPrice === 0)
13
- return newPoolPrice !== 0;
14
- const diff = newPoolPrice / oldPoolPrice;
15
- return diff > sensability || diff < 1 / sensability;
16
- }
17
- class TokenInfo {
18
- constructor(token, direction, poolPrice, parent, poolAddress, poolLiquidity) {
19
- this.children = [];
20
- this.totalSuccessors = 0;
21
- this.token = token;
22
- this.address = token.address;
23
- this.decExp = 10 ** token.decimals;
24
- this.direction = direction;
25
- this.poolPrice = poolPrice;
26
- this.parent = parent;
27
- if (parent)
28
- parent.children.push(this);
29
- this.poolAddress = poolAddress;
30
- this.poolLiquidity = poolLiquidity;
31
- }
32
- }
33
- // Calculates prices. 2 modes: full recalculate and incremental recalculating having only changed pools
34
- export class IncrementalPricer {
35
- constructor(baseTokens, // also are trusted
36
- prices, trustedTokens, minLiquidity) {
37
- this.poolTokenMap = new Map(); // pool.uniqueID() => TokenInfo
38
- this.tokenMap = new Map(); // token.address => TokenInfo
39
- this.prices = {}; // calculated prices token.address => <token price>
40
- this.pricesSize = 0; // the number of calculated prices
41
- this.lastfullPricesRecalcDate = 0;
42
- this.fullPricesRecalcFlag = false;
43
- this.baseTokens = new Array(baseTokens.length);
44
- this.baseTokenPrices = prices.slice();
45
- baseTokens.forEach((t, i) => {
46
- this.baseTokens[i] = new TokenInfo(t, true, 1);
47
- });
48
- this.trustedTokenSet = new Set();
49
- const trustedTokenMap = new Map();
50
- trustedTokens.forEach((t) => {
51
- this.trustedTokenSet.add(t.address);
52
- trustedTokenMap.set(t.address, t);
53
- });
54
- baseTokens.forEach((t) => {
55
- this.trustedTokenSet.add(t.address);
56
- trustedTokenMap.set(t.address, t);
57
- });
58
- this.trustedTokensForTinesCheck = Array.from(trustedTokenMap.values());
59
- this.minLiquidity = minLiquidity;
60
- }
61
- updatePrices(updatedPools, allPoolsOnDemand, logging = false) {
62
- if (this.isFullPricesRecalcNeeded())
63
- return this._fullPricesRecalculation(allPoolsOnDemand(), logging);
64
- else {
65
- const res = this._updatePricesForPools(updatedPools, DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES ? 0.9 : undefined);
66
- if (DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES) {
67
- const baseToken = this.baseTokens.find((b) => this.prices[b.address] === 1);
68
- checkNotEqual(baseToken, undefined, 'Prices partial upd error: no basetoken found');
69
- const tinesPrices = calcTokenAddressPrices(allPoolsOnDemand(), baseToken.token, this.minLiquidity * baseToken.decExp, this.trustedTokensForTinesCheck);
70
- comparePrices('Prices partial upd', this.prices, this.pricesSize, tinesPrices);
71
- // const common = compareCommonPrices(
72
- // 'Prices partial upd',
73
- // this.prices,
74
- // tinesPrices,
75
- // )
76
- // checkEqual(
77
- // Object.keys(tinesPrices).length,
78
- // common,
79
- // 'Prices partial upd num',
80
- // )
81
- }
82
- return res;
83
- }
84
- }
85
- reasoning(token) {
86
- let ti = this.tokenMap.get(token);
87
- if (ti === undefined)
88
- return ['Token is not priced'];
89
- const lines = [];
90
- while (ti !== undefined) {
91
- const parentDecExp = ti.parent?.decExp ?? ti.decExp;
92
- lines.push(`Token ${ti.token.symbol} (${ti.address}) price is ${this.prices[ti.address]}$`);
93
- if (ti.poolAddress !== undefined) {
94
- lines.push(`Pool ${ti.poolAddress} liquidity ${Math.round(ti.poolLiquidity ?? 0)}$ price ${(ti.poolPrice / parentDecExp) * ti.decExp}`);
95
- }
96
- ti = ti.parent;
97
- }
98
- return lines.reverse();
99
- }
100
- isFullPricesRecalcNeeded() {
101
- return (this.fullPricesRecalcFlag ||
102
- Date.now() - this.lastfullPricesRecalcDate > FULL_RECALC_INTERVAL);
103
- }
104
- _fullPricesRecalculation(pools, logging = false) {
105
- this.poolTokenMap.clear();
106
- this.tokenMap.clear();
107
- this.prices = {};
108
- this.pricesSize = 0;
109
- const baseVerts = makePoolTokenGraph(pools, this.baseTokens.map((t) => t.address));
110
- const sortedBaseVerts = this._sortBaseVerts(baseVerts);
111
- sortedBaseVerts.forEach(([baseVert, baseIndex], i) => {
112
- if (this.prices[baseVert.address] !== undefined)
113
- return; // the token is already priced
114
- const baseToken = this.baseTokens[baseIndex];
115
- const baseTokenPrice = this.baseTokenPrices[baseIndex];
116
- const nextEdges = [];
117
- if (logging)
118
- console.log(`Pricing: Initial token ${baseVert.token.symbol} price=${baseTokenPrice}`);
119
- baseVert.obj = baseToken;
120
- this._addVertice(nextEdges, baseVert, baseTokenPrice / baseVert.decExp);
121
- while (nextEdges.length > 0) {
122
- const bestEdge = nextEdges.pop();
123
- let vFrom = bestEdge.token0;
124
- let vTo = bestEdge.token1;
125
- let direction = true;
126
- if (vTo.price !== undefined) {
127
- if (vFrom.price !== undefined)
128
- continue; // token already priced
129
- const tmp = vFrom;
130
- vFrom = vTo;
131
- vTo = tmp;
132
- direction = false;
133
- }
134
- const p = bestEdge.pool.calcCurrentPriceWithoutFee(!direction);
135
- if (logging)
136
- console.log(`Pricing: + Token ${vTo.token.symbol} price=${p * vTo.decExp * vFrom.price}` +
137
- ` from ${vFrom.token.symbol} pool=${bestEdge.pool.address} liquidity=${bestEdge.poolLiquidity}`);
138
- vTo.obj = new TokenInfo(vTo.token, direction, p, vFrom.obj, bestEdge.pool.address, bestEdge.poolLiquidity);
139
- this.poolTokenMap.set(bestEdge.pool.uniqueID(), vTo.obj);
140
- this._addVertice(nextEdges, vTo, p * vFrom.price);
141
- // console.log(
142
- // `Pool create ${bestEdge.pool.address} token ${vTo.address} price=${
143
- // p * (vFrom.price as number) * vTo.decExp
144
- // } liquidity=${bestEdge.poolLiquidity}`,
145
- // )
146
- }
147
- this._updateTotalSuccessor(baseToken);
148
- this.lastfullPricesRecalcDate = Date.now();
149
- this.fullPricesRecalcFlag = false;
150
- if (DEBUG_COMPARE_FULL_RECALC_WITH_TINES_PRICES && i === 0) {
151
- const tinesPrices = calcTokenAddressPrices(pools, baseToken.token, this.minLiquidity * baseToken.decExp, this.trustedTokensForTinesCheck);
152
- comparePrices('Prices full recalc', this.prices, this.pricesSize, tinesPrices);
153
- }
154
- });
155
- if (DEBUG_PARTIAL_UPDATE_AFTER_FULL_RECALC_CHECK) {
156
- const pricesBefore = { ...this.prices };
157
- const pricesSizeBefore = this.pricesSize;
158
- const pn = Math.round((pools.length * DEBUG_PARTIAL_UPDATE_AFTER_FULL_RECALC_CHECK) / 100);
159
- const newPools = pools.slice(0, pn);
160
- const updatePrices = this._updatePricesForPools(newPools, 0.9); // sensability <1 means update prices for all pools
161
- checkNotEqual(updatePrices, 0, 'Prices upd check error');
162
- checkEqual(pricesSizeBefore, this.pricesSize);
163
- comparePrices('Prices upd', pricesBefore, pricesSizeBefore, this.prices);
164
- this.prices = pricesBefore;
165
- this.pricesSize = pricesSizeBefore;
166
- }
167
- return this.pricesSize;
168
- }
169
- // sorts baseVerts: the best the first
170
- _sortBaseVerts(baseVerts) {
171
- const tmp = baseVerts
172
- .map((b, i) => {
173
- if (b === undefined)
174
- return;
175
- const price = this.baseTokenPrices[i];
176
- const reserve = b.pools.reduce((a, p) => a + price * Number(p.reserve(b)), 0);
177
- const decExp = this.baseTokens[i]?.decExp;
178
- return [(reserve * price) / decExp, [b, i]];
179
- })
180
- .filter((p) => p !== undefined);
181
- return tmp.sort((a, b) => b[0] - a[0]).map((a) => a[1]);
182
- }
183
- _updateTotalSuccessor(token) {
184
- let count = 0;
185
- for (let i = token.children.length - 1; i >= 0; --i)
186
- count += this._updateTotalSuccessor(token.children[i]);
187
- token.totalSuccessors = count;
188
- return count + 1;
189
- }
190
- _addVertice(nextEdges, v, price) {
191
- v.price = price;
192
- this.tokenMap.set(v.address, v.obj);
193
- this.prices[v.address] = price * v.decExp;
194
- ++this.pricesSize;
195
- // if (nextEdges.length === 0) {
196
- // // optimization ???
197
- // nextEdges = v.pools
198
- // .filter((edge) => {
199
- // if (v.getNeibour(edge).price !== undefined) return false // token already priced
200
- // const liquidity = price * Number(edge.reserve(v))
201
- // edge.poolLiquidity = liquidity
202
- // return (
203
- // liquidity >= this.minLiquidity ||
204
- // edge.pool.alwaysAppropriateForPricing()
205
- // )
206
- // })
207
- // .sort((a, b) => a.poolLiquidity - b.poolLiquidity)
208
- // }
209
- if (!this.trustedTokenSet.has(v.address))
210
- return; // don't add tokens through untrusted tokens
211
- for (let i = v.pools.length - 1; i >= 0; --i) {
212
- const edge = v.pools[i];
213
- if (v.getNeibour(edge).price !== undefined)
214
- continue; // token already priced
215
- const liquidity = price * Number(edge.reserve(v));
216
- edge.poolLiquidity = liquidity;
217
- if (edge.pool.alwaysAppropriateForPricing() ||
218
- (liquidity >= this.minLiquidity &&
219
- edge.pool.isPoolAppropriateForPricing())) {
220
- let low = 0;
221
- let up = nextEdges.length;
222
- while (low < up) {
223
- const middle = (low + up) >> 1;
224
- const diff = nextEdges[middle]?.poolLiquidity - liquidity;
225
- if (diff > 0)
226
- up = middle;
227
- else if (diff < 0)
228
- low = middle + 1;
229
- else {
230
- low = middle;
231
- break;
232
- }
233
- }
234
- nextEdges.splice(low, 0, edge);
235
- }
236
- }
237
- }
238
- _updatePricesForPools(pools, sensability = MIN_VALUABLE_PRICE_CHANGE) {
239
- // Auxiliary
240
- const tokens = new Array(pools.length);
241
- let changedPrices = 0;
242
- // set changedPoolIndex for all tokens with changed price + create new priced tokens
243
- for (let i = pools.length - 1; i >= 0; --i) {
244
- const pool = pools[i];
245
- tokens[i] = undefined; // not price-making pool or duplicated pool
246
- const token = this.poolTokenMap.get(pool.uniqueID());
247
- if (token) {
248
- if (!this._isPoolStillPricable(pool, token)) {
249
- if (token.totalSuccessors === 0) {
250
- this._deleteChildlessToken(pool, token);
251
- continue;
252
- }
253
- this.fullPricesRecalcFlag = true;
254
- }
255
- if (token.changedPoolIndex === undefined) {
256
- const newPoolPrice = pool.calcCurrentPriceWithoutFee(!token.direction);
257
- if (makePricesRecalcForPool(token.poolPrice, newPoolPrice, sensability)) {
258
- tokens[i] = token;
259
- token.changedPoolIndex = i;
260
- // console.log(
261
- // `Pool update ${
262
- // pool.address
263
- // } price=${newPoolPrice} r0=${pool.getReserve0()} r1=${pool.getReserve1()}`,
264
- // )
265
- }
266
- }
267
- }
268
- else if (this._checkAndAddNewToken(pool) !== undefined) {
269
- // maybe create new priced token
270
- ++changedPrices;
271
- }
272
- }
273
- for (let i = pools.length - 1; i >= 0; --i) {
274
- if (tokens[i] === undefined)
275
- continue; // just for optimization
276
- // finding firstChangedToken
277
- let firstChangedToken = undefined;
278
- for (let token = tokens[i]; token !== undefined; token = token.parent) {
279
- if (token?.changedPoolIndex !== undefined)
280
- firstChangedToken = token;
281
- }
282
- // update price for firstChangedToken and all dependent tokens
283
- if (firstChangedToken) {
284
- this._updatePricesForToken(firstChangedToken, 1, pools, tokens);
285
- changedPrices += firstChangedToken.totalSuccessors + 1;
286
- }
287
- }
288
- return changedPrices;
289
- }
290
- // recursive function for token and subtokens prices updating
291
- _updatePricesForToken(token, priceMultiplicator, pools, tokens) {
292
- const poolIndex = token.changedPoolIndex;
293
- if (poolIndex !== undefined) {
294
- // update priceMultiplicator and poolPrice
295
- const newPoolPrice = pools[poolIndex]?.calcCurrentPriceWithoutFee(!token.direction);
296
- priceMultiplicator = (priceMultiplicator / token.poolPrice) * newPoolPrice;
297
- tokens[poolIndex] = undefined;
298
- // @ts-ignore
299
- token.changedPoolIndex = undefined;
300
- token.poolPrice = newPoolPrice;
301
- }
302
- // update price
303
- this.prices[token.address] *= priceMultiplicator;
304
- for (let i = token.children.length - 1; i >= 0; --i)
305
- this._updatePricesForToken(token.children[i], priceMultiplicator, pools, tokens);
306
- }
307
- _isPoolStillPricable(pool, tokenInfo) {
308
- let token;
309
- let reserve;
310
- if (tokenInfo.direction) {
311
- token = pool.token0;
312
- reserve = Number(pool.getReserve0());
313
- }
314
- else {
315
- token = pool.token1;
316
- reserve = Number(pool.getReserve1());
317
- }
318
- const price = this.prices[token.address];
319
- const liquidity = (reserve * price) / 10 ** token.decimals;
320
- tokenInfo.poolLiquidity = liquidity;
321
- const minLiquidityK = DEBUG_COMPARE_PARTIAL_UPDATE_WITH_TINES_PRICES
322
- ? 1
323
- : MIN_PRICABLE_LIQUIDITY;
324
- if (liquidity < this.minLiquidity * minLiquidityK) {
325
- // console.log(
326
- // `Pool ${pool.address} is not pricable (price: ${
327
- // tokenInfo.poolPrice
328
- // } => ${pool.calcCurrentPriceWithoutFee(
329
- // !tokenInfo.direction,
330
- // )}), r0=${pool.getReserve0()}, r1=${pool.getReserve1()} ${liquidity}`,
331
- // )
332
- return false;
333
- }
334
- return true;
335
- }
336
- _checkAndAddNewToken(pool) {
337
- const price0 = this.prices[pool.token0.address];
338
- const price1 = this.prices[pool.token1.address];
339
- if (price1 === undefined) {
340
- if (price0 === undefined)
341
- return; // both tokens are unpriced
342
- if (!this.trustedTokenSet.has(pool.token0.address))
343
- return;
344
- const liquidity = (Number(pool.reserve0) * price0) / 10 ** pool.token0.decimals;
345
- if (liquidity < this.minLiquidity)
346
- return; // too low liquidity for pricing
347
- return this._addNewToken(pool, true, price0, liquidity);
348
- }
349
- else {
350
- if (price0 !== undefined)
351
- return; // both tokens are priced
352
- if (!this.trustedTokenSet.has(pool.token1.address))
353
- return;
354
- const liquidity = (Number(pool.reserve1) * price1) / 10 ** pool.token1.decimals;
355
- if (liquidity < this.minLiquidity)
356
- return; // too low liquidity for pricing
357
- return this._addNewToken(pool, false, price1, liquidity);
358
- }
359
- }
360
- _addNewToken(pool, direction, priceFrom, liquidity) {
361
- const [tokenFrom, tokenTo] = direction
362
- ? [pool.token0, pool.token1]
363
- : [pool.token1, pool.token0];
364
- const tokenFromInfo = this.tokenMap.get(tokenFrom.address);
365
- const poolPrice = pool.calcCurrentPriceWithoutFee(!direction);
366
- const tokenToInfo = new TokenInfo(tokenTo, direction, poolPrice, tokenFromInfo, pool.address, liquidity);
367
- this.poolTokenMap.set(pool.uniqueID(), tokenToInfo);
368
- this.tokenMap.set(tokenTo.address, tokenToInfo);
369
- this.prices[tokenTo.address] =
370
- (priceFrom / tokenFromInfo.decExp) * poolPrice * tokenToInfo.decExp;
371
- ++this.pricesSize;
372
- // console.log(
373
- // `Pool added ${
374
- // pool.address
375
- // } price=${poolPrice} r0=${pool.getReserve0()} r1=${pool.getReserve1()}`,
376
- // )
377
- return tokenToInfo;
378
- }
379
- _deleteChildlessToken(pool, token) {
380
- this.poolTokenMap.delete(pool.uniqueID());
381
- this.tokenMap.delete(token.address);
382
- delete this.prices[token.address];
383
- --this.pricesSize;
384
- const place = token.parent?.children.indexOf(token);
385
- if (place !== undefined && place >= 0)
386
- token.parent?.children.splice(place, 1);
387
- token.parent = undefined;
388
- }
389
- }
390
- function comparePrices(errMsg, prices0, prices0Length, prices1, precision = 1e-10) {
391
- const tokens0 = Object.keys(prices0);
392
- checkEqual(tokens0.length, prices0Length, errMsg, 'pricesSize is incorrect');
393
- tokens0.forEach((t) => {
394
- const price0 = prices0?.[t];
395
- const price1 = prices1?.[t];
396
- if (price1 === undefined ||
397
- (price0 === 0 && price1 !== 0) ||
398
- Math.abs(price1 / price0 - 1) > precision)
399
- console.error(`${errMsg}: token ${t} wrong prices: ${price0} != ${price1}`);
400
- });
401
- Object.keys(prices1).forEach((t) => {
402
- if (prices0[t] === undefined) {
403
- console.error(`${errMsg}: token ${t} wrong prices: ${prices0[t]} != ${prices1[t]}`);
404
- }
405
- });
406
- }
407
- export function compareCommonPrices(errMsg, prices0, prices1, precision = 1e-10) {
408
- const tokens0 = Object.keys(prices0);
409
- let quantity = 0;
410
- tokens0.forEach((t) => {
411
- if (prices1[t] === undefined)
412
- return;
413
- ++quantity;
414
- const price0 = prices0?.[t];
415
- const price1 = prices1?.[t];
416
- if ((price0 === 0 && price1 !== 0) ||
417
- Math.abs(price1 / price0 - 1) > precision)
418
- console.error(`${errMsg}: token ${t} wrong prices: ${price0} != ${price1}`);
419
- });
420
- return quantity;
421
- }
422
- function checkEqual(v0, v1, ...errMsg) {
423
- if (v0 !== v1)
424
- console.error(`${errMsg.join(': ')}: ${v0} != ${v1}`);
425
- }
426
- function checkNotEqual(v0, v1, ...errMsg) {
427
- if (v0 === v1)
428
- console.error(`${errMsg.join(': ')}: ${v0} != ${v1}`);
429
- }
430
- //# sourceMappingURL=IncrementalPricer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IncrementalPricer.js","sourceRoot":"","sources":["../../../src/pricing/IncrementalPricer.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- export class TokenVert {
2
- constructor(token) {
3
- this.pools = [];
4
- this.token = token;
5
- this.address = token.address;
6
- this.decExp = 10 ** token.decimals;
7
- }
8
- getNeibour(edge) {
9
- const token0 = edge.token0;
10
- return token0 === this ? edge.token1 : token0;
11
- }
12
- }
13
- export class PoolEdge {
14
- constructor(pool, token0, token1) {
15
- this.poolLiquidity = 0;
16
- this.pool = pool;
17
- this.token0 = token0;
18
- this.token1 = token1;
19
- }
20
- reserve(token) {
21
- return token === this.token0
22
- ? this.pool.getReserve0()
23
- : this.pool.getReserve1();
24
- }
25
- }
26
- export function makePoolTokenGraph(pools, baseTokens) {
27
- // const vertices: TokenVert = []
28
- // const edges: PoolEdge = []
29
- const tokens = new Map();
30
- const poolsDeduplication = new Set();
31
- pools.forEach((p) => {
32
- const poolId = p.address.toLowerCase();
33
- if (poolsDeduplication.has(poolId))
34
- return;
35
- poolsDeduplication.add(poolId);
36
- // TokenVert for p.token0 finding or creation
37
- const addr0 = p.token0.address;
38
- let v0 = tokens.get(addr0);
39
- if (v0 === undefined) {
40
- v0 = new TokenVert(p.token0);
41
- tokens.set(addr0, v0);
42
- }
43
- // TokenVert for p.token1 finding or creation
44
- const addr1 = p.token1.address;
45
- let v1 = tokens.get(addr1);
46
- if (v1 === undefined) {
47
- v1 = new TokenVert(p.token1);
48
- tokens.set(addr1, v1);
49
- }
50
- const edge = new PoolEdge(p, v0, v1);
51
- v0.pools.push(edge);
52
- v1.pools.push(edge);
53
- });
54
- return baseTokens.map((t) => tokens.get(t));
55
- }
56
- //# sourceMappingURL=PoolTokenGraph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PoolTokenGraph.js","sourceRoot":"","sources":["../../../src/pricing/PoolTokenGraph.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;IAQpB,YAAY,KAAa;QAJzB,UAAK,GAAe,EAAE,CAAA;QAKpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAkB,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAA;IACpC,CAAC;IAED,UAAU,CAAC,IAAc;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,QAAQ;IAMnB,YAAY,IAAW,EAAE,MAAiB,EAAE,MAAiB;QAF7D,kBAAa,GAAG,CAAC,CAAA;QAGf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,OAAO,KAAK,KAAK,IAAI,CAAC,MAAM;YAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,UAAqB;IAErB,iCAAiC;IACjC,6BAA6B;IAC7B,MAAM,MAAM,GAA4B,IAAI,GAAG,EAAE,CAAA;IACjD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC5C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAM;QAC1C,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE9B,6CAA6C;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAkB,CAAA;QACzC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACvB,CAAC;QAED,6CAA6C;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAkB,CAAA;QACzC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACvB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACpC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './IncrementalPricer.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pricing/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -1,110 +0,0 @@
1
- export class HEXer {
2
- constructor() {
3
- this.hex = '';
4
- }
5
- toString() {
6
- return this.hex;
7
- }
8
- toHexString() {
9
- return `0x${this.hex}`;
10
- }
11
- toString0x() {
12
- // for backwards compatibility for now
13
- return this.toHexString();
14
- }
15
- uint8(data) {
16
- if (data > 255 || data < 0 || data !== Math.round(data)) {
17
- throw new Error(`Wrong uint8: ${data}`);
18
- }
19
- this.hex += data.toString(16).padStart(2, '0');
20
- return this;
21
- }
22
- bool(data) {
23
- return this.uint8(data ? 1 : 0);
24
- }
25
- uint16(data) {
26
- if (data >= 256 * 256 || data < 0 || data !== Math.round(data)) {
27
- throw new Error(`Wrong uint16: ${data}`);
28
- }
29
- this.hex += data.toString(16).padStart(4, '0');
30
- return this;
31
- }
32
- uint24(data) {
33
- if (data >= 256 * 256 * 256 || data < 0 || data !== Math.round(data)) {
34
- throw new Error(`Wrong uint24: ${data}`);
35
- }
36
- this.hex += data.toString(16).padStart(6, '0');
37
- return this;
38
- }
39
- share16(share) {
40
- return this.uint16(Math.round(share * 65535));
41
- }
42
- uint32(data) {
43
- if (data >= 256 * 256 * 256 * 256 ||
44
- data < 0 ||
45
- data !== Math.round(data)) {
46
- throw new Error(`Wrong uint32: ${data}`);
47
- }
48
- this.hex += data.toString(16).padStart(8, '0');
49
- return this;
50
- }
51
- uint256(data) {
52
- if (typeof data === 'number') {
53
- if (data > Number.MAX_SAFE_INTEGER ||
54
- data < 0 ||
55
- data !== Math.round(data)) {
56
- throw new Error(`Wrong uint256: ${data}`);
57
- }
58
- this.hex += data.toString(16).padStart(64, '0');
59
- return this;
60
- }
61
- else {
62
- const hex = data.toString(16).padStart(64, '0');
63
- if (data < 0n || hex.length > 64) {
64
- throw new Error(`Wrong uin256: ${data.toString()}`);
65
- }
66
- this.hex += hex;
67
- return this;
68
- }
69
- }
70
- uint(data) {
71
- return this.uint256(data);
72
- }
73
- address(addr) {
74
- if (addr.length > 42 || addr === 'RouteProcessor') {
75
- throw new Error(`Wrong address: ${addr}`);
76
- }
77
- // 0xabcd => 0000abcd
78
- this.hex += addr.slice(2).padStart(40, '0');
79
- return this;
80
- }
81
- hexData(data) {
82
- if (data.length % 2 !== 0) {
83
- throw new Error(`Wrong hex data length: ${data.length}`);
84
- }
85
- if (data.startsWith('0x'))
86
- data = data.slice(2);
87
- this.hex += data;
88
- return this;
89
- }
90
- bytes(data) {
91
- if (data.length % 2 !== 0) {
92
- throw new Error(`Wrong bytes length: ${data.length}`);
93
- }
94
- if (data.startsWith('0x'))
95
- data = data.slice(2);
96
- this.uint(data.length / 2);
97
- this.hex += data;
98
- return this;
99
- }
100
- bytes32(data) {
101
- if (data.startsWith('0x'))
102
- data = data.slice(2);
103
- if (data.length > 64) {
104
- throw new Error(`Wrong bytes32 length: ${data.length}`);
105
- }
106
- this.hex += data.padEnd(64, '0');
107
- return this;
108
- }
109
- }
110
- //# sourceMappingURL=HEXer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HEXer.js","sourceRoot":"","sources":["../../../src/router/HEXer.ts"],"names":[],"mappings":"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"}