@clober/v2-sdk 0.0.6 → 0.0.7-5.dev.2

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