@clober/v2-sdk 0.0.11 → 0.0.12-8.dev.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 (347) hide show
  1. package/README.md +12 -4
  2. package/dist/cjs/abis/core/book-manager-abi.js +112 -0
  3. package/dist/cjs/abis/core/book-manager-abi.js.map +1 -0
  4. package/dist/cjs/abis/core/book-viewer-abi.js +137 -5
  5. package/dist/cjs/abis/core/book-viewer-abi.js.map +1 -1
  6. package/dist/cjs/abis/core/controller-abi.js +1 -6
  7. package/dist/cjs/abis/core/controller-abi.js.map +1 -1
  8. package/dist/cjs/abis/rebalancer/minter-abi.js +262 -0
  9. package/dist/cjs/abis/rebalancer/minter-abi.js.map +1 -0
  10. package/dist/cjs/abis/rebalancer/mock-swap-abi.js +95 -0
  11. package/dist/cjs/abis/rebalancer/mock-swap-abi.js.map +1 -0
  12. package/dist/cjs/abis/rebalancer/operator-abi.js +401 -0
  13. package/dist/cjs/abis/rebalancer/operator-abi.js.map +1 -0
  14. package/dist/cjs/abis/rebalancer/rebalancer-abi.js +1326 -0
  15. package/dist/cjs/abis/rebalancer/rebalancer-abi.js.map +1 -0
  16. package/dist/cjs/abis/rebalancer/strategy-abi.js +895 -0
  17. package/dist/cjs/abis/rebalancer/strategy-abi.js.map +1 -0
  18. package/dist/cjs/apis/chart-logs.js +30 -13
  19. package/dist/cjs/apis/chart-logs.js.map +1 -1
  20. package/dist/cjs/apis/market.js +45 -22
  21. package/dist/cjs/apis/market.js.map +1 -1
  22. package/dist/cjs/apis/odos.js +100 -0
  23. package/dist/cjs/apis/odos.js.map +1 -0
  24. package/dist/cjs/apis/open-order.js +75 -44
  25. package/dist/cjs/apis/open-order.js.map +1 -1
  26. package/dist/cjs/apis/pool.js +95 -0
  27. package/dist/cjs/apis/pool.js.map +1 -0
  28. package/dist/cjs/apis/strategy.js +53 -0
  29. package/dist/cjs/apis/strategy.js.map +1 -0
  30. package/dist/cjs/approval.js +83 -26
  31. package/dist/cjs/approval.js.map +1 -1
  32. package/dist/cjs/call.js +739 -107
  33. package/dist/cjs/call.js.map +1 -1
  34. package/dist/cjs/constants/addresses.js +68 -1
  35. package/dist/cjs/constants/addresses.js.map +1 -1
  36. package/dist/cjs/constants/chain.js +23 -2
  37. package/dist/cjs/constants/chain.js.map +1 -1
  38. package/dist/cjs/constants/currency.js +86 -3
  39. package/dist/cjs/constants/currency.js.map +1 -1
  40. package/dist/cjs/constants/fee.js +21 -2
  41. package/dist/cjs/constants/fee.js.map +1 -1
  42. package/dist/cjs/constants/permit.js +14 -0
  43. package/dist/cjs/constants/permit.js.map +1 -0
  44. package/dist/cjs/constants/price.js +2 -1
  45. package/dist/cjs/constants/price.js.map +1 -1
  46. package/dist/cjs/constants/rise-sepolia.js +29 -0
  47. package/dist/cjs/constants/rise-sepolia.js.map +1 -0
  48. package/dist/cjs/constants/subgraph.js +37 -0
  49. package/dist/cjs/constants/subgraph.js.map +1 -0
  50. package/dist/cjs/constants/test-chain.js +50 -0
  51. package/dist/cjs/constants/test-chain.js.map +1 -0
  52. package/dist/cjs/constants/tick.js +6 -0
  53. package/dist/cjs/constants/tick.js.map +1 -0
  54. package/dist/cjs/index.js +1 -1
  55. package/dist/cjs/index.js.map +1 -1
  56. package/dist/cjs/model/book.js +62 -35
  57. package/dist/cjs/model/book.js.map +1 -1
  58. package/dist/cjs/model/market.js +61 -26
  59. package/dist/cjs/model/market.js.map +1 -1
  60. package/dist/cjs/model/pool.js +239 -0
  61. package/dist/cjs/model/pool.js.map +1 -0
  62. package/dist/cjs/type.js.map +1 -1
  63. package/dist/cjs/utils/allowance.js +39 -0
  64. package/dist/cjs/utils/allowance.js.map +1 -0
  65. package/dist/cjs/utils/approval.js +2 -3
  66. package/dist/cjs/utils/approval.js.map +1 -1
  67. package/dist/cjs/utils/bigint.js +5 -1
  68. package/dist/cjs/utils/bigint.js.map +1 -1
  69. package/dist/cjs/utils/book-id.js +7 -7
  70. package/dist/cjs/utils/book-id.js.map +1 -1
  71. package/dist/cjs/utils/build-transaction.js +3 -4
  72. package/dist/cjs/utils/build-transaction.js.map +1 -1
  73. package/dist/cjs/utils/currency.js +61 -27
  74. package/dist/cjs/utils/currency.js.map +1 -1
  75. package/dist/cjs/utils/market.js +1 -1
  76. package/dist/cjs/utils/market.js.map +1 -1
  77. package/dist/cjs/utils/math.js +3 -1
  78. package/dist/cjs/utils/math.js.map +1 -1
  79. package/dist/cjs/utils/open.js +35 -25
  80. package/dist/cjs/utils/open.js.map +1 -1
  81. package/dist/cjs/utils/order.js +50 -126
  82. package/dist/cjs/utils/order.js.map +1 -1
  83. package/dist/cjs/utils/pool-key.js +17 -0
  84. package/dist/cjs/utils/pool-key.js.map +1 -0
  85. package/dist/cjs/utils/pool.js +88 -0
  86. package/dist/cjs/utils/pool.js.map +1 -0
  87. package/dist/cjs/utils/prices.js +40 -5
  88. package/dist/cjs/utils/prices.js.map +1 -1
  89. package/dist/cjs/utils/quotes.js +16 -0
  90. package/dist/cjs/utils/quotes.js.map +1 -0
  91. package/dist/cjs/utils/tick.js +12 -1
  92. package/dist/cjs/utils/tick.js.map +1 -1
  93. package/dist/cjs/utils/time-series.js +31 -0
  94. package/dist/cjs/utils/time-series.js.map +1 -0
  95. package/dist/cjs/utils/unit-size.js +14 -0
  96. package/dist/cjs/utils/unit-size.js.map +1 -0
  97. package/dist/cjs/utils.js +18 -0
  98. package/dist/cjs/utils.js.map +1 -0
  99. package/dist/cjs/view.js +308 -44
  100. package/dist/cjs/view.js.map +1 -1
  101. package/dist/esm/abis/core/book-manager-abi.js +109 -0
  102. package/dist/esm/abis/core/book-manager-abi.js.map +1 -0
  103. package/dist/esm/abis/core/book-viewer-abi.js +137 -5
  104. package/dist/esm/abis/core/book-viewer-abi.js.map +1 -1
  105. package/dist/esm/abis/core/controller-abi.js +1 -6
  106. package/dist/esm/abis/core/controller-abi.js.map +1 -1
  107. package/dist/esm/abis/rebalancer/minter-abi.js +259 -0
  108. package/dist/esm/abis/rebalancer/minter-abi.js.map +1 -0
  109. package/dist/esm/abis/rebalancer/mock-swap-abi.js +92 -0
  110. package/dist/esm/abis/rebalancer/mock-swap-abi.js.map +1 -0
  111. package/dist/esm/abis/rebalancer/operator-abi.js +398 -0
  112. package/dist/esm/abis/rebalancer/operator-abi.js.map +1 -0
  113. package/dist/esm/abis/rebalancer/rebalancer-abi.js +1323 -0
  114. package/dist/esm/abis/rebalancer/rebalancer-abi.js.map +1 -0
  115. package/dist/esm/abis/rebalancer/strategy-abi.js +892 -0
  116. package/dist/esm/abis/rebalancer/strategy-abi.js.map +1 -0
  117. package/dist/esm/apis/chart-logs.js +29 -12
  118. package/dist/esm/apis/chart-logs.js.map +1 -1
  119. package/dist/esm/apis/market.js +47 -24
  120. package/dist/esm/apis/market.js.map +1 -1
  121. package/dist/esm/apis/odos.js +94 -0
  122. package/dist/esm/apis/odos.js.map +1 -0
  123. package/dist/esm/apis/open-order.js +78 -44
  124. package/dist/esm/apis/open-order.js.map +1 -1
  125. package/dist/esm/apis/pool.js +96 -0
  126. package/dist/esm/apis/pool.js.map +1 -0
  127. package/dist/esm/apis/strategy.js +48 -0
  128. package/dist/esm/apis/strategy.js.map +1 -0
  129. package/dist/esm/approval.js +107 -25
  130. package/dist/esm/approval.js.map +1 -1
  131. package/dist/esm/call.js +772 -145
  132. package/dist/esm/call.js.map +1 -1
  133. package/dist/esm/constants/addresses.js +69 -2
  134. package/dist/esm/constants/addresses.js.map +1 -1
  135. package/dist/esm/constants/chain.js +23 -2
  136. package/dist/esm/constants/chain.js.map +1 -1
  137. package/dist/esm/constants/currency.js +87 -2
  138. package/dist/esm/constants/currency.js.map +1 -1
  139. package/dist/esm/constants/fee.js +21 -2
  140. package/dist/esm/constants/fee.js.map +1 -1
  141. package/dist/esm/constants/permit.js +11 -0
  142. package/dist/esm/constants/permit.js.map +1 -0
  143. package/dist/esm/constants/price.js +1 -0
  144. package/dist/esm/constants/price.js.map +1 -1
  145. package/dist/esm/constants/rise-sepolia.js +26 -0
  146. package/dist/esm/constants/rise-sepolia.js.map +1 -0
  147. package/dist/esm/constants/subgraph.js +33 -0
  148. package/dist/esm/constants/subgraph.js.map +1 -0
  149. package/dist/esm/constants/test-chain.js +47 -0
  150. package/dist/esm/constants/test-chain.js.map +1 -0
  151. package/dist/esm/constants/tick.js +3 -0
  152. package/dist/esm/constants/tick.js.map +1 -0
  153. package/dist/esm/index.js +1 -1
  154. package/dist/esm/index.js.map +1 -1
  155. package/dist/esm/model/book.js +62 -35
  156. package/dist/esm/model/book.js.map +1 -1
  157. package/dist/esm/model/market.js +63 -28
  158. package/dist/esm/model/market.js.map +1 -1
  159. package/dist/esm/model/pool.js +236 -0
  160. package/dist/esm/model/pool.js.map +1 -0
  161. package/dist/esm/type.js.map +1 -1
  162. package/dist/esm/utils/allowance.js +35 -0
  163. package/dist/esm/utils/allowance.js.map +1 -0
  164. package/dist/esm/utils/approval.js +2 -3
  165. package/dist/esm/utils/approval.js.map +1 -1
  166. package/dist/esm/utils/bigint.js +2 -0
  167. package/dist/esm/utils/bigint.js.map +1 -1
  168. package/dist/esm/utils/book-id.js +7 -7
  169. package/dist/esm/utils/book-id.js.map +1 -1
  170. package/dist/esm/utils/build-transaction.js +3 -4
  171. package/dist/esm/utils/build-transaction.js.map +1 -1
  172. package/dist/esm/utils/currency.js +59 -25
  173. package/dist/esm/utils/currency.js.map +1 -1
  174. package/dist/esm/utils/market.js +1 -1
  175. package/dist/esm/utils/market.js.map +1 -1
  176. package/dist/esm/utils/math.js +1 -0
  177. package/dist/esm/utils/math.js.map +1 -1
  178. package/dist/esm/utils/open.js +33 -23
  179. package/dist/esm/utils/open.js.map +1 -1
  180. package/dist/esm/utils/order.js +49 -125
  181. package/dist/esm/utils/order.js.map +1 -1
  182. package/dist/esm/utils/pool-key.js +12 -0
  183. package/dist/esm/utils/pool-key.js.map +1 -0
  184. package/dist/esm/utils/pool.js +84 -0
  185. package/dist/esm/utils/pool.js.map +1 -0
  186. package/dist/esm/utils/prices.js +39 -5
  187. package/dist/esm/utils/prices.js.map +1 -1
  188. package/dist/esm/utils/quotes.js +12 -0
  189. package/dist/esm/utils/quotes.js.map +1 -0
  190. package/dist/esm/utils/tick.js +11 -1
  191. package/dist/esm/utils/tick.js.map +1 -1
  192. package/dist/esm/utils/time-series.js +27 -0
  193. package/dist/esm/utils/time-series.js.map +1 -0
  194. package/dist/esm/utils/unit-size.js +10 -0
  195. package/dist/esm/utils/unit-size.js.map +1 -0
  196. package/dist/esm/utils.js +5 -0
  197. package/dist/esm/utils.js.map +1 -0
  198. package/dist/esm/view.js +379 -61
  199. package/dist/esm/view.js.map +1 -1
  200. package/dist/tsconfig.build.tsbuildinfo +1 -1
  201. package/dist/types/abis/core/book-manager-abi.d.ts +82 -0
  202. package/dist/types/abis/core/book-manager-abi.d.ts.map +1 -0
  203. package/dist/types/abis/core/book-viewer-abi.d.ts +107 -5
  204. package/dist/types/abis/core/book-viewer-abi.d.ts.map +1 -1
  205. package/dist/types/abis/core/controller-abi.d.ts +1 -5
  206. package/dist/types/abis/core/controller-abi.d.ts.map +1 -1
  207. package/dist/types/abis/rebalancer/minter-abi.d.ts +198 -0
  208. package/dist/types/abis/rebalancer/minter-abi.d.ts.map +1 -0
  209. package/dist/types/abis/rebalancer/mock-swap-abi.d.ts +70 -0
  210. package/dist/types/abis/rebalancer/mock-swap-abi.d.ts.map +1 -0
  211. package/dist/types/abis/rebalancer/operator-abi.d.ts +308 -0
  212. package/dist/types/abis/rebalancer/operator-abi.d.ts.map +1 -0
  213. package/dist/types/abis/rebalancer/rebalancer-abi.d.ts +1023 -0
  214. package/dist/types/abis/rebalancer/rebalancer-abi.d.ts.map +1 -0
  215. package/dist/types/abis/rebalancer/strategy-abi.d.ts +690 -0
  216. package/dist/types/abis/rebalancer/strategy-abi.d.ts.map +1 -0
  217. package/dist/types/apis/chart-logs.d.ts +3 -0
  218. package/dist/types/apis/chart-logs.d.ts.map +1 -1
  219. package/dist/types/apis/market.d.ts +2 -1
  220. package/dist/types/apis/market.d.ts.map +1 -1
  221. package/dist/types/apis/odos.d.ts +28 -0
  222. package/dist/types/apis/odos.d.ts.map +1 -0
  223. package/dist/types/apis/open-order.d.ts +3 -2
  224. package/dist/types/apis/open-order.d.ts.map +1 -1
  225. package/dist/types/apis/pool.d.ts +11 -0
  226. package/dist/types/apis/pool.d.ts.map +1 -0
  227. package/dist/types/apis/strategy.d.ts +6 -0
  228. package/dist/types/apis/strategy.d.ts.map +1 -0
  229. package/dist/types/approval.d.ts +37 -3
  230. package/dist/types/approval.d.ts.map +1 -1
  231. package/dist/types/call.d.ts +233 -54
  232. package/dist/types/call.d.ts.map +1 -1
  233. package/dist/types/constants/addresses.d.ts +4 -0
  234. package/dist/types/constants/addresses.d.ts.map +1 -1
  235. package/dist/types/constants/chain.d.ts +9 -2
  236. package/dist/types/constants/chain.d.ts.map +1 -1
  237. package/dist/types/constants/currency.d.ts +8 -0
  238. package/dist/types/constants/currency.d.ts.map +1 -1
  239. package/dist/types/constants/fee.d.ts +7 -2
  240. package/dist/types/constants/fee.d.ts.map +1 -1
  241. package/dist/types/constants/permit.d.ts +10 -0
  242. package/dist/types/constants/permit.d.ts.map +1 -0
  243. package/dist/types/constants/price.d.ts +1 -0
  244. package/dist/types/constants/price.d.ts.map +1 -1
  245. package/dist/types/constants/rise-sepolia.d.ts +32 -0
  246. package/dist/types/constants/rise-sepolia.d.ts.map +1 -0
  247. package/dist/types/constants/subgraph.d.ts +8 -0
  248. package/dist/types/constants/subgraph.d.ts.map +1 -0
  249. package/dist/types/constants/test-chain.d.ts +4 -0
  250. package/dist/types/constants/test-chain.d.ts.map +1 -0
  251. package/dist/types/constants/tick.d.ts +3 -0
  252. package/dist/types/constants/tick.d.ts.map +1 -0
  253. package/dist/types/index.d.ts +1 -1
  254. package/dist/types/index.d.ts.map +1 -1
  255. package/dist/types/model/book.d.ts +25 -33
  256. package/dist/types/model/book.d.ts.map +1 -1
  257. package/dist/types/model/currency.d.ts +7 -0
  258. package/dist/types/model/currency.d.ts.map +1 -1
  259. package/dist/types/model/depth.d.ts +4 -3
  260. package/dist/types/model/depth.d.ts.map +1 -1
  261. package/dist/types/model/market.d.ts +24 -13
  262. package/dist/types/model/market.d.ts.map +1 -1
  263. package/dist/types/model/open-order.d.ts +20 -27
  264. package/dist/types/model/open-order.d.ts.map +1 -1
  265. package/dist/types/model/pool.d.ts +76 -0
  266. package/dist/types/model/pool.d.ts.map +1 -0
  267. package/dist/types/type.d.ts +95 -6
  268. package/dist/types/type.d.ts.map +1 -1
  269. package/dist/types/utils/allowance.d.ts +3 -0
  270. package/dist/types/utils/allowance.d.ts.map +1 -0
  271. package/dist/types/utils/approval.d.ts +2 -1
  272. package/dist/types/utils/approval.d.ts.map +1 -1
  273. package/dist/types/utils/bigint.d.ts +2 -0
  274. package/dist/types/utils/bigint.d.ts.map +1 -1
  275. package/dist/types/utils/book-id.d.ts +2 -1
  276. package/dist/types/utils/book-id.d.ts.map +1 -1
  277. package/dist/types/utils/build-transaction.d.ts +3 -3
  278. package/dist/types/utils/build-transaction.d.ts.map +1 -1
  279. package/dist/types/utils/currency.d.ts +3 -2
  280. package/dist/types/utils/currency.d.ts.map +1 -1
  281. package/dist/types/utils/math.d.ts +1 -0
  282. package/dist/types/utils/math.d.ts.map +1 -1
  283. package/dist/types/utils/open.d.ts +2 -1
  284. package/dist/types/utils/open.d.ts.map +1 -1
  285. package/dist/types/utils/order.d.ts +4 -11
  286. package/dist/types/utils/order.d.ts.map +1 -1
  287. package/dist/types/utils/pool-key.d.ts +3 -0
  288. package/dist/types/utils/pool-key.d.ts.map +1 -0
  289. package/dist/types/utils/pool.d.ts +11 -0
  290. package/dist/types/utils/pool.d.ts.map +1 -0
  291. package/dist/types/utils/prices.d.ts +13 -2
  292. package/dist/types/utils/prices.d.ts.map +1 -1
  293. package/dist/types/utils/quotes.d.ts +2 -0
  294. package/dist/types/utils/quotes.d.ts.map +1 -0
  295. package/dist/types/utils/tick.d.ts +1 -0
  296. package/dist/types/utils/tick.d.ts.map +1 -1
  297. package/dist/types/utils/time-series.d.ts +4 -0
  298. package/dist/types/utils/time-series.d.ts.map +1 -0
  299. package/dist/types/utils/unit-size.d.ts +4 -0
  300. package/dist/types/utils/unit-size.d.ts.map +1 -0
  301. package/dist/types/utils.d.ts +5 -0
  302. package/dist/types/utils.d.ts.map +1 -0
  303. package/dist/types/view.d.ts +236 -30
  304. package/dist/types/view.d.ts.map +1 -1
  305. package/package.json +4 -3
  306. package/dist/cjs/abis/core/params-abi.js +0 -62
  307. package/dist/cjs/abis/core/params-abi.js.map +0 -1
  308. package/dist/cjs/apis/subgraph.js +0 -26
  309. package/dist/cjs/apis/subgraph.js.map +0 -1
  310. package/dist/cjs/constants/client.js +0 -14
  311. package/dist/cjs/constants/client.js.map +0 -1
  312. package/dist/cjs/constants/subgraph-url.js +0 -8
  313. package/dist/cjs/constants/subgraph-url.js.map +0 -1
  314. package/dist/cjs/signature.js +0 -145
  315. package/dist/cjs/signature.js.map +0 -1
  316. package/dist/cjs/utils/decorator.js +0 -13
  317. package/dist/cjs/utils/decorator.js.map +0 -1
  318. package/dist/cjs/utils/unit.js +0 -34
  319. package/dist/cjs/utils/unit.js.map +0 -1
  320. package/dist/esm/abis/core/params-abi.js +0 -59
  321. package/dist/esm/abis/core/params-abi.js.map +0 -1
  322. package/dist/esm/apis/subgraph.js +0 -22
  323. package/dist/esm/apis/subgraph.js.map +0 -1
  324. package/dist/esm/constants/client.js +0 -10
  325. package/dist/esm/constants/client.js.map +0 -1
  326. package/dist/esm/constants/subgraph-url.js +0 -5
  327. package/dist/esm/constants/subgraph-url.js.map +0 -1
  328. package/dist/esm/signature.js +0 -169
  329. package/dist/esm/signature.js.map +0 -1
  330. package/dist/esm/utils/decorator.js +0 -9
  331. package/dist/esm/utils/decorator.js.map +0 -1
  332. package/dist/esm/utils/unit.js +0 -30
  333. package/dist/esm/utils/unit.js.map +0 -1
  334. package/dist/types/abis/core/params-abi.d.ts +0 -21
  335. package/dist/types/abis/core/params-abi.d.ts.map +0 -1
  336. package/dist/types/apis/subgraph.d.ts +0 -3
  337. package/dist/types/apis/subgraph.d.ts.map +0 -1
  338. package/dist/types/constants/client.d.ts +0 -5
  339. package/dist/types/constants/client.d.ts.map +0 -1
  340. package/dist/types/constants/subgraph-url.d.ts +0 -5
  341. package/dist/types/constants/subgraph-url.d.ts.map +0 -1
  342. package/dist/types/signature.d.ts +0 -38
  343. package/dist/types/signature.d.ts.map +0 -1
  344. package/dist/types/utils/decorator.d.ts +0 -6
  345. package/dist/types/utils/decorator.d.ts.map +0 -1
  346. package/dist/types/utils/unit.d.ts +0 -4
  347. package/dist/types/utils/unit.d.ts.map +0 -1
package/dist/esm/view.js CHANGED
@@ -1,19 +1,70 @@
1
- import { formatUnits, getAddress, isAddressEqual, parseUnits } from 'viem';
1
+ import { createPublicClient, formatUnits, getAddress, http, isAddressEqual, parseUnits, } from 'viem';
2
2
  import { fetchMarket } from './apis/market';
3
- import { parsePrice } from './utils/prices';
4
- import { MAX_PRICE } from './constants/price';
5
- import { fetchOpenOrder, fetchOpenOrders } from './apis/open-order';
6
- import { decorator } from './utils/decorator';
7
- import { fetchChartLogs, fetchLatestChartLog } from './apis/chart-logs';
3
+ import { CHAIN_MAP } from './constants/chain';
4
+ import { formatPrice, parsePrice } from './utils/prices';
5
+ import { fetchOpenOrderByOrderIdFromSubgraph, fetchOpenOrdersByUserAddressFromSubgraph, } from './apis/open-order';
6
+ import { CHART_LOG_INTERVAL_TIMESTAMP, fetchChartLogs, fetchLatestChartLog, } from './apis/chart-logs';
8
7
  import { getMarketId } from './utils/market';
8
+ import { CONTRACT_ADDRESSES } from './constants/addresses';
9
+ import { invertTick, toPrice } from './utils/tick';
10
+ import { MAX_TICK, MIN_TICK } from './constants/tick';
11
+ import { fetchPool, fetchPoolPerformance } from './apis/pool';
12
+ import { fetchLastAmounts, fetchStrategyPosition } from './apis/strategy';
13
+ import { Subgraph, SUBGRAPH_URL } from './constants/subgraph';
14
+ import { fillAndSortByTimestamp } from './utils/time-series';
15
+ /**
16
+ * Get contract addresses by chain id
17
+ * @param chainId - chain id from {@link CHAIN_IDS}
18
+ * @returns Contract addresses
19
+ *
20
+ * @example
21
+ * import { getContractAddresses } from '@clober/v2-sdk'
22
+ *
23
+ * const addresses = await getContractAddresses({
24
+ * chainId: 421614,
25
+ * })
26
+ */
27
+ export const getContractAddresses = ({ chainId }) => {
28
+ return CONTRACT_ADDRESSES[chainId];
29
+ };
30
+ /**
31
+ * Get subgraph endpoint by chain id
32
+ * @param chainId - chain id from {@link CHAIN_IDS}
33
+ * @returns Subgraph endpoint
34
+ *
35
+ * @example
36
+ * import { getSubgraphEndpoint } from '@clober/v2-sdk'
37
+ *
38
+ * const endpoint = await getSubgraphEndpoint({
39
+ * chainId: 421614,
40
+ * })
41
+ */
42
+ export const getSubgraphEndpoint = ({ chainId }) => {
43
+ return SUBGRAPH_URL[chainId];
44
+ };
45
+ /**
46
+ * Get subgraph block number by chain id
47
+ * @param chainId - chain id from {@link CHAIN_IDS}
48
+ * @returns Contract addresses
49
+ *
50
+ * @example
51
+ * import { getContractAddresses } from '@clober/v2-sdk'
52
+ *
53
+ * const blockNumber = await getSubgraphBlockNumber({
54
+ * chainId: 421614,
55
+ * })
56
+ */
57
+ export const getSubgraphBlockNumber = async ({ chainId, }) => {
58
+ const { data: { _meta: { block: { number: blockNumber }, }, }, } = await Subgraph.get(chainId, 'getLatestBlockNumber', 'query getLatestBlockNumber { _meta { block { number } } }', {});
59
+ return Number(blockNumber);
60
+ };
9
61
  /**
10
62
  * Get market information by chain id and token addresses
11
63
  * @param chainId - chain id from {@link CHAIN_IDS}
12
64
  * @param token0 - token0 address
13
65
  * @param token1 - token1 address
14
- * @param options
66
+ * @param options {@link DefaultReadContractOptions} options.
15
67
  * @param options.n - number of depth levels to fetch
16
- * @param options.rpcUrl - RPC URL of the blockchain
17
68
  * @returns A market {@link Market}
18
69
  *
19
70
  * @example
@@ -25,23 +76,243 @@ import { getMarketId } from './utils/market';
25
76
  * token1: '0x0000000000000000000000000000000000000000',
26
77
  * })
27
78
  */
28
- export const getMarket = decorator(async ({ chainId, token0, token1, options, }) => {
79
+ export const getMarket = async ({ chainId, token0, token1, options, }) => {
29
80
  if (isAddressEqual(token0, token1)) {
30
81
  throw new Error('Token0 and token1 must be different');
31
82
  }
32
- const market = await fetchMarket(chainId, [token0, token1], options?.n);
83
+ const publicClient = createPublicClient({
84
+ chain: CHAIN_MAP[chainId],
85
+ transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
86
+ });
87
+ const market = await fetchMarket(publicClient, chainId, [token0, token1], !!(options && options.useSubgraph), options?.n);
88
+ return market.toJson();
89
+ };
90
+ /**
91
+ * Get pool information by chain id and token addresses
92
+ * @param chainId - chain id from {@link CHAIN_IDS}
93
+ * @param token0 - token0 address
94
+ * @param token1 - token1 address
95
+ * @param salt - salt for the pool
96
+ * @param options {@link DefaultReadContractOptions} options.
97
+ * @param options.n - number of depth levels to fetch
98
+ * @returns A pool {@link Pool}
99
+ *
100
+ * @example
101
+ * import { getPool } from '@clober/v2-sdk'
102
+ *
103
+ * const market = await getPool({
104
+ * chainId: 421614,
105
+ * token0: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
106
+ * token1: '0x0000000000000000000000000000000000000000',
107
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
108
+ * })
109
+ */
110
+ export const getPool = async ({ chainId, token0, token1, salt, options, }) => {
111
+ if (isAddressEqual(token0, token1)) {
112
+ throw new Error('Token0 and token1 must be different');
113
+ }
114
+ const publicClient = createPublicClient({
115
+ chain: CHAIN_MAP[chainId],
116
+ transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
117
+ });
118
+ const pool = await fetchPool(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph), options?.market);
119
+ if (!pool.isOpened) {
120
+ throw new Error('Pool is not opened');
121
+ }
122
+ return pool.toJson();
123
+ };
124
+ export const getPoolPerformance = async ({ chainId, poolKey, currencyA, currencyB, volumeFromTimestamp, volumeToTimestamp, snapshotFromTimestamp, snapshotToTimestamp, snapshotIntervalType, spreadProfitFromTimestamp, spreadProfitToTimestamp, }) => {
125
+ if (isAddressEqual(currencyA.address, currencyB.address)) {
126
+ throw new Error('currencyA and currencyB must be different');
127
+ }
128
+ const poolPerformance = await fetchPoolPerformance(chainId, poolKey, volumeFromTimestamp, snapshotFromTimestamp, snapshotIntervalType, spreadProfitFromTimestamp);
129
+ const poolVolumes = fillAndSortByTimestamp(poolPerformance.poolVolumes, 300, volumeFromTimestamp, volumeToTimestamp, (timestamp) => {
130
+ const emptyPoolVolume = {
131
+ id: '',
132
+ poolKey,
133
+ intervalType: '5m',
134
+ timestamp: BigInt(timestamp),
135
+ currencyAVolume: 0n,
136
+ currencyBVolume: 0n,
137
+ bookACurrencyAVolume: 0n,
138
+ bookACurrencyBVolume: 0n,
139
+ bookBCurrencyAVolume: 0n,
140
+ bookBCurrencyBVolume: 0n,
141
+ };
142
+ return emptyPoolVolume;
143
+ });
144
+ const poolSnapshots = fillAndSortByTimestamp(poolPerformance.poolSnapshots, CHART_LOG_INTERVAL_TIMESTAMP[snapshotIntervalType], snapshotFromTimestamp, snapshotToTimestamp, (timestamp, prev) => {
145
+ const emptyPoolSnapshot = {
146
+ id: '',
147
+ poolKey,
148
+ intervalType: snapshotIntervalType,
149
+ timestamp: BigInt(timestamp),
150
+ price: prev ? prev.price : 0n,
151
+ liquidityA: prev ? prev.liquidityA : 0n,
152
+ liquidityB: prev ? prev.liquidityB : 0n,
153
+ totalSupply: prev ? prev.totalSupply : 0n,
154
+ };
155
+ return emptyPoolSnapshot;
156
+ });
157
+ const poolSpreadProfits = fillAndSortByTimestamp(poolPerformance.poolSpreadProfits, 300, spreadProfitFromTimestamp, spreadProfitToTimestamp, (timestamp) => {
158
+ const emptyPoolSpreadProfit = {
159
+ id: '',
160
+ intervalType: '5m',
161
+ timestamp: BigInt(timestamp),
162
+ accumulatedProfitInUsd: '0',
163
+ };
164
+ return emptyPoolSpreadProfit;
165
+ });
33
166
  return {
167
+ poolVolumes: poolVolumes.map((poolVolume) => ({
168
+ poolKey: poolVolume.poolKey,
169
+ intervalType: poolVolume.intervalType,
170
+ timestamp: Number(poolVolume.timestamp),
171
+ currencyAVolume: {
172
+ currency: currencyA,
173
+ value: formatUnits(poolVolume.currencyAVolume, currencyA.decimals),
174
+ },
175
+ currencyBVolume: {
176
+ currency: currencyB,
177
+ value: formatUnits(poolVolume.currencyBVolume, currencyB.decimals),
178
+ },
179
+ })),
180
+ poolSnapshots: poolSnapshots.map((poolSnapshot) => ({
181
+ poolKey: poolSnapshot.poolKey,
182
+ intervalType: poolSnapshot.intervalType,
183
+ timestamp: Number(poolSnapshot.timestamp),
184
+ price: formatUnits(poolSnapshot.price, 18),
185
+ liquidityA: {
186
+ currency: currencyA,
187
+ value: formatUnits(poolSnapshot.liquidityA, currencyA.decimals),
188
+ },
189
+ liquidityB: {
190
+ currency: currencyB,
191
+ value: formatUnits(poolSnapshot.liquidityB, currencyB.decimals),
192
+ },
193
+ totalSupply: {
194
+ currency: {
195
+ address: CONTRACT_ADDRESSES[chainId].Rebalancer,
196
+ id: poolKey,
197
+ name: `${currencyA.symbol}-${currencyB.symbol} LP Token`,
198
+ symbol: `${currencyA.symbol}-${currencyB.symbol}`,
199
+ decimals: 18,
200
+ },
201
+ value: formatUnits(poolSnapshot.totalSupply, 18),
202
+ },
203
+ })),
204
+ poolSpreadProfits: poolSpreadProfits.map((poolSpreadProfit) => ({
205
+ intervalType: poolSpreadProfit.intervalType,
206
+ timestamp: Number(poolSpreadProfit.timestamp),
207
+ accumulatedProfitInUsd: poolSpreadProfit.accumulatedProfitInUsd,
208
+ })),
209
+ };
210
+ };
211
+ export const getStrategyPrice = async ({ chainId, token0, token1, salt, options, }) => {
212
+ if (isAddressEqual(token0, token1)) {
213
+ throw new Error('Token0 and token1 must be different');
214
+ }
215
+ const publicClient = createPublicClient({
216
+ chain: CHAIN_MAP[chainId],
217
+ transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
218
+ });
219
+ return fetchStrategyPosition(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph), options?.market);
220
+ };
221
+ export const getLastAmounts = async ({ chainId, token0, token1, salt, options, }) => {
222
+ if (isAddressEqual(token0, token1)) {
223
+ throw new Error('Token0 and token1 must be different');
224
+ }
225
+ const publicClient = createPublicClient({
226
+ chain: CHAIN_MAP[chainId],
227
+ transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
228
+ });
229
+ return fetchLastAmounts(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph), options?.market);
230
+ };
231
+ /**
232
+ * Calculates and returns the neighboring price ticks and their corresponding prices for a given input price.
233
+ *
234
+ * @param {CHAIN_IDS} chainId - chain id from {@link CHAIN_IDS}
235
+ * @param {string} price - The input price to calculate the neighborhood for, as a string.
236
+ * @param {Currency} currency0 - token0 currency {@link Currency}.
237
+ * @param {Currency} currency1 - token1 currency {@link Currency}.
238
+ *
239
+ * @returns {Object} An object containing the normal and inverted price neighborhoods. Each neighborhood includes:
240
+ * - up: The tick and price for one tick above the current price.
241
+ * - now: The tick and price for the current price.
242
+ * - down: The tick and price for one tick below the current price.
243
+ */
244
+ export const getPriceNeighborhood = ({ chainId, price, currency0, currency1, }) => {
245
+ const quoteTokenAddress = getQuoteToken({
34
246
  chainId,
35
- quote: market.quote,
36
- base: market.base,
37
- makerFee: market.makerFee,
38
- takerFee: market.takerFee,
39
- bids: market.bids,
40
- bidBookOpen: market.bidBookOpen,
41
- asks: market.asks,
42
- askBookOpen: market.askBookOpen,
247
+ token0: currency0.address,
248
+ token1: currency1.address,
249
+ });
250
+ const quoteCurrency = isAddressEqual(quoteTokenAddress, currency0.address)
251
+ ? currency0
252
+ : currency1;
253
+ const baseCurrency = isAddressEqual(quoteTokenAddress, currency0.address)
254
+ ? currency1
255
+ : currency0;
256
+ const { roundingDownTick, roundingUpTick } = parsePrice(Number(price), quoteCurrency.decimals, baseCurrency.decimals);
257
+ const bidBookTick = roundingDownTick;
258
+ const askBookTick = invertTick(roundingUpTick);
259
+ return {
260
+ normal: {
261
+ nextUp: {
262
+ tick: bidBookTick + 2n,
263
+ price: formatPrice(toPrice(bidBookTick + 2n), quoteCurrency.decimals, baseCurrency.decimals),
264
+ marketPrice: formatPrice(toPrice(bidBookTick + 2n), quoteCurrency.decimals, baseCurrency.decimals),
265
+ },
266
+ up: {
267
+ tick: bidBookTick + 1n,
268
+ price: formatPrice(toPrice(bidBookTick + 1n), quoteCurrency.decimals, baseCurrency.decimals),
269
+ marketPrice: formatPrice(toPrice(bidBookTick + 1n), quoteCurrency.decimals, baseCurrency.decimals),
270
+ },
271
+ now: {
272
+ tick: bidBookTick,
273
+ price: formatPrice(toPrice(bidBookTick), quoteCurrency.decimals, baseCurrency.decimals),
274
+ marketPrice: formatPrice(toPrice(bidBookTick), quoteCurrency.decimals, baseCurrency.decimals),
275
+ },
276
+ down: {
277
+ tick: bidBookTick - 1n,
278
+ price: formatPrice(toPrice(bidBookTick - 1n), quoteCurrency.decimals, baseCurrency.decimals),
279
+ marketPrice: formatPrice(toPrice(bidBookTick - 1n), quoteCurrency.decimals, baseCurrency.decimals),
280
+ },
281
+ nextDown: {
282
+ tick: bidBookTick - 2n,
283
+ price: formatPrice(toPrice(bidBookTick - 2n), quoteCurrency.decimals, baseCurrency.decimals),
284
+ marketPrice: formatPrice(toPrice(bidBookTick - 2n), quoteCurrency.decimals, baseCurrency.decimals),
285
+ },
286
+ },
287
+ inverted: {
288
+ nextUp: {
289
+ tick: askBookTick + 2n,
290
+ price: formatPrice(toPrice(askBookTick + 2n), baseCurrency.decimals, quoteCurrency.decimals),
291
+ marketPrice: formatPrice(toPrice(invertTick(askBookTick + 2n)), quoteCurrency.decimals, baseCurrency.decimals),
292
+ },
293
+ up: {
294
+ tick: askBookTick + 1n,
295
+ price: formatPrice(toPrice(askBookTick + 1n), baseCurrency.decimals, quoteCurrency.decimals),
296
+ marketPrice: formatPrice(toPrice(invertTick(askBookTick + 1n)), quoteCurrency.decimals, baseCurrency.decimals),
297
+ },
298
+ now: {
299
+ tick: askBookTick,
300
+ price: formatPrice(toPrice(askBookTick), baseCurrency.decimals, quoteCurrency.decimals),
301
+ marketPrice: formatPrice(toPrice(invertTick(askBookTick)), quoteCurrency.decimals, baseCurrency.decimals),
302
+ },
303
+ down: {
304
+ tick: askBookTick - 1n,
305
+ price: formatPrice(toPrice(askBookTick - 1n), baseCurrency.decimals, quoteCurrency.decimals),
306
+ marketPrice: formatPrice(toPrice(invertTick(askBookTick - 1n)), quoteCurrency.decimals, baseCurrency.decimals),
307
+ },
308
+ nextDown: {
309
+ tick: askBookTick - 2n,
310
+ price: formatPrice(toPrice(askBookTick - 2n), baseCurrency.decimals, quoteCurrency.decimals),
311
+ marketPrice: formatPrice(toPrice(invertTick(askBookTick - 2n)), quoteCurrency.decimals, baseCurrency.decimals),
312
+ },
313
+ },
43
314
  };
44
- });
315
+ };
45
316
  /**
46
317
  * Calculates the expected output for a given input amount, based on the provided market data.
47
318
  *
@@ -49,40 +320,67 @@ export const getMarket = decorator(async ({ chainId, token0, token1, options, })
49
320
  * @param inputToken The address of the input token.
50
321
  * @param outputToken The address of the output token.
51
322
  * @param amountIn The amount of expected input amount. (ex 1.2 ETH -> 1.2)
52
- * @param options
53
- * @param options.limitPrice The maximum limit price to spend.
54
- * @param options.rpcUrl The RPC URL of the blockchain.
323
+ * @param options {@link DefaultReadContractOptions} options.
324
+ * @param options.limitPrice The maximum limit price to take.
325
+ * @param options.roundingDownTakenBid Whether to round down the taken bid.
326
+ * @param options.roundingUpTakenAsk Whether to round up the taken ask.
55
327
  * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
56
328
  * @example
57
329
  * import { getExpectedOutput } from '@clober/v2-sdk'
58
330
  *
59
- * const { takenAmount, spendAmount } = await getExpectedOutput({
331
+ * const { takenAmount, spentAmount } = await getExpectedOutput({
60
332
  * chainId: 421614,
61
333
  * inputToken: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
62
334
  * outputToken: '0x0000000000000000000000000000000000000000',
63
335
  * amountIn: '1000.123', // spend 1000.123 USDC
64
336
  * })
65
337
  */
66
- export const getExpectedOutput = decorator(async ({ chainId, inputToken, outputToken, amountIn, options, }) => {
67
- const market = await fetchMarket(chainId, [inputToken, outputToken]);
338
+ export const getExpectedOutput = async ({ chainId, inputToken, outputToken, amountIn, options, }) => {
339
+ const [roundingDownTakenBid, roundingUpTakenAsk] = [
340
+ options?.roundingDownTakenBid ? options.roundingDownTakenBid : false,
341
+ options?.roundingUpTakenAsk ? options.roundingUpTakenAsk : false,
342
+ ];
343
+ const publicClient = createPublicClient({
344
+ chain: CHAIN_MAP[chainId],
345
+ transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
346
+ });
347
+ const market = await fetchMarket(publicClient, chainId, [inputToken, outputToken], !!(options && options.useSubgraph));
68
348
  const isBid = isAddressEqual(market.quote.address, inputToken);
69
- const rawLimitPrice = options && options.limitPrice
349
+ const { roundingDownTick, roundingUpTick } = options && options.limitPrice
70
350
  ? parsePrice(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
71
351
  : isBid
72
- ? MAX_PRICE
73
- : 0n;
352
+ ? {
353
+ roundingDownTick: MAX_TICK,
354
+ roundingUpTick: MAX_TICK,
355
+ }
356
+ : {
357
+ roundingDownTick: MIN_TICK,
358
+ roundingUpTick: MIN_TICK,
359
+ };
74
360
  const inputCurrency = isBid ? market.quote : market.base;
75
- const { takenQuoteAmount, spendBaseAmount, bookId } = market.spend({
76
- spendBase: !isBid,
77
- limitPrice: rawLimitPrice,
361
+ const isTakingBidSide = !isBid;
362
+ const { takenQuoteAmount, spentBaseAmount, bookId, events } = market.spend({
363
+ spentBase: isTakingBidSide,
364
+ limitTick: isTakingBidSide
365
+ ? roundingDownTakenBid
366
+ ? roundingDownTick
367
+ : roundingUpTick
368
+ : roundingUpTakenAsk
369
+ ? roundingUpTick
370
+ : roundingDownTick,
78
371
  amountIn: parseUnits(amountIn, inputCurrency.decimals),
79
372
  });
80
373
  return {
81
374
  takenAmount: formatUnits(takenQuoteAmount, isBid ? market.base.decimals : market.quote.decimals),
82
- spendAmount: formatUnits(spendBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
375
+ spentAmount: formatUnits(spentBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
83
376
  bookId,
377
+ events: events.map(({ tick, takenQuoteAmount, spentBaseAmount }) => ({
378
+ price: formatPrice(toPrice(isBid ? invertTick(BigInt(tick)) : BigInt(tick)), market.quote.decimals, market.base.decimals),
379
+ takenAmount: formatUnits(takenQuoteAmount, isBid ? market.base.decimals : market.quote.decimals),
380
+ spentAmount: formatUnits(spentBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
381
+ })),
84
382
  };
85
- });
383
+ };
86
384
  /**
87
385
  * Calculates the expected input for a given output amount, based on the provided market data.
88
386
  *
@@ -90,47 +388,68 @@ export const getExpectedOutput = decorator(async ({ chainId, inputToken, outputT
90
388
  * @param inputToken The address of the input token.
91
389
  * @param outputToken The address of the output token.
92
390
  * @param amountOut The amount of expected output amount. (ex 1.2 ETH -> 1.2)
93
- * @param options
391
+ * @param options {@link DefaultReadContractOptions} options.
94
392
  * @param options.limitPrice The maximum limit price to take.
95
- * @param options.rpcUrl The RPC URL of the blockchain.
96
- * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
393
+ * @param options.roundingDownTakenBid Whether to round down the taken bid.
394
+ * @param options.roundingUpTakenAsk Whether to round up the taken ask.
395
+ * @param options.useSubgraph Whether to use the subgraph to fetch the market data.
396
+ * @returns A Promise resolving to an object containing the taken amount, spent amount and result of the calculation.
97
397
  * @example
98
398
  * import { getExpectedInput } from '@clober/v2-sdk'
99
399
  *
100
- * const { takenAmount, spendAmount } = await getExpectedInput({
400
+ * const { takenAmount, spentAmount } = await getExpectedInput({
101
401
  * chainId: 421614,
102
402
  * inputToken: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
103
403
  * outputToken: '0x0000000000000000000000000000000000000000',
104
404
  * amountOut: '0.1', // take 0.1 ETH
105
405
  * })
106
406
  */
107
- export const getExpectedInput = decorator(async ({ chainId, inputToken, outputToken, amountOut, options, }) => {
108
- const market = await fetchMarket(chainId, [inputToken, outputToken]);
407
+ export const getExpectedInput = async ({ chainId, inputToken, outputToken, amountOut, options, }) => {
408
+ const [roundingDownTakenBid, roundingUpTakenAsk] = [
409
+ options?.roundingDownTakenBid ? options.roundingDownTakenBid : false,
410
+ options?.roundingUpTakenAsk ? options.roundingUpTakenAsk : false,
411
+ ];
412
+ const publicClient = createPublicClient({
413
+ chain: CHAIN_MAP[chainId],
414
+ transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
415
+ });
416
+ const market = await fetchMarket(publicClient, chainId, [inputToken, outputToken], !!(options && options.useSubgraph));
109
417
  const isBid = isAddressEqual(market.quote.address, inputToken);
110
- const rawLimitPrice = options && options.limitPrice
418
+ const { roundingDownTick, roundingUpTick } = options && options.limitPrice
111
419
  ? parsePrice(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
112
420
  : isBid
113
- ? MAX_PRICE
114
- : 0n;
421
+ ? { roundingDownTick: MAX_TICK, roundingUpTick: MAX_TICK }
422
+ : { roundingDownTick: MIN_TICK, roundingUpTick: MIN_TICK };
115
423
  const outputCurrency = isBid ? market.base : market.quote;
116
- const { takenQuoteAmount, spendBaseAmount, bookId } = market.take({
117
- takeQuote: !isBid,
118
- limitPrice: rawLimitPrice,
424
+ const isTakingBidSide = !isBid;
425
+ const { takenQuoteAmount, spentBaseAmount, bookId, events } = market.take({
426
+ takeQuote: isTakingBidSide,
427
+ limitTick: isTakingBidSide
428
+ ? roundingDownTakenBid
429
+ ? roundingDownTick
430
+ : roundingUpTick
431
+ : roundingUpTakenAsk
432
+ ? roundingUpTick
433
+ : roundingDownTick,
119
434
  amountOut: parseUnits(amountOut, outputCurrency.decimals),
120
435
  });
121
436
  return {
122
437
  takenAmount: formatUnits(takenQuoteAmount, isBid ? market.base.decimals : market.quote.decimals),
123
- spendAmount: formatUnits(spendBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
438
+ spentAmount: formatUnits(spentBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
124
439
  bookId,
440
+ events: events.map(({ tick, takenQuoteAmount, spentBaseAmount }) => ({
441
+ price: formatPrice(toPrice(isBid ? invertTick(BigInt(tick)) : BigInt(tick)), market.quote.decimals, market.base.decimals),
442
+ takenAmount: formatUnits(takenQuoteAmount, isBid ? market.base.decimals : market.quote.decimals),
443
+ spentAmount: formatUnits(spentBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
444
+ })),
125
445
  };
126
- });
446
+ };
127
447
  /**
128
448
  * Retrieves the open order with the specified ID on the given chain.
129
449
  *
130
450
  * @param {CHAIN_IDS} chainId The chain ID.
131
451
  * @param {string} id The ID of the open order.
132
- * @param options
133
- * @param options.rpcUrl The RPC URL of the blockchain.
452
+ * @param options {@link DefaultReadContractOptions} options.
134
453
  * @returns {Promise<OpenOrder>} Promise resolving to the open order object, or undefined if not found.
135
454
  * @example
136
455
  * import { getOpenOrder } from '@clober/v2-sdk'
@@ -140,16 +459,15 @@ export const getExpectedInput = decorator(async ({ chainId, inputToken, outputTo
140
459
  * id: '46223845323662364279893361453861711542636620039907198451770258805035840307200'
141
460
  * })
142
461
  */
143
- export const getOpenOrder = decorator(async ({ chainId, id, }) => {
144
- return fetchOpenOrder(chainId, id);
145
- });
462
+ export const getOpenOrder = async ({ chainId, id, }) => {
463
+ return fetchOpenOrderByOrderIdFromSubgraph(chainId, id);
464
+ };
146
465
  /**
147
466
  * Retrieves open orders for the specified user on the given chain.
148
467
  *
149
468
  * @param {CHAIN_IDS} chainId The chain ID.
150
469
  * @param {`0x${string}`} userAddress The Ethereum address of the user.
151
- * @param options
152
- * @param options.rpcUrl The RPC URL of the blockchain.
470
+ * @param options {@link DefaultReadContractOptions} options.
153
471
  * @returns {Promise<OpenOrder[]>} Promise resolving to an array of open orders.
154
472
  * @example
155
473
  * import { getOpenOrders } from '@clober/v2-sdk'
@@ -159,9 +477,9 @@ export const getOpenOrder = decorator(async ({ chainId, id, }) => {
159
477
  * userAddress: '0x5F79EE8f8fA862E98201120d83c4eC39D9468D49'
160
478
  * })
161
479
  */
162
- export const getOpenOrders = decorator(async ({ chainId, userAddress, }) => {
163
- return fetchOpenOrders(chainId, userAddress);
164
- });
480
+ export const getOpenOrders = async ({ chainId, userAddress, }) => {
481
+ return fetchOpenOrdersByUserAddressFromSubgraph(chainId, userAddress);
482
+ };
165
483
  /**
166
484
  * Retrieves the latest chart log for a specific market.
167
485
  *
@@ -179,9 +497,9 @@ export const getOpenOrders = decorator(async ({ chainId, userAddress, }) => {
179
497
  * base: '0x0000000000000000000000000000000000000000',
180
498
  * })
181
499
  */
182
- export const getLatestChartLog = decorator(async ({ chainId, quote, base, }) => {
500
+ export const getLatestChartLog = async ({ chainId, quote, base, }) => {
183
501
  return fetchLatestChartLog(chainId, `${base}/${quote}`);
184
- });
502
+ };
185
503
  /**
186
504
  * Retrieves chart logs for a specific market within a specified time interval.
187
505
  *
@@ -205,9 +523,9 @@ export const getLatestChartLog = decorator(async ({ chainId, quote, base, }) =>
205
523
  * to: 1713312000,
206
524
  * })
207
525
  */
208
- export const getChartLogs = decorator(async ({ chainId, quote, base, intervalType, from, to, }) => {
526
+ export const getChartLogs = async ({ chainId, quote, base, intervalType, from, to, }) => {
209
527
  return fetchChartLogs(chainId, `${base}/${quote}`, intervalType, from, to);
210
- });
528
+ };
211
529
  /**
212
530
  * Retrieves the quote token address for a given chain and a pair of tokens.
213
531
  *
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}