@clober/v2-sdk 0.0.8 → 0.0.9-6.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 (391) 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/governance/election-governor-abi.js +838 -0
  9. package/dist/cjs/abis/governance/election-governor-abi.js.map +1 -0
  10. package/dist/cjs/abis/governance/keepers-registry-abi.js +546 -0
  11. package/dist/cjs/abis/governance/keepers-registry-abi.js.map +1 -0
  12. package/dist/cjs/abis/governance/vclob-abi.js +743 -0
  13. package/dist/cjs/abis/governance/vclob-abi.js.map +1 -0
  14. package/dist/cjs/abis/rebalancer/minter-abi.js +262 -0
  15. package/dist/cjs/abis/rebalancer/minter-abi.js.map +1 -0
  16. package/dist/cjs/abis/rebalancer/mock-swap-abi.js +95 -0
  17. package/dist/cjs/abis/rebalancer/mock-swap-abi.js.map +1 -0
  18. package/dist/cjs/abis/rebalancer/operator-abi.js +401 -0
  19. package/dist/cjs/abis/rebalancer/operator-abi.js.map +1 -0
  20. package/dist/cjs/abis/rebalancer/rebalancer-abi.js +1326 -0
  21. package/dist/cjs/abis/rebalancer/rebalancer-abi.js.map +1 -0
  22. package/dist/cjs/abis/rebalancer/strategy-abi.js +895 -0
  23. package/dist/cjs/abis/rebalancer/strategy-abi.js.map +1 -0
  24. package/dist/cjs/apis/chart-logs.js +20 -11
  25. package/dist/cjs/apis/chart-logs.js.map +1 -1
  26. package/dist/cjs/apis/market.js +44 -21
  27. package/dist/cjs/apis/market.js.map +1 -1
  28. package/dist/cjs/apis/odos.js +100 -0
  29. package/dist/cjs/apis/odos.js.map +1 -0
  30. package/dist/cjs/apis/open-order.js +59 -35
  31. package/dist/cjs/apis/open-order.js.map +1 -1
  32. package/dist/cjs/apis/pool.js +97 -0
  33. package/dist/cjs/apis/pool.js.map +1 -0
  34. package/dist/cjs/apis/strategy.js +53 -0
  35. package/dist/cjs/apis/strategy.js.map +1 -0
  36. package/dist/cjs/apis/vclob.js +47 -0
  37. package/dist/cjs/apis/vclob.js.map +1 -0
  38. package/dist/cjs/approval.js +83 -26
  39. package/dist/cjs/approval.js.map +1 -1
  40. package/dist/cjs/call.js +943 -156
  41. package/dist/cjs/call.js.map +1 -1
  42. package/dist/cjs/constants/addresses.js +92 -1
  43. package/dist/cjs/constants/addresses.js.map +1 -1
  44. package/dist/cjs/constants/bera-bartio-chain.js +30 -0
  45. package/dist/cjs/constants/bera-bartio-chain.js.map +1 -0
  46. package/dist/cjs/constants/chain.js +25 -2
  47. package/dist/cjs/constants/chain.js.map +1 -1
  48. package/dist/cjs/constants/currency.js +82 -3
  49. package/dist/cjs/constants/currency.js.map +1 -1
  50. package/dist/cjs/constants/fee.js +21 -2
  51. package/dist/cjs/constants/fee.js.map +1 -1
  52. package/dist/cjs/constants/mitosis-testnet-chain.js +30 -0
  53. package/dist/cjs/constants/mitosis-testnet-chain.js.map +1 -0
  54. package/dist/cjs/constants/permit.js +14 -0
  55. package/dist/cjs/constants/permit.js.map +1 -0
  56. package/dist/cjs/constants/price.js +2 -1
  57. package/dist/cjs/constants/price.js.map +1 -1
  58. package/dist/cjs/constants/sonic-mainnet-chain.js +30 -0
  59. package/dist/cjs/constants/sonic-mainnet-chain.js.map +1 -0
  60. package/dist/cjs/constants/subgraph.js +37 -0
  61. package/dist/cjs/constants/subgraph.js.map +1 -0
  62. package/dist/cjs/constants/test-chain.js +50 -0
  63. package/dist/cjs/constants/test-chain.js.map +1 -0
  64. package/dist/cjs/constants/tick.js +6 -0
  65. package/dist/cjs/constants/tick.js.map +1 -0
  66. package/dist/cjs/index.js +1 -1
  67. package/dist/cjs/index.js.map +1 -1
  68. package/dist/cjs/model/book.js +72 -36
  69. package/dist/cjs/model/book.js.map +1 -1
  70. package/dist/cjs/model/fee-policy.js +10 -0
  71. package/dist/cjs/model/fee-policy.js.map +1 -1
  72. package/dist/cjs/model/market.js +65 -27
  73. package/dist/cjs/model/market.js.map +1 -1
  74. package/dist/cjs/model/pool.js +240 -0
  75. package/dist/cjs/model/pool.js.map +1 -0
  76. package/dist/cjs/model/vclob.js +3 -0
  77. package/dist/cjs/model/vclob.js.map +1 -0
  78. package/dist/cjs/type.js +8 -1
  79. package/dist/cjs/type.js.map +1 -1
  80. package/dist/cjs/utils/allowance.js +39 -0
  81. package/dist/cjs/utils/allowance.js.map +1 -0
  82. package/dist/cjs/utils/approval.js +2 -3
  83. package/dist/cjs/utils/approval.js.map +1 -1
  84. package/dist/cjs/utils/bigint.js +5 -1
  85. package/dist/cjs/utils/bigint.js.map +1 -1
  86. package/dist/cjs/utils/book-id.js +7 -8
  87. package/dist/cjs/utils/book-id.js.map +1 -1
  88. package/dist/cjs/utils/build-transaction.js +9 -9
  89. package/dist/cjs/utils/build-transaction.js.map +1 -1
  90. package/dist/cjs/utils/currency.js +55 -24
  91. package/dist/cjs/utils/currency.js.map +1 -1
  92. package/dist/cjs/utils/market.js +1 -1
  93. package/dist/cjs/utils/market.js.map +1 -1
  94. package/dist/cjs/utils/math.js +3 -1
  95. package/dist/cjs/utils/math.js.map +1 -1
  96. package/dist/cjs/utils/open.js +35 -25
  97. package/dist/cjs/utils/open.js.map +1 -1
  98. package/dist/cjs/utils/order.js +67 -126
  99. package/dist/cjs/utils/order.js.map +1 -1
  100. package/dist/cjs/utils/pool-key.js +17 -0
  101. package/dist/cjs/utils/pool-key.js.map +1 -0
  102. package/dist/cjs/utils/pool.js +88 -0
  103. package/dist/cjs/utils/pool.js.map +1 -0
  104. package/dist/cjs/utils/prices.js +40 -5
  105. package/dist/cjs/utils/prices.js.map +1 -1
  106. package/dist/cjs/utils/tick.js +12 -1
  107. package/dist/cjs/utils/tick.js.map +1 -1
  108. package/dist/cjs/utils/time-series.js +31 -0
  109. package/dist/cjs/utils/time-series.js.map +1 -0
  110. package/dist/cjs/utils/unit-size.js +48 -0
  111. package/dist/cjs/utils/unit-size.js.map +1 -0
  112. package/dist/cjs/utils.js +18 -0
  113. package/dist/cjs/utils.js.map +1 -0
  114. package/dist/cjs/view.js +503 -44
  115. package/dist/cjs/view.js.map +1 -1
  116. package/dist/esm/abis/core/book-manager-abi.js +109 -0
  117. package/dist/esm/abis/core/book-manager-abi.js.map +1 -0
  118. package/dist/esm/abis/core/book-viewer-abi.js +137 -5
  119. package/dist/esm/abis/core/book-viewer-abi.js.map +1 -1
  120. package/dist/esm/abis/core/controller-abi.js +29 -24
  121. package/dist/esm/abis/core/controller-abi.js.map +1 -1
  122. package/dist/esm/abis/governance/election-governor-abi.js +835 -0
  123. package/dist/esm/abis/governance/election-governor-abi.js.map +1 -0
  124. package/dist/esm/abis/governance/keepers-registry-abi.js +543 -0
  125. package/dist/esm/abis/governance/keepers-registry-abi.js.map +1 -0
  126. package/dist/esm/abis/governance/vclob-abi.js +740 -0
  127. package/dist/esm/abis/governance/vclob-abi.js.map +1 -0
  128. package/dist/esm/abis/rebalancer/minter-abi.js +259 -0
  129. package/dist/esm/abis/rebalancer/minter-abi.js.map +1 -0
  130. package/dist/esm/abis/rebalancer/mock-swap-abi.js +92 -0
  131. package/dist/esm/abis/rebalancer/mock-swap-abi.js.map +1 -0
  132. package/dist/esm/abis/rebalancer/operator-abi.js +398 -0
  133. package/dist/esm/abis/rebalancer/operator-abi.js.map +1 -0
  134. package/dist/esm/abis/rebalancer/rebalancer-abi.js +1323 -0
  135. package/dist/esm/abis/rebalancer/rebalancer-abi.js.map +1 -0
  136. package/dist/esm/abis/rebalancer/strategy-abi.js +892 -0
  137. package/dist/esm/abis/rebalancer/strategy-abi.js.map +1 -0
  138. package/dist/esm/apis/chart-logs.js +18 -9
  139. package/dist/esm/apis/chart-logs.js.map +1 -1
  140. package/dist/esm/apis/market.js +45 -22
  141. package/dist/esm/apis/market.js.map +1 -1
  142. package/dist/esm/apis/odos.js +94 -0
  143. package/dist/esm/apis/odos.js.map +1 -0
  144. package/dist/esm/apis/open-order.js +60 -35
  145. package/dist/esm/apis/open-order.js.map +1 -1
  146. package/dist/esm/apis/pool.js +92 -0
  147. package/dist/esm/apis/pool.js.map +1 -0
  148. package/dist/esm/apis/strategy.js +48 -0
  149. package/dist/esm/apis/strategy.js.map +1 -0
  150. package/dist/esm/apis/vclob.js +43 -0
  151. package/dist/esm/apis/vclob.js.map +1 -0
  152. package/dist/esm/approval.js +109 -36
  153. package/dist/esm/approval.js.map +1 -1
  154. package/dist/esm/call.js +982 -210
  155. package/dist/esm/call.js.map +1 -1
  156. package/dist/esm/constants/addresses.js +93 -2
  157. package/dist/esm/constants/addresses.js.map +1 -1
  158. package/dist/esm/constants/bera-bartio-chain.js +27 -0
  159. package/dist/esm/constants/bera-bartio-chain.js.map +1 -0
  160. package/dist/esm/constants/chain.js +24 -2
  161. package/dist/esm/constants/chain.js.map +1 -1
  162. package/dist/esm/constants/currency.js +85 -2
  163. package/dist/esm/constants/currency.js.map +1 -1
  164. package/dist/esm/constants/fee.js +21 -2
  165. package/dist/esm/constants/fee.js.map +1 -1
  166. package/dist/esm/constants/mitosis-testnet-chain.js +27 -0
  167. package/dist/esm/constants/mitosis-testnet-chain.js.map +1 -0
  168. package/dist/esm/constants/permit.js +11 -0
  169. package/dist/esm/constants/permit.js.map +1 -0
  170. package/dist/esm/constants/price.js +1 -0
  171. package/dist/esm/constants/price.js.map +1 -1
  172. package/dist/esm/constants/sonic-mainnet-chain.js +27 -0
  173. package/dist/esm/constants/sonic-mainnet-chain.js.map +1 -0
  174. package/dist/esm/constants/subgraph.js +33 -0
  175. package/dist/esm/constants/subgraph.js.map +1 -0
  176. package/dist/esm/constants/test-chain.js +47 -0
  177. package/dist/esm/constants/test-chain.js.map +1 -0
  178. package/dist/esm/constants/tick.js +3 -0
  179. package/dist/esm/constants/tick.js.map +1 -0
  180. package/dist/esm/index.js +1 -1
  181. package/dist/esm/index.js.map +1 -1
  182. package/dist/esm/model/book.js +72 -36
  183. package/dist/esm/model/book.js.map +1 -1
  184. package/dist/esm/model/fee-policy.js +10 -0
  185. package/dist/esm/model/fee-policy.js.map +1 -1
  186. package/dist/esm/model/market.js +67 -29
  187. package/dist/esm/model/market.js.map +1 -1
  188. package/dist/esm/model/pool.js +237 -0
  189. package/dist/esm/model/pool.js.map +1 -0
  190. package/dist/esm/model/vclob.js +2 -0
  191. package/dist/esm/model/vclob.js.map +1 -0
  192. package/dist/esm/type.js +7 -0
  193. package/dist/esm/type.js.map +1 -1
  194. package/dist/esm/utils/allowance.js +35 -0
  195. package/dist/esm/utils/allowance.js.map +1 -0
  196. package/dist/esm/utils/approval.js +2 -3
  197. package/dist/esm/utils/approval.js.map +1 -1
  198. package/dist/esm/utils/bigint.js +2 -0
  199. package/dist/esm/utils/bigint.js.map +1 -1
  200. package/dist/esm/utils/book-id.js +7 -8
  201. package/dist/esm/utils/book-id.js.map +1 -1
  202. package/dist/esm/utils/build-transaction.js +9 -9
  203. package/dist/esm/utils/build-transaction.js.map +1 -1
  204. package/dist/esm/utils/currency.js +53 -22
  205. package/dist/esm/utils/currency.js.map +1 -1
  206. package/dist/esm/utils/market.js +1 -1
  207. package/dist/esm/utils/market.js.map +1 -1
  208. package/dist/esm/utils/math.js +1 -0
  209. package/dist/esm/utils/math.js.map +1 -1
  210. package/dist/esm/utils/open.js +33 -23
  211. package/dist/esm/utils/open.js.map +1 -1
  212. package/dist/esm/utils/order.js +66 -125
  213. package/dist/esm/utils/order.js.map +1 -1
  214. package/dist/esm/utils/pool-key.js +12 -0
  215. package/dist/esm/utils/pool-key.js.map +1 -0
  216. package/dist/esm/utils/pool.js +84 -0
  217. package/dist/esm/utils/pool.js.map +1 -0
  218. package/dist/esm/utils/prices.js +39 -5
  219. package/dist/esm/utils/prices.js.map +1 -1
  220. package/dist/esm/utils/tick.js +11 -1
  221. package/dist/esm/utils/tick.js.map +1 -1
  222. package/dist/esm/utils/time-series.js +27 -0
  223. package/dist/esm/utils/time-series.js.map +1 -0
  224. package/dist/esm/utils/unit-size.js +44 -0
  225. package/dist/esm/utils/unit-size.js.map +1 -0
  226. package/dist/esm/utils.js +5 -0
  227. package/dist/esm/utils.js.map +1 -0
  228. package/dist/esm/view.js +576 -61
  229. package/dist/esm/view.js.map +1 -1
  230. package/dist/tsconfig.build.tsbuildinfo +1 -1
  231. package/dist/types/abis/core/book-manager-abi.d.ts +82 -0
  232. package/dist/types/abis/core/book-manager-abi.d.ts.map +1 -0
  233. package/dist/types/abis/core/book-viewer-abi.d.ts +107 -5
  234. package/dist/types/abis/core/book-viewer-abi.d.ts.map +1 -1
  235. package/dist/types/abis/core/controller-abi.d.ts +23 -19
  236. package/dist/types/abis/core/controller-abi.d.ts.map +1 -1
  237. package/dist/types/abis/governance/election-governor-abi.d.ts +648 -0
  238. package/dist/types/abis/governance/election-governor-abi.d.ts.map +1 -0
  239. package/dist/types/abis/governance/keepers-registry-abi.d.ts +417 -0
  240. package/dist/types/abis/governance/keepers-registry-abi.d.ts.map +1 -0
  241. package/dist/types/abis/governance/vclob-abi.d.ts +568 -0
  242. package/dist/types/abis/governance/vclob-abi.d.ts.map +1 -0
  243. package/dist/types/abis/rebalancer/minter-abi.d.ts +198 -0
  244. package/dist/types/abis/rebalancer/minter-abi.d.ts.map +1 -0
  245. package/dist/types/abis/rebalancer/mock-swap-abi.d.ts +70 -0
  246. package/dist/types/abis/rebalancer/mock-swap-abi.d.ts.map +1 -0
  247. package/dist/types/abis/rebalancer/operator-abi.d.ts +308 -0
  248. package/dist/types/abis/rebalancer/operator-abi.d.ts.map +1 -0
  249. package/dist/types/abis/rebalancer/rebalancer-abi.d.ts +1023 -0
  250. package/dist/types/abis/rebalancer/rebalancer-abi.d.ts.map +1 -0
  251. package/dist/types/abis/rebalancer/strategy-abi.d.ts +690 -0
  252. package/dist/types/abis/rebalancer/strategy-abi.d.ts.map +1 -0
  253. package/dist/types/apis/chart-logs.d.ts +3 -0
  254. package/dist/types/apis/chart-logs.d.ts.map +1 -1
  255. package/dist/types/apis/market.d.ts +3 -1
  256. package/dist/types/apis/market.d.ts.map +1 -1
  257. package/dist/types/apis/odos.d.ts +28 -0
  258. package/dist/types/apis/odos.d.ts.map +1 -0
  259. package/dist/types/apis/open-order.d.ts +5 -2
  260. package/dist/types/apis/open-order.d.ts.map +1 -1
  261. package/dist/types/apis/pool.d.ts +11 -0
  262. package/dist/types/apis/pool.d.ts.map +1 -0
  263. package/dist/types/apis/strategy.d.ts +6 -0
  264. package/dist/types/apis/strategy.d.ts.map +1 -0
  265. package/dist/types/apis/vclob.d.ts +5 -0
  266. package/dist/types/apis/vclob.d.ts.map +1 -0
  267. package/dist/types/approval.d.ts +35 -10
  268. package/dist/types/approval.d.ts.map +1 -1
  269. package/dist/types/call.d.ts +299 -71
  270. package/dist/types/call.d.ts.map +1 -1
  271. package/dist/types/constants/addresses.d.ts +7 -0
  272. package/dist/types/constants/addresses.d.ts.map +1 -1
  273. package/dist/types/constants/bera-bartio-chain.d.ts +33 -0
  274. package/dist/types/constants/bera-bartio-chain.d.ts.map +1 -0
  275. package/dist/types/constants/chain.d.ts +9 -2
  276. package/dist/types/constants/chain.d.ts.map +1 -1
  277. package/dist/types/constants/currency.d.ts +8 -0
  278. package/dist/types/constants/currency.d.ts.map +1 -1
  279. package/dist/types/constants/fee.d.ts +7 -2
  280. package/dist/types/constants/fee.d.ts.map +1 -1
  281. package/dist/types/constants/mitosis-testnet-chain.d.ts +33 -0
  282. package/dist/types/constants/mitosis-testnet-chain.d.ts.map +1 -0
  283. package/dist/types/constants/permit.d.ts +10 -0
  284. package/dist/types/constants/permit.d.ts.map +1 -0
  285. package/dist/types/constants/price.d.ts +1 -0
  286. package/dist/types/constants/price.d.ts.map +1 -1
  287. package/dist/types/constants/sonic-mainnet-chain.d.ts +33 -0
  288. package/dist/types/constants/sonic-mainnet-chain.d.ts.map +1 -0
  289. package/dist/types/constants/subgraph.d.ts +5 -0
  290. package/dist/types/constants/subgraph.d.ts.map +1 -0
  291. package/dist/types/constants/test-chain.d.ts +4 -0
  292. package/dist/types/constants/test-chain.d.ts.map +1 -0
  293. package/dist/types/constants/tick.d.ts +3 -0
  294. package/dist/types/constants/tick.d.ts.map +1 -0
  295. package/dist/types/index.d.ts +1 -1
  296. package/dist/types/index.d.ts.map +1 -1
  297. package/dist/types/model/book.d.ts +30 -33
  298. package/dist/types/model/book.d.ts.map +1 -1
  299. package/dist/types/model/currency.d.ts +7 -0
  300. package/dist/types/model/currency.d.ts.map +1 -1
  301. package/dist/types/model/depth.d.ts +4 -3
  302. package/dist/types/model/depth.d.ts.map +1 -1
  303. package/dist/types/model/fee-policy.d.ts +1 -0
  304. package/dist/types/model/fee-policy.d.ts.map +1 -1
  305. package/dist/types/model/market.d.ts +24 -13
  306. package/dist/types/model/market.d.ts.map +1 -1
  307. package/dist/types/model/open-order.d.ts +20 -27
  308. package/dist/types/model/open-order.d.ts.map +1 -1
  309. package/dist/types/model/pool.d.ts +77 -0
  310. package/dist/types/model/pool.d.ts.map +1 -0
  311. package/dist/types/model/vclob.d.ts +7 -0
  312. package/dist/types/model/vclob.d.ts.map +1 -0
  313. package/dist/types/type.d.ts +143 -6
  314. package/dist/types/type.d.ts.map +1 -1
  315. package/dist/types/utils/allowance.d.ts +3 -0
  316. package/dist/types/utils/allowance.d.ts.map +1 -0
  317. package/dist/types/utils/approval.d.ts +2 -1
  318. package/dist/types/utils/approval.d.ts.map +1 -1
  319. package/dist/types/utils/bigint.d.ts +2 -0
  320. package/dist/types/utils/bigint.d.ts.map +1 -1
  321. package/dist/types/utils/book-id.d.ts +2 -1
  322. package/dist/types/utils/book-id.d.ts.map +1 -1
  323. package/dist/types/utils/build-transaction.d.ts +3 -3
  324. package/dist/types/utils/build-transaction.d.ts.map +1 -1
  325. package/dist/types/utils/currency.d.ts +3 -2
  326. package/dist/types/utils/currency.d.ts.map +1 -1
  327. package/dist/types/utils/math.d.ts +1 -0
  328. package/dist/types/utils/math.d.ts.map +1 -1
  329. package/dist/types/utils/open.d.ts +2 -1
  330. package/dist/types/utils/open.d.ts.map +1 -1
  331. package/dist/types/utils/order.d.ts +5 -11
  332. package/dist/types/utils/order.d.ts.map +1 -1
  333. package/dist/types/utils/pool-key.d.ts +3 -0
  334. package/dist/types/utils/pool-key.d.ts.map +1 -0
  335. package/dist/types/utils/pool.d.ts +11 -0
  336. package/dist/types/utils/pool.d.ts.map +1 -0
  337. package/dist/types/utils/prices.d.ts +13 -2
  338. package/dist/types/utils/prices.d.ts.map +1 -1
  339. package/dist/types/utils/tick.d.ts +1 -0
  340. package/dist/types/utils/tick.d.ts.map +1 -1
  341. package/dist/types/utils/time-series.d.ts +4 -0
  342. package/dist/types/utils/time-series.d.ts.map +1 -0
  343. package/dist/types/utils/unit-size.d.ts +5 -0
  344. package/dist/types/utils/unit-size.d.ts.map +1 -0
  345. package/dist/types/utils.d.ts +5 -0
  346. package/dist/types/utils.d.ts.map +1 -0
  347. package/dist/types/view.d.ts +283 -31
  348. package/dist/types/view.d.ts.map +1 -1
  349. package/package.json +3 -2
  350. package/dist/cjs/abis/core/params-abi.js +0 -62
  351. package/dist/cjs/abis/core/params-abi.js.map +0 -1
  352. package/dist/cjs/apis/subgraph.js +0 -26
  353. package/dist/cjs/apis/subgraph.js.map +0 -1
  354. package/dist/cjs/constants/client.js +0 -14
  355. package/dist/cjs/constants/client.js.map +0 -1
  356. package/dist/cjs/constants/subgraph-url.js +0 -8
  357. package/dist/cjs/constants/subgraph-url.js.map +0 -1
  358. package/dist/cjs/signature.js +0 -146
  359. package/dist/cjs/signature.js.map +0 -1
  360. package/dist/cjs/utils/decorator.js +0 -13
  361. package/dist/cjs/utils/decorator.js.map +0 -1
  362. package/dist/cjs/utils/unit.js +0 -34
  363. package/dist/cjs/utils/unit.js.map +0 -1
  364. package/dist/esm/abis/core/params-abi.js +0 -59
  365. package/dist/esm/abis/core/params-abi.js.map +0 -1
  366. package/dist/esm/apis/subgraph.js +0 -22
  367. package/dist/esm/apis/subgraph.js.map +0 -1
  368. package/dist/esm/constants/client.js +0 -10
  369. package/dist/esm/constants/client.js.map +0 -1
  370. package/dist/esm/constants/subgraph-url.js +0 -5
  371. package/dist/esm/constants/subgraph-url.js.map +0 -1
  372. package/dist/esm/signature.js +0 -182
  373. package/dist/esm/signature.js.map +0 -1
  374. package/dist/esm/utils/decorator.js +0 -9
  375. package/dist/esm/utils/decorator.js.map +0 -1
  376. package/dist/esm/utils/unit.js +0 -30
  377. package/dist/esm/utils/unit.js.map +0 -1
  378. package/dist/types/abis/core/params-abi.d.ts +0 -21
  379. package/dist/types/abis/core/params-abi.d.ts.map +0 -1
  380. package/dist/types/apis/subgraph.d.ts +0 -3
  381. package/dist/types/apis/subgraph.d.ts.map +0 -1
  382. package/dist/types/constants/client.d.ts +0 -5
  383. package/dist/types/constants/client.d.ts.map +0 -1
  384. package/dist/types/constants/subgraph-url.d.ts +0 -5
  385. package/dist/types/constants/subgraph-url.d.ts.map +0 -1
  386. package/dist/types/signature.d.ts +0 -50
  387. package/dist/types/signature.d.ts.map +0 -1
  388. package/dist/types/utils/decorator.d.ts +0 -6
  389. package/dist/types/utils/decorator.d.ts.map +0 -1
  390. package/dist/types/utils/unit.d.ts +0 -4
  391. package/dist/types/utils/unit.d.ts.map +0 -1
package/dist/cjs/call.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cancelOrders = exports.cancelOrder = exports.claimOrders = exports.claimOrder = exports.marketOrder = exports.limitOrder = exports.openMarket = void 0;
3
+ exports.burnVCLOB = exports.mintVCLOB = exports.end = exports.register = exports.vote = exports.resumePool = exports.pausePool = exports.setStrategyConfig = exports.adjustOrderPrice = exports.refillOrder = exports.removeLiquidity = exports.addLiquidity = exports.openPool = exports.cancelOrders = exports.cancelOrder = exports.claimOrders = exports.claimOrder = exports.marketOrder = exports.limitOrder = exports.openMarket = void 0;
4
4
  const viem_1 = require("viem");
5
5
  const chain_1 = require("./constants/chain");
6
- const unit_1 = require("./utils/unit");
6
+ const unit_size_1 = require("./utils/unit-size");
7
7
  const controller_abi_1 = require("./abis/core/controller-abi");
8
8
  const time_1 = require("./utils/time");
9
9
  const build_transaction_1 = require("./utils/build-transaction");
@@ -15,60 +15,107 @@ const tick_1 = require("./utils/tick");
15
15
  const view_1 = require("./view");
16
16
  const book_id_1 = require("./utils/book-id");
17
17
  const approval_1 = require("./utils/approval");
18
- const decorator_1 = require("./utils/decorator");
19
18
  const order_1 = require("./utils/order");
20
- const decimals_1 = require("./utils/decimals");
21
19
  const bigint_1 = require("./utils/bigint");
22
- exports.openMarket = (0, decorator_1.decorator)(async ({ chainId, inputToken, outputToken, }) => {
23
- const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken]);
20
+ const pool_1 = require("./apis/pool");
21
+ const rebalancer_abi_1 = require("./abis/rebalancer/rebalancer-abi");
22
+ const pool_2 = require("./utils/pool");
23
+ const odos_1 = require("./apis/odos");
24
+ const minter_abi_1 = require("./abis/rebalancer/minter-abi");
25
+ const permit_1 = require("./constants/permit");
26
+ const math_1 = require("./utils/math");
27
+ const pool_key_1 = require("./utils/pool-key");
28
+ const operator_abi_1 = require("./abis/rebalancer/operator-abi");
29
+ const strategy_abi_1 = require("./abis/rebalancer/strategy-abi");
30
+ const election_governor_abi_1 = require("./abis/governance/election-governor-abi");
31
+ const vclob_abi_1 = require("./abis/governance/vclob-abi");
32
+ const openMarket = async ({ chainId, userAddress, inputToken, outputToken, options, }) => {
33
+ const publicClient = (0, viem_1.createPublicClient)({
34
+ chain: chain_1.CHAIN_MAP[chainId],
35
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
36
+ });
37
+ const [makerFeePolicy, takerFeePolicy] = [
38
+ options && options.makerFeePolicy
39
+ ? options.makerFeePolicy
40
+ : fee_1.MAKER_DEFAULT_POLICY[chainId],
41
+ options && options.takerFeePolicy
42
+ ? options.takerFeePolicy
43
+ : fee_1.TAKER_DEFAULT_POLICY[chainId],
44
+ ];
45
+ const market = await (0, market_1.fetchMarket)(publicClient, chainId, [inputToken, outputToken], makerFeePolicy, takerFeePolicy, makerFeePolicy, takerFeePolicy, !!(options && options.useSubgraph));
24
46
  const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
25
- if ((isBid && !market.bidBookOpen) || (!isBid && !market.askBookOpen)) {
26
- const unit = await (0, unit_1.calculateUnit)(chainId, isBid ? market.quote : market.base);
27
- return (0, build_transaction_1.buildTransaction)(chainId, {
47
+ if ((isBid && !market.bidBook.isOpened) ||
48
+ (!isBid && !market.askBook.isOpened)) {
49
+ const unitSize = await (0, unit_size_1.calculateUnitSize)(publicClient, chainId, isBid ? market.quote : market.base);
50
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
51
+ chain: chain_1.CHAIN_MAP[chainId],
28
52
  address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
53
+ account: userAddress,
29
54
  abi: controller_abi_1.CONTROLLER_ABI,
30
55
  functionName: 'open',
31
56
  args: [
32
57
  [
33
58
  {
34
59
  key: {
35
- base: inputToken,
36
- unit,
37
- quote: outputToken,
38
- makerPolicy: fee_1.MAKER_DEFAULT_POLICY.value,
60
+ base: outputToken,
61
+ unitSize,
62
+ quote: inputToken,
63
+ makerPolicy: makerFeePolicy.value,
39
64
  hooks: viem_1.zeroAddress,
40
- takerPolicy: fee_1.TAKER_DEFAULT_POLICY.value,
65
+ takerPolicy: takerFeePolicy.value,
41
66
  },
42
67
  hookData: viem_1.zeroHash,
43
68
  },
44
69
  ],
45
70
  (0, time_1.getDeadlineTimestampInSeconds)(),
46
71
  ],
47
- });
72
+ }, options?.gasLimit);
48
73
  }
49
74
  return undefined;
50
- });
51
- exports.limitOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, inputToken, outputToken, amount, price, options, }) => {
52
- const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken]);
75
+ };
76
+ exports.openMarket = openMarket;
77
+ const limitOrder = async ({ chainId, userAddress, inputToken, outputToken, amount, price, options, }) => {
78
+ const [roundingUpMakeBid, roundingDownMakeAsk, roundingDownTakenBid, roundingUpTakenAsk,] = [
79
+ options?.roundingUpMakeBid ? options.roundingUpMakeBid : false,
80
+ options?.roundingDownMakeAsk ? options.roundingDownMakeAsk : false,
81
+ options?.roundingDownTakenBid ? options.roundingDownTakenBid : false,
82
+ options?.roundingUpTakenAsk ? options.roundingUpTakenAsk : false,
83
+ ];
84
+ const publicClient = (0, viem_1.createPublicClient)({
85
+ chain: chain_1.CHAIN_MAP[chainId],
86
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
87
+ });
88
+ const [makerFeePolicy, takerFeePolicy] = [
89
+ options && options.makerFeePolicy
90
+ ? options.makerFeePolicy
91
+ : fee_1.MAKER_DEFAULT_POLICY[chainId],
92
+ options && options.takerFeePolicy
93
+ ? options.takerFeePolicy
94
+ : fee_1.TAKER_DEFAULT_POLICY[chainId],
95
+ ];
96
+ const market = await (0, market_1.fetchMarket)(publicClient, chainId, [inputToken, outputToken], makerFeePolicy, takerFeePolicy, makerFeePolicy, takerFeePolicy, !!(options && options.useSubgraph));
53
97
  const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
54
- if ((isBid && !market.bidBookOpen) || (!isBid && !market.askBookOpen)) {
98
+ const [inputCurrency, outputCurrency] = isBid
99
+ ? [market.quote, market.base]
100
+ : [market.base, market.quote];
101
+ if ((isBid && !market.bidBook.isOpened) ||
102
+ (!isBid && !market.askBook.isOpened)) {
55
103
  throw new Error(`
56
104
  Open the market before placing a limit order.
57
105
  import { openMarket } from '@clober/v2-sdk'
58
106
 
59
- const transaction = await openMarket(
60
- ${chainId},
61
- '${inputToken}',
62
- '${outputToken}',
63
- )
107
+ const transaction = await openMarket({
108
+ chainId: ${chainId},
109
+ inputToken: '${inputToken}',
110
+ outputToken: '${outputToken}',
111
+ })
64
112
  `);
65
113
  }
66
- const rawPrice = (0, prices_1.parsePrice)(Number(price), market.quote.decimals, market.base.decimals);
67
- const tick = isBid ? (0, tick_1.fromPrice)(rawPrice) : (0, tick_1.fromPrice)((0, tick_1.invertPrice)(rawPrice));
114
+ const { roundingDownTick, roundingUpTick } = (0, prices_1.parsePrice)(Number(price), market.quote.decimals, market.base.decimals);
68
115
  const tokensToSettle = [inputToken, outputToken].filter((address) => !(0, viem_1.isAddressEqual)(address, viem_1.zeroAddress));
69
- const quoteAmount = (0, viem_1.parseUnits)(amount, isBid ? market.quote.decimals : market.base.decimals);
70
- const [unit, { spendAmount, bookId }] = await Promise.all([
71
- (0, unit_1.calculateUnit)(chainId, isBid ? market.quote : market.base),
116
+ const quoteAmount = (0, viem_1.parseUnits)(amount, inputCurrency.decimals);
117
+ const [unitSize, { takenAmount, spentAmount, bookId, events }] = await Promise.all([
118
+ (0, unit_size_1.calculateUnitSize)(publicClient, chainId, inputCurrency),
72
119
  (0, view_1.getExpectedOutput)({
73
120
  chainId,
74
121
  inputToken,
@@ -81,24 +128,25 @@ exports.limitOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, i
81
128
  }),
82
129
  ]);
83
130
  const isETH = (0, viem_1.isAddressEqual)(inputToken, viem_1.zeroAddress);
84
- const permitParamsList = options?.signature && !isETH
85
- ? [
86
- {
87
- token: inputToken,
88
- permitAmount: quoteAmount,
89
- signature: options.signature,
90
- },
91
- ]
92
- : [];
93
131
  const makeParam = {
94
- id: (0, book_id_1.toBookId)(inputToken, outputToken, unit),
95
- tick: Number(tick),
132
+ id: (0, book_id_1.toBookId)(inputToken, outputToken, options && options.makerFeePolicy
133
+ ? options.makerFeePolicy
134
+ : fee_1.MAKER_DEFAULT_POLICY[chainId], options && options.takerFeePolicy
135
+ ? options.takerFeePolicy
136
+ : fee_1.TAKER_DEFAULT_POLICY[chainId], unitSize),
137
+ tick: options?.makeTick
138
+ ? Number(options.makeTick)
139
+ : Number(isBid
140
+ ? roundingUpMakeBid
141
+ ? roundingUpTick
142
+ : roundingDownTick
143
+ : (0, tick_1.invertTick)(roundingDownMakeAsk ? roundingDownTick : roundingUpTick)),
96
144
  quoteAmount,
97
145
  hookData: viem_1.zeroHash,
98
146
  };
99
- if (options?.postOnly === true || spendAmount === '0') {
147
+ if (options?.postOnly === true || spentAmount === '0') {
100
148
  return {
101
- transaction: await (0, build_transaction_1.buildTransaction)(chainId, {
149
+ transaction: await (0, build_transaction_1.buildTransaction)(publicClient, {
102
150
  chain: chain_1.CHAIN_MAP[chainId],
103
151
  account: userAddress,
104
152
  address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
@@ -107,28 +155,38 @@ exports.limitOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, i
107
155
  args: [
108
156
  [makeParam],
109
157
  tokensToSettle,
110
- permitParamsList,
158
+ options?.erc20PermitParam ? [options.erc20PermitParam] : [],
111
159
  (0, time_1.getDeadlineTimestampInSeconds)(),
112
160
  ],
113
161
  value: isETH ? quoteAmount : 0n,
114
- }),
162
+ }, options?.gasLimit),
115
163
  result: {
116
164
  make: {
117
- amount: (0, viem_1.formatUnits)(quoteAmount, isBid ? market.quote.decimals : market.base.decimals),
118
- currency: isBid ? market.quote : market.base,
165
+ amount: (0, viem_1.formatUnits)(quoteAmount, inputCurrency.decimals),
166
+ currency: inputCurrency,
167
+ direction: 'in',
168
+ price: (0, prices_1.formatPrice)(isBid
169
+ ? (0, tick_1.toPrice)(BigInt(makeParam.tick))
170
+ : (0, tick_1.toPrice)((0, tick_1.invertTick)(BigInt(makeParam.tick))), market.quote.decimals, market.base.decimals),
171
+ },
172
+ spent: {
173
+ amount: '0',
174
+ currency: inputCurrency,
119
175
  direction: 'in',
176
+ events: [],
120
177
  },
121
- take: {
178
+ taken: {
122
179
  amount: '0',
123
- currency: isBid ? market.base : market.quote,
180
+ currency: outputCurrency,
124
181
  direction: 'out',
182
+ events: [],
125
183
  },
126
184
  },
127
185
  };
128
186
  }
129
187
  else {
130
188
  return {
131
- transaction: await (0, build_transaction_1.buildTransaction)(chainId, {
189
+ transaction: await (0, build_transaction_1.buildTransaction)(publicClient, {
132
190
  chain: chain_1.CHAIN_MAP[chainId],
133
191
  account: userAddress,
134
192
  address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
@@ -139,7 +197,15 @@ exports.limitOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, i
139
197
  {
140
198
  takeBookId: bookId,
141
199
  makeBookId: makeParam.id,
142
- limitPrice: isBid ? (0, tick_1.invertPrice)(rawPrice) : rawPrice,
200
+ limitPrice: options?.takeLimitTick
201
+ ? (0, tick_1.toPrice)(options.takeLimitTick)
202
+ : (0, tick_1.toPrice)(isBid
203
+ ? (0, tick_1.invertTick)(roundingUpTakenAsk
204
+ ? roundingUpTick
205
+ : roundingDownTick)
206
+ : roundingDownTakenBid
207
+ ? roundingDownTick
208
+ : roundingUpTick),
143
209
  tick: makeParam.tick,
144
210
  quoteAmount,
145
211
  takeHookData: viem_1.zeroHash,
@@ -147,30 +213,69 @@ exports.limitOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, i
147
213
  },
148
214
  ],
149
215
  tokensToSettle,
150
- permitParamsList,
216
+ options?.erc20PermitParam ? [options.erc20PermitParam] : [],
151
217
  (0, time_1.getDeadlineTimestampInSeconds)(),
152
218
  ],
153
219
  value: isETH ? quoteAmount : 0n,
154
- }),
220
+ }, options?.gasLimit),
155
221
  result: {
156
222
  make: {
157
- amount: (0, viem_1.formatUnits)(quoteAmount, isBid ? market.quote.decimals : market.base.decimals),
158
- currency: isBid ? market.quote : market.base,
223
+ amount: (0, viem_1.formatUnits)(quoteAmount - (0, viem_1.parseUnits)(spentAmount, inputCurrency.decimals), inputCurrency.decimals),
224
+ currency: inputCurrency,
159
225
  direction: 'in',
226
+ price: (0, prices_1.formatPrice)(isBid
227
+ ? (0, tick_1.toPrice)(BigInt(makeParam.tick))
228
+ : (0, tick_1.toPrice)((0, tick_1.invertTick)(BigInt(makeParam.tick))), market.quote.decimals, market.base.decimals),
160
229
  },
161
- take: {
162
- amount: spendAmount,
163
- currency: isBid ? market.base : market.quote,
230
+ spent: {
231
+ amount: spentAmount,
232
+ currency: inputCurrency,
233
+ direction: 'in',
234
+ events: events.map(({ price, spentAmount }) => ({
235
+ price,
236
+ amount: spentAmount,
237
+ })),
238
+ },
239
+ taken: {
240
+ amount: takenAmount,
241
+ currency: outputCurrency,
164
242
  direction: 'out',
243
+ events: events.map(({ price, takenAmount }) => ({
244
+ price,
245
+ amount: takenAmount,
246
+ })),
165
247
  },
166
248
  },
167
249
  };
168
250
  }
169
- });
170
- exports.marketOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, inputToken, outputToken, amount, options, }) => {
171
- const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken]);
172
- const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
173
- if ((isBid && !market.bidBookOpen) || (!isBid && !market.askBookOpen)) {
251
+ };
252
+ exports.limitOrder = limitOrder;
253
+ const marketOrder = async ({ chainId, userAddress, inputToken, outputToken, amountIn, amountOut, options, }) => {
254
+ if (!amountIn && !amountOut) {
255
+ throw new Error('Either amountIn or amountOut must be provided');
256
+ }
257
+ else if (amountIn && amountOut) {
258
+ throw new Error('Only one of amountIn or amountOut can be provided');
259
+ }
260
+ const publicClient = (0, viem_1.createPublicClient)({
261
+ chain: chain_1.CHAIN_MAP[chainId],
262
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
263
+ });
264
+ const [makerFeePolicy, takerFeePolicy] = [
265
+ options && options.makerFeePolicy
266
+ ? options.makerFeePolicy
267
+ : fee_1.MAKER_DEFAULT_POLICY[chainId],
268
+ options && options.takerFeePolicy
269
+ ? options.takerFeePolicy
270
+ : fee_1.TAKER_DEFAULT_POLICY[chainId],
271
+ ];
272
+ const market = await (0, market_1.fetchMarket)(publicClient, chainId, [inputToken, outputToken], makerFeePolicy, takerFeePolicy, makerFeePolicy, takerFeePolicy, !!(options && options.useSubgraph));
273
+ const isTakingBid = (0, viem_1.isAddressEqual)(market.base.address, inputToken);
274
+ const [inputCurrency, outputCurrency] = isTakingBid
275
+ ? [market.base, market.quote]
276
+ : [market.quote, market.base];
277
+ if ((isTakingBid && !market.bidBook.isOpened) ||
278
+ (!isTakingBid && !market.askBook.isOpened)) {
174
279
  throw new Error(`
175
280
  Open the market before placing a market order.
176
281
  import { openMarket } from '@clober/v2-sdk'
@@ -182,51 +287,135 @@ exports.marketOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress,
182
287
  )
183
288
  `);
184
289
  }
185
- const rawLimitPrice = (0, prices_1.parsePrice)(Number(options?.limitPrice ?? '0'), market.quote.decimals, market.base.decimals);
186
290
  const tokensToSettle = [inputToken, outputToken].filter((address) => !(0, viem_1.isAddressEqual)(address, viem_1.zeroAddress));
187
- const quoteAmount = (0, viem_1.parseUnits)(amount, isBid ? market.quote.decimals : market.base.decimals);
188
- const { bookId, takenAmount } = await (0, view_1.getExpectedOutput)({
189
- chainId,
190
- inputToken,
191
- outputToken,
192
- amountIn: amount,
193
- options: {
194
- ...options,
195
- },
196
- });
197
291
  const isETH = (0, viem_1.isAddressEqual)(inputToken, viem_1.zeroAddress);
198
- const permitParamsList = options?.signature && !isETH
199
- ? [
200
- {
201
- token: inputToken,
202
- permitAmount: quoteAmount,
203
- signature: options.signature,
292
+ if (amountIn && !amountOut) {
293
+ const { bookId, takenAmount, spentAmount, events } = await (0, view_1.getExpectedOutput)({
294
+ chainId,
295
+ inputToken,
296
+ outputToken,
297
+ amountIn,
298
+ options: {
299
+ ...options,
204
300
  },
205
- ]
206
- : [];
207
- return (0, build_transaction_1.buildTransaction)(chainId, {
208
- chain: chain_1.CHAIN_MAP[chainId],
209
- account: userAddress,
210
- address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
211
- abi: controller_abi_1.CONTROLLER_ABI,
212
- functionName: 'take',
213
- args: [
214
- [
215
- {
216
- id: bookId,
217
- limitPrice: isBid ? (0, tick_1.invertPrice)(rawLimitPrice) : rawLimitPrice,
218
- quoteAmount: takenAmount,
219
- hookData: viem_1.zeroHash,
301
+ });
302
+ const baseAmount = (0, viem_1.parseUnits)(amountIn, inputCurrency.decimals);
303
+ return {
304
+ transaction: await (0, build_transaction_1.buildTransaction)(publicClient, {
305
+ chain: chain_1.CHAIN_MAP[chainId],
306
+ account: userAddress,
307
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
308
+ abi: controller_abi_1.CONTROLLER_ABI,
309
+ functionName: 'spend',
310
+ args: [
311
+ [
312
+ {
313
+ id: bookId,
314
+ limitPrice: 0n,
315
+ baseAmount,
316
+ minQuoteAmount: options?.slippage
317
+ ? (0, bigint_1.applyPercent)((0, viem_1.parseUnits)(takenAmount, outputCurrency.decimals), 100 - options.slippage)
318
+ : 0n,
319
+ hookData: viem_1.zeroHash,
320
+ },
321
+ ],
322
+ tokensToSettle,
323
+ options?.erc20PermitParam ? [options.erc20PermitParam] : [],
324
+ (0, time_1.getDeadlineTimestampInSeconds)(),
325
+ ],
326
+ value: isETH ? baseAmount : 0n,
327
+ }, options?.gasLimit),
328
+ result: {
329
+ spent: {
330
+ amount: spentAmount,
331
+ currency: inputCurrency,
332
+ direction: 'in',
333
+ events: events.map(({ price, spentAmount }) => ({
334
+ price,
335
+ amount: spentAmount,
336
+ })),
220
337
  },
221
- ],
222
- tokensToSettle,
223
- permitParamsList,
224
- (0, time_1.getDeadlineTimestampInSeconds)(),
225
- ],
226
- value: isETH ? quoteAmount : 0n,
227
- });
228
- });
229
- exports.claimOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, id, options, }) => {
338
+ taken: {
339
+ amount: takenAmount,
340
+ currency: outputCurrency,
341
+ direction: 'out',
342
+ events: events.map(({ price, takenAmount }) => ({
343
+ price,
344
+ amount: takenAmount,
345
+ })),
346
+ },
347
+ },
348
+ };
349
+ }
350
+ else if (!amountIn && amountOut) {
351
+ const { bookId, spentAmount, takenAmount, events } = await (0, view_1.getExpectedInput)({
352
+ chainId,
353
+ inputToken,
354
+ outputToken,
355
+ amountOut,
356
+ options: {
357
+ ...options,
358
+ },
359
+ });
360
+ const quoteAmount = (0, viem_1.parseUnits)(amountOut, outputCurrency.decimals);
361
+ const baseAmount = (0, viem_1.parseUnits)(spentAmount, inputCurrency.decimals);
362
+ const maxBaseAmount = options?.erc20PermitParam?.permitAmount ??
363
+ (options?.slippage
364
+ ? (0, bigint_1.applyPercent)(baseAmount, 100 + options.slippage)
365
+ : isETH
366
+ ? baseAmount
367
+ : 2n ** 256n - 1n);
368
+ return {
369
+ transaction: await (0, build_transaction_1.buildTransaction)(publicClient, {
370
+ chain: chain_1.CHAIN_MAP[chainId],
371
+ account: userAddress,
372
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
373
+ abi: controller_abi_1.CONTROLLER_ABI,
374
+ functionName: 'take',
375
+ args: [
376
+ [
377
+ {
378
+ id: bookId,
379
+ limitPrice: 0n,
380
+ quoteAmount,
381
+ maxBaseAmount,
382
+ hookData: viem_1.zeroHash,
383
+ },
384
+ ],
385
+ tokensToSettle,
386
+ options?.erc20PermitParam ? [options.erc20PermitParam] : [],
387
+ (0, time_1.getDeadlineTimestampInSeconds)(),
388
+ ],
389
+ value: isETH ? maxBaseAmount : 0n,
390
+ }, options?.gasLimit),
391
+ result: {
392
+ spent: {
393
+ amount: spentAmount,
394
+ currency: inputCurrency,
395
+ direction: 'in',
396
+ events: events.map(({ price, spentAmount }) => ({
397
+ price,
398
+ amount: spentAmount,
399
+ })),
400
+ },
401
+ taken: {
402
+ amount: takenAmount,
403
+ currency: outputCurrency,
404
+ direction: 'out',
405
+ events: events.map(({ price, takenAmount }) => ({
406
+ price,
407
+ amount: takenAmount,
408
+ })),
409
+ },
410
+ },
411
+ };
412
+ }
413
+ else {
414
+ throw new Error('Either amountIn or amountOut must be provided');
415
+ }
416
+ };
417
+ exports.marketOrder = marketOrder;
418
+ const claimOrder = async ({ chainId, userAddress, id, options, }) => {
230
419
  const { transaction, result } = await (0, exports.claimOrders)({
231
420
  chainId,
232
421
  userAddress,
@@ -237,62 +426,62 @@ exports.claimOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, i
237
426
  transaction,
238
427
  result: result[0],
239
428
  };
240
- });
241
- exports.claimOrders = (0, decorator_1.decorator)(async ({ chainId, userAddress, ids, }) => {
242
- const isApprovedForAll = await (0, approval_1.fetchIsApprovedForAll)(chainId, userAddress);
429
+ };
430
+ exports.claimOrder = claimOrder;
431
+ const claimOrders = async ({ chainId, userAddress, ids, options, }) => {
432
+ const publicClient = (0, viem_1.createPublicClient)({
433
+ chain: chain_1.CHAIN_MAP[chainId],
434
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
435
+ });
436
+ const isApprovedForAll = await (0, approval_1.fetchIsApprovedForAll)(publicClient, chainId, userAddress);
243
437
  if (!isApprovedForAll) {
244
438
  throw new Error(`
245
439
  Set ApprovalForAll before calling this function.
246
440
  import { setApprovalOfOpenOrdersForAll } from '@clober/v2-sdk'
247
441
 
248
- const hash = await setApprovalOfOpenOrdersForAll(
249
- ${chainId},
250
- privateKeyToAccount('0x...')
251
- )
442
+ const hash = await setApprovalOfOpenOrdersForAll({
443
+ chainId: ${chainId},
444
+ walletClient, // use viem
445
+ })
252
446
  `);
253
447
  }
254
- const orders = (await (0, order_1.fetchOrders)(chainId, ids.map((id) => BigInt(id)))).filter((order) => (0, viem_1.isAddressEqual)(order.owner, userAddress) && order.claimable > 0n);
448
+ const orders = (await (0, order_1.fetchOnChainOrders)(publicClient, chainId, ids.map((id) => BigInt(id)), options && options.makerFeePolicy
449
+ ? options.makerFeePolicy
450
+ : fee_1.MAKER_DEFAULT_POLICY[chainId], !!(options && options.useSubgraph))).filter((order) => (0, viem_1.isAddressEqual)(order.user, userAddress) && order.claimable.value !== '0');
255
451
  const tokensToSettle = orders
256
- .map((order) => [order.baseCurrency.address, order.quoteCurrency.address])
452
+ .map((order) => [order.inputCurrency.address, order.outputCurrency.address])
257
453
  .flat()
258
454
  .filter((address, index, self) => self.findIndex((c) => (0, viem_1.isAddressEqual)(c, address)) === index)
259
455
  .filter((address) => !(0, viem_1.isAddressEqual)(address, viem_1.zeroAddress));
260
456
  return {
261
- transaction: await (0, build_transaction_1.buildTransaction)(chainId, {
457
+ transaction: await (0, build_transaction_1.buildTransaction)(publicClient, {
262
458
  chain: chain_1.CHAIN_MAP[chainId],
263
459
  account: userAddress,
264
460
  address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
265
461
  abi: controller_abi_1.CONTROLLER_ABI,
266
462
  functionName: 'claim',
267
463
  args: [
268
- orders.map(({ orderId }) => ({
269
- id: orderId,
464
+ orders.map(({ id }) => ({
465
+ id,
270
466
  hookData: viem_1.zeroHash,
271
467
  })),
272
468
  tokensToSettle,
273
469
  [],
274
470
  (0, time_1.getDeadlineTimestampInSeconds)(),
275
471
  ],
276
- }),
277
- result: orders
278
- .map((order) => {
279
- const amount = (0, decimals_1.quoteToBase)(order.tick, order.unit * order.claimable, false);
280
- return {
281
- currency: order.baseCurrency,
282
- amount: (0, viem_1.formatUnits)(amount, order.baseCurrency.decimals),
283
- };
284
- })
285
- .reduce((acc, { currency, amount }) => {
472
+ }, options?.gasLimit),
473
+ result: orders.reduce((acc, { claimable: { currency, value } }) => {
286
474
  const index = acc.findIndex((c) => (0, viem_1.isAddressEqual)(c.currency.address, currency.address));
287
475
  if (index === -1) {
288
- return [...acc, { currency, amount, direction: 'out' }];
476
+ return [...acc, { currency, amount: value, direction: 'out' }];
289
477
  }
290
- acc[index].amount = (Number(acc[index].amount) + Number(amount)).toString();
478
+ acc[index].amount = (Number(acc[index].amount) + Number(value)).toString();
291
479
  return acc;
292
480
  }, []),
293
481
  };
294
- });
295
- exports.cancelOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress, id, options, }) => {
482
+ };
483
+ exports.claimOrders = claimOrders;
484
+ const cancelOrder = async ({ chainId, userAddress, id, options, }) => {
296
485
  const { transaction, result } = await (0, exports.cancelOrders)({
297
486
  chainId,
298
487
  userAddress,
@@ -303,36 +492,43 @@ exports.cancelOrder = (0, decorator_1.decorator)(async ({ chainId, userAddress,
303
492
  transaction,
304
493
  result: result[0],
305
494
  };
306
- });
307
- exports.cancelOrders = (0, decorator_1.decorator)(async ({ chainId, userAddress, ids, }) => {
308
- const isApprovedForAll = await (0, approval_1.fetchIsApprovedForAll)(chainId, userAddress);
495
+ };
496
+ exports.cancelOrder = cancelOrder;
497
+ const cancelOrders = async ({ chainId, userAddress, ids, options, }) => {
498
+ const publicClient = (0, viem_1.createPublicClient)({
499
+ chain: chain_1.CHAIN_MAP[chainId],
500
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
501
+ });
502
+ const isApprovedForAll = await (0, approval_1.fetchIsApprovedForAll)(publicClient, chainId, userAddress);
309
503
  if (!isApprovedForAll) {
310
504
  throw new Error(`
311
505
  Set ApprovalForAll before calling this function.
312
506
  import { setApprovalOfOpenOrdersForAll } from '@clober/v2-sdk'
313
507
 
314
- const hash = await setApprovalOfOpenOrdersForAll(
315
- ${chainId},
316
- privateKeyToAccount('0x...')
317
- )
508
+ const hash = await setApprovalOfOpenOrdersForAll({
509
+ chainId: ${chainId},
510
+ walletClient, // use viem
511
+ })
318
512
  `);
319
513
  }
320
- const orders = (await (0, order_1.fetchOrders)(chainId, ids.map((id) => BigInt(id)))).filter((order) => (0, viem_1.isAddressEqual)(order.owner, userAddress) && order.open > 0n);
514
+ const orders = (await (0, order_1.fetchOnChainOrders)(publicClient, chainId, ids.map((id) => BigInt(id)), options && options.makerFeePolicy
515
+ ? options.makerFeePolicy
516
+ : fee_1.MAKER_DEFAULT_POLICY[chainId], !!(options && options.useSubgraph))).filter((order) => (0, viem_1.isAddressEqual)(order.user, userAddress) && order.cancelable.value !== '0');
321
517
  const tokensToSettle = orders
322
- .map((order) => [order.baseCurrency.address, order.quoteCurrency.address])
518
+ .map((order) => [order.inputCurrency.address, order.outputCurrency.address])
323
519
  .flat()
324
520
  .filter((address, index, self) => self.findIndex((c) => (0, viem_1.isAddressEqual)(c, address)) === index)
325
521
  .filter((address) => !(0, viem_1.isAddressEqual)(address, viem_1.zeroAddress));
326
522
  return {
327
- transaction: await (0, build_transaction_1.buildTransaction)(chainId, {
523
+ transaction: await (0, build_transaction_1.buildTransaction)(publicClient, {
328
524
  chain: chain_1.CHAIN_MAP[chainId],
329
525
  account: userAddress,
330
526
  address: addresses_1.CONTRACT_ADDRESSES[chainId].Controller,
331
527
  abi: controller_abi_1.CONTROLLER_ABI,
332
528
  functionName: 'cancel',
333
529
  args: [
334
- orders.map(({ orderId }) => ({
335
- id: orderId,
530
+ orders.map(({ id }) => ({
531
+ id,
336
532
  leftQuoteAmount: 0n,
337
533
  hookData: viem_1.zeroHash,
338
534
  })),
@@ -340,25 +536,616 @@ exports.cancelOrders = (0, decorator_1.decorator)(async ({ chainId, userAddress,
340
536
  [],
341
537
  (0, time_1.getDeadlineTimestampInSeconds)(),
342
538
  ],
343
- }),
344
- result: orders
345
- .map((order) => {
346
- const amount = (0, bigint_1.applyPercent)(order.unit * order.open, 100 +
347
- (Number(fee_1.MAKER_DEFAULT_POLICY.rate) * 100) /
348
- Number(fee_1.MAKER_DEFAULT_POLICY.RATE_PRECISION), 6);
349
- return {
350
- currency: order.quoteCurrency,
351
- amount: (0, viem_1.formatUnits)(amount, order.quoteCurrency.decimals),
352
- };
353
- })
354
- .reduce((acc, { currency, amount }) => {
539
+ }, options?.gasLimit),
540
+ result: orders.reduce((acc, { cancelable: { currency, value } }) => {
355
541
  const index = acc.findIndex((c) => (0, viem_1.isAddressEqual)(c.currency.address, currency.address));
356
542
  if (index === -1) {
357
- return [...acc, { currency, amount, direction: 'out' }];
543
+ return [...acc, { currency, amount: value, direction: 'out' }];
358
544
  }
359
- acc[index].amount = (Number(acc[index].amount) + Number(amount)).toString();
545
+ acc[index].amount = (Number(acc[index].amount) + Number(value)).toString();
360
546
  return acc;
361
547
  }, []),
362
548
  };
363
- });
549
+ };
550
+ exports.cancelOrders = cancelOrders;
551
+ const openPool = async ({ chainId, userAddress, tokenA, tokenB, salt, options, }) => {
552
+ const publicClient = (0, viem_1.createPublicClient)({
553
+ chain: chain_1.CHAIN_MAP[chainId],
554
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
555
+ });
556
+ const pool = await (0, pool_1.fetchPool)(publicClient, chainId, [tokenA, tokenB], salt, !!(options && options.useSubgraph));
557
+ if (!pool.isOpened) {
558
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
559
+ chain: chain_1.CHAIN_MAP[chainId],
560
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Rebalancer,
561
+ account: userAddress,
562
+ abi: rebalancer_abi_1.REBALANCER_ABI,
563
+ functionName: 'open',
564
+ args: [
565
+ {
566
+ base: pool.market.bidBook.base.address,
567
+ unitSize: pool.market.bidBook.unitSize,
568
+ quote: pool.market.bidBook.quote.address,
569
+ makerPolicy: options && options.makerPolicy
570
+ ? options.makerPolicy
571
+ : fee_1.MAKER_DEFAULT_POLICY[chainId].value,
572
+ hooks: viem_1.zeroAddress,
573
+ takerPolicy: options && options.takerPolicy
574
+ ? options.takerPolicy
575
+ : fee_1.TAKER_DEFAULT_POLICY[chainId].value,
576
+ },
577
+ {
578
+ base: pool.market.askBook.base.address,
579
+ unitSize: pool.market.askBook.unitSize,
580
+ quote: pool.market.askBook.quote.address,
581
+ makerPolicy: options && options.makerPolicy
582
+ ? options.makerPolicy
583
+ : fee_1.MAKER_DEFAULT_POLICY[chainId].value,
584
+ hooks: viem_1.zeroAddress,
585
+ takerPolicy: options && options.takerPolicy
586
+ ? options.takerPolicy
587
+ : fee_1.TAKER_DEFAULT_POLICY[chainId].value,
588
+ },
589
+ (0, pool_key_1.toBytes32)(salt),
590
+ addresses_1.CONTRACT_ADDRESSES[chainId].Strategy,
591
+ ],
592
+ }, options?.gasLimit);
593
+ }
594
+ return undefined;
595
+ };
596
+ exports.openPool = openPool;
597
+ const addLiquidity = async ({ chainId, userAddress, token0, token1, salt, amount0, amount1, options, }) => {
598
+ if ((0, viem_1.isAddressEqual)(token0, viem_1.zeroAddress) ||
599
+ (0, viem_1.isAddressEqual)(token1, viem_1.zeroAddress)) {
600
+ throw new Error('ETH is not supported for adding liquidity');
601
+ }
602
+ const publicClient = (0, viem_1.createPublicClient)({
603
+ chain: chain_1.CHAIN_MAP[chainId],
604
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
605
+ });
606
+ const pool = await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph));
607
+ if (!pool.isOpened) {
608
+ throw new Error(`
609
+ Open the pool before adding liquidity.
610
+ import { openPool } from '@clober/v2-sdk'
611
+
612
+ const transaction = await openPool({
613
+ chainId: ${chainId},
614
+ tokenA: '${token0}',
615
+ tokenB: '${token1}',
616
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
617
+ })
618
+ `);
619
+ }
620
+ const [amountAOrigin, amountBOrigin] = (0, viem_1.isAddressEqual)(pool.currencyA.address, (0, viem_1.getAddress)(token0))
621
+ ? [
622
+ (0, viem_1.parseUnits)(amount0 ?? '0', pool.currencyA.decimals),
623
+ (0, viem_1.parseUnits)(amount1 ?? '0', pool.currencyB.decimals),
624
+ ]
625
+ : [
626
+ (0, viem_1.parseUnits)(amount1 ?? '0', pool.currencyA.decimals),
627
+ (0, viem_1.parseUnits)(amount0 ?? '0', pool.currencyB.decimals),
628
+ ];
629
+ let [amountA, amountB] = [amountAOrigin, amountBOrigin];
630
+ const tokenAPermitParams = (0, viem_1.isAddressEqual)(pool.currencyA.address, (0, viem_1.getAddress)(token0))
631
+ ? options?.token0PermitParams ?? permit_1.emptyERC20PermitParams
632
+ : options?.token1PermitParams ?? permit_1.emptyERC20PermitParams;
633
+ const tokenBPermitParams = (0, viem_1.isAddressEqual)(pool.currencyA.address, (0, viem_1.getAddress)(token0))
634
+ ? options?.token1PermitParams ?? permit_1.emptyERC20PermitParams
635
+ : options?.token0PermitParams ?? permit_1.emptyERC20PermitParams;
636
+ let disableSwap = !!(options && options.disableSwap);
637
+ if (pool.totalSupply === 0n ||
638
+ (pool.liquidityA === 0n && pool.liquidityB === 0n)) {
639
+ disableSwap = true;
640
+ }
641
+ const slippageLimitPercent = options?.slippage ?? 2;
642
+ const swapParams = {
643
+ inCurrency: viem_1.zeroAddress,
644
+ amount: 0n,
645
+ data: '0x',
646
+ };
647
+ if (!disableSwap) {
648
+ const currencyBPerCurrencyA = options?.testnetPrice
649
+ ? (0, viem_1.isAddressEqual)((0, view_1.getQuoteToken)({
650
+ chainId,
651
+ token0,
652
+ token1,
653
+ }), pool.currencyA.address)
654
+ ? 1 / Number(options.testnetPrice)
655
+ : Number(options.testnetPrice)
656
+ : undefined;
657
+ const swapAmountA = (0, viem_1.parseUnits)('1', pool.currencyA.decimals);
658
+ const { amountOut: swapAmountB } = await (0, odos_1.fetchQuote)({
659
+ chainId,
660
+ amountIn: swapAmountA,
661
+ tokenIn: pool.currencyA,
662
+ tokenOut: pool.currencyB,
663
+ slippageLimitPercent: 20,
664
+ userAddress: addresses_1.CONTRACT_ADDRESSES[chainId].Minter,
665
+ testnetPrice: currencyBPerCurrencyA,
666
+ });
667
+ const { deltaA, deltaB } = (0, pool_2.getIdealDelta)(amountA, amountB, pool.liquidityA, pool.liquidityB, swapAmountA, swapAmountB);
668
+ if (deltaA < 0n) {
669
+ swapParams.inCurrency = pool.currencyA.address;
670
+ swapParams.amount = -deltaA;
671
+ const { amountOut: actualDeltaB, data: calldata } = await (0, odos_1.fetchCallData)({
672
+ chainId,
673
+ amountIn: swapParams.amount,
674
+ tokenIn: pool.currencyA,
675
+ tokenOut: pool.currencyB,
676
+ slippageLimitPercent,
677
+ userAddress: addresses_1.CONTRACT_ADDRESSES[chainId].Minter,
678
+ testnetPrice: currencyBPerCurrencyA,
679
+ });
680
+ swapParams.data = calldata;
681
+ amountA += deltaA;
682
+ amountB += actualDeltaB;
683
+ }
684
+ else if (deltaB < 0n) {
685
+ swapParams.inCurrency = pool.currencyB.address;
686
+ swapParams.amount = -deltaB;
687
+ const { amountOut: actualDeltaA, data: calldata } = await (0, odos_1.fetchCallData)({
688
+ chainId,
689
+ amountIn: swapParams.amount,
690
+ tokenIn: pool.currencyB,
691
+ tokenOut: pool.currencyA,
692
+ slippageLimitPercent,
693
+ userAddress: addresses_1.CONTRACT_ADDRESSES[chainId].Minter,
694
+ testnetPrice: currencyBPerCurrencyA
695
+ ? 1 / currencyBPerCurrencyA
696
+ : undefined,
697
+ });
698
+ swapParams.data = calldata;
699
+ amountA += actualDeltaA;
700
+ amountB += deltaB;
701
+ }
702
+ }
703
+ const { mintAmount, inAmountA, inAmountB } = (0, pool_2.getExpectedMintResult)(pool.totalSupply, pool.liquidityA, pool.liquidityB, amountA, amountB, pool.currencyA, pool.currencyB);
704
+ if (mintAmount === 0n) {
705
+ return {
706
+ transaction: undefined,
707
+ result: {
708
+ currencyA: {
709
+ currency: pool.currencyA,
710
+ amount: '0',
711
+ direction: 'in',
712
+ },
713
+ currencyB: {
714
+ currency: pool.currencyB,
715
+ amount: '0',
716
+ direction: 'in',
717
+ },
718
+ lpCurrency: {
719
+ currency: pool.currencyLp,
720
+ amount: '0',
721
+ direction: 'out',
722
+ },
723
+ },
724
+ };
725
+ }
726
+ const minMintAmount = (0, bigint_1.applyPercent)(mintAmount, 100 - slippageLimitPercent);
727
+ const transaction = await (0, build_transaction_1.buildTransaction)(publicClient, {
728
+ chain: chain_1.CHAIN_MAP[chainId],
729
+ account: userAddress,
730
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Minter,
731
+ abi: minter_abi_1.MINTER_ABI,
732
+ functionName: 'mint',
733
+ args: [
734
+ pool.key,
735
+ amountAOrigin,
736
+ amountBOrigin,
737
+ minMintAmount,
738
+ {
739
+ permitAmount: tokenAPermitParams.permitAmount,
740
+ signature: tokenAPermitParams.signature,
741
+ },
742
+ {
743
+ permitAmount: tokenBPermitParams.permitAmount,
744
+ signature: tokenBPermitParams.signature,
745
+ },
746
+ swapParams,
747
+ ],
748
+ }, options?.gasLimit);
749
+ const currencyARefund = amountA - inAmountA;
750
+ const currencyBRefund = amountB - inAmountB;
751
+ const currencyAResultAmount = amountAOrigin - currencyARefund;
752
+ const currencyBResultAmount = amountBOrigin - currencyBRefund;
753
+ return {
754
+ transaction,
755
+ result: {
756
+ currencyA: {
757
+ currency: pool.currencyA,
758
+ amount: (0, viem_1.formatUnits)((0, math_1.abs)(currencyAResultAmount), pool.currencyA.decimals),
759
+ direction: currencyAResultAmount >= 0 ? 'in' : 'out',
760
+ },
761
+ currencyB: {
762
+ currency: pool.currencyB,
763
+ amount: (0, viem_1.formatUnits)((0, math_1.abs)(currencyBResultAmount), pool.currencyB.decimals),
764
+ direction: currencyBResultAmount >= 0 ? 'in' : 'out',
765
+ },
766
+ lpCurrency: {
767
+ currency: pool.currencyLp,
768
+ amount: (0, viem_1.formatUnits)(mintAmount, pool.currencyLp.decimals),
769
+ direction: 'out',
770
+ },
771
+ },
772
+ };
773
+ };
774
+ exports.addLiquidity = addLiquidity;
775
+ const removeLiquidity = async ({ chainId, userAddress, token0, token1, salt, amount, options, }) => {
776
+ const publicClient = (0, viem_1.createPublicClient)({
777
+ chain: chain_1.CHAIN_MAP[chainId],
778
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
779
+ });
780
+ const pool = await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph));
781
+ if (!pool.isOpened) {
782
+ throw new Error(`
783
+ Open the pool before removing liquidity.
784
+ import { openPool } from '@clober/v2-sdk'
785
+
786
+ const transaction = await openPool({
787
+ chainId: ${chainId},
788
+ tokenA: '${token0}',
789
+ tokenB: '${token1}',
790
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
791
+ })
792
+ `);
793
+ }
794
+ const burnAmount = (0, viem_1.parseUnits)(amount, pool.currencyLp.decimals);
795
+ const slippageLimitPercent = options?.slippage ?? 2;
796
+ const withdrawAmountA = (burnAmount * pool.liquidityA) / pool.totalSupply;
797
+ const withdrawAmountB = (burnAmount * pool.liquidityB) / pool.totalSupply;
798
+ const minWithdrawAmountA = (0, bigint_1.applyPercent)(withdrawAmountA, 100 - slippageLimitPercent);
799
+ const minWithdrawAmountB = (0, bigint_1.applyPercent)(withdrawAmountB, 100 - slippageLimitPercent);
800
+ if (burnAmount === 0n) {
801
+ return {
802
+ transaction: undefined,
803
+ result: {
804
+ currencyA: {
805
+ currency: pool.currencyA,
806
+ amount: '0',
807
+ direction: 'out',
808
+ },
809
+ currencyB: {
810
+ currency: pool.currencyB,
811
+ amount: '0',
812
+ direction: 'out',
813
+ },
814
+ lpCurrency: {
815
+ currency: pool.currencyLp,
816
+ amount: '0',
817
+ direction: 'in',
818
+ },
819
+ },
820
+ };
821
+ }
822
+ const transaction = await (0, build_transaction_1.buildTransaction)(publicClient, {
823
+ chain: chain_1.CHAIN_MAP[chainId],
824
+ account: userAddress,
825
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Rebalancer,
826
+ abi: rebalancer_abi_1.REBALANCER_ABI,
827
+ functionName: 'burn',
828
+ args: [pool.key, burnAmount, minWithdrawAmountA, minWithdrawAmountB],
829
+ }, options?.gasLimit);
830
+ return {
831
+ transaction,
832
+ result: {
833
+ currencyA: {
834
+ currency: pool.currencyA,
835
+ amount: (0, viem_1.formatUnits)(withdrawAmountA, pool.currencyA.decimals),
836
+ direction: 'out',
837
+ },
838
+ currencyB: {
839
+ currency: pool.currencyB,
840
+ amount: (0, viem_1.formatUnits)(withdrawAmountB, pool.currencyB.decimals),
841
+ direction: 'out',
842
+ },
843
+ lpCurrency: {
844
+ currency: pool.currencyLp,
845
+ amount: amount,
846
+ direction: 'in',
847
+ },
848
+ },
849
+ };
850
+ };
851
+ exports.removeLiquidity = removeLiquidity;
852
+ const refillOrder = async ({ chainId, userAddress, token0, token1, salt, options, }) => {
853
+ const publicClient = (0, viem_1.createPublicClient)({
854
+ chain: chain_1.CHAIN_MAP[chainId],
855
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
856
+ });
857
+ const pool = options?.pool
858
+ ? options.pool
859
+ : (await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph))).toJson();
860
+ if (!pool.isOpened) {
861
+ throw new Error(`
862
+ Open the pool before rebalancing pool.
863
+ import { openPool } from '@clober/v2-sdk'
864
+
865
+ const transaction = await openPool({
866
+ chainId: ${chainId},
867
+ tokenA: '${token0}',
868
+ tokenB: '${token1}',
869
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
870
+ })
871
+ `);
872
+ }
873
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
874
+ chain: chain_1.CHAIN_MAP[chainId],
875
+ account: userAddress,
876
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Rebalancer,
877
+ abi: rebalancer_abi_1.REBALANCER_ABI,
878
+ functionName: 'rebalance',
879
+ args: [pool.key],
880
+ }, options?.gasLimit, options?.gasPriceLimit);
881
+ };
882
+ exports.refillOrder = refillOrder;
883
+ const adjustOrderPrice = async ({ chainId, userAddress, token0, token1, salt, oraclePrice, bidPrice, askPrice, alpha, options, }) => {
884
+ if (Number(alpha) <= 0 || Number(alpha) > 1) {
885
+ throw new Error('Alpha value must be in the range (0, 1]');
886
+ }
887
+ if (Number(bidPrice) <= 0 || Number(askPrice) <= 0) {
888
+ throw new Error('Price must be greater than 0');
889
+ }
890
+ if (Number(bidPrice) >= Number(askPrice)) {
891
+ throw new Error('Bid price must be less than ask price');
892
+ }
893
+ const publicClient = (0, viem_1.createPublicClient)({
894
+ chain: chain_1.CHAIN_MAP[chainId],
895
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
896
+ });
897
+ const pool = options?.pool
898
+ ? options.pool
899
+ : (await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph))).toJson();
900
+ if (!pool.isOpened) {
901
+ throw new Error(`
902
+ Open the pool before updating strategy price.
903
+ import { openPool } from '@clober/v2-sdk'
904
+
905
+ const transaction = await openPool({
906
+ chainId: ${chainId},
907
+ tokenA: '${token0}',
908
+ tokenB: '${token1}',
909
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
910
+ })
911
+ `);
912
+ }
913
+ const [roundingUpBidPrice, roundingUpAskPrice] = [
914
+ options?.roundingUpBidPrice ? options.roundingUpBidPrice : false,
915
+ options?.roundingUpAskPrice ? options.roundingUpAskPrice : false,
916
+ ];
917
+ const { roundingDownTick: roundingDownTickA, roundingUpTick: roundingUpTickA, } = (0, prices_1.parsePrice)(Number(bidPrice), pool.currencyA.decimals, pool.currencyB.decimals);
918
+ const { roundingDownTick: roundingDownTickB, roundingUpTick: roundingUpTickB, } = (0, prices_1.parsePrice)(Number(askPrice), pool.currencyA.decimals, pool.currencyB.decimals);
919
+ const oracleRawPrice = (0, prices_1.convertHumanReadablePriceToRawPrice)(Number(oraclePrice), pool.currencyA.decimals, pool.currencyB.decimals);
920
+ const tickA = options?.bidTick
921
+ ? Number(options.bidTick)
922
+ : Number(roundingUpBidPrice ? roundingUpTickA : roundingDownTickA);
923
+ let tickB = options?.askTick
924
+ ? Number(options.askTick)
925
+ : Number((0, tick_1.invertTick)(roundingUpAskPrice ? roundingUpTickB : roundingDownTickB));
926
+ if ((0, tick_1.invertTick)(BigInt(tickB)) <= BigInt(tickA)) {
927
+ tickB = Number((0, tick_1.invertTick)(BigInt(tickA + 1)));
928
+ }
929
+ const rateRaw = (0, viem_1.parseUnits)(alpha, 6);
930
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
931
+ chain: chain_1.CHAIN_MAP[chainId],
932
+ account: userAddress,
933
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Operator,
934
+ abi: operator_abi_1.OPERATOR_ABI,
935
+ functionName: 'updatePosition',
936
+ args: [pool.key, oracleRawPrice, tickA, tickB, rateRaw],
937
+ }, options?.gasLimit, options?.gasPriceLimit);
938
+ };
939
+ exports.adjustOrderPrice = adjustOrderPrice;
940
+ const setStrategyConfig = async ({ chainId, userAddress, token0, token1, salt, config, options, }) => {
941
+ if (Number(config.referenceThreshold) < 0 ||
942
+ Number(config.referenceThreshold) > 1) {
943
+ throw new Error('Reference threshold must be in the range [0, 1]');
944
+ }
945
+ if (Number(config.rebalanceThreshold) < 0 ||
946
+ Number(config.rebalanceThreshold) > 1) {
947
+ throw new Error('Rebalance threshold must be in the range [0, 1]');
948
+ }
949
+ if (Number(config.priceThresholdA) < 0 ||
950
+ Number(config.priceThresholdA) > 1 ||
951
+ Number(config.priceThresholdB) < 0 ||
952
+ Number(config.priceThresholdB) > 1) {
953
+ throw new Error('Price threshold must be in the range [0, 1]');
954
+ }
955
+ if (Number(config.rateA) < 0 ||
956
+ Number(config.rateA) > 1 ||
957
+ Number(config.rateB) < 0 ||
958
+ Number(config.rateB) > 1) {
959
+ throw new Error('Rate must be in the range [0, 1]');
960
+ }
961
+ if (Number(config.minRateA) < 0 ||
962
+ Number(config.minRateA) > 1 ||
963
+ Number(config.minRateB) < 0 ||
964
+ Number(config.minRateB) > 1) {
965
+ throw new Error('Min rate must be in the range [0, 1]');
966
+ }
967
+ if (Number(config.minRateA) > Number(config.rateA) ||
968
+ Number(config.minRateB) > Number(config.rateB)) {
969
+ throw new Error('Min rate must be less or equal to rate');
970
+ }
971
+ const publicClient = (0, viem_1.createPublicClient)({
972
+ chain: chain_1.CHAIN_MAP[chainId],
973
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
974
+ });
975
+ const pool = await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph));
976
+ if (!pool.isOpened) {
977
+ throw new Error(`
978
+ Open the pool before set strategy config.
979
+ import { openPool } from '@clober/v2-sdk'
980
+
981
+ const transaction = await openPool({
982
+ chainId: ${chainId},
983
+ tokenA: '${token0}',
984
+ tokenB: '${token1}',
985
+ })
986
+ `);
987
+ }
988
+ const configRaw = {
989
+ referenceThreshold: (0, viem_1.parseUnits)(config.referenceThreshold, 6),
990
+ rebalanceThreshold: (0, viem_1.parseUnits)(config.rebalanceThreshold, 6),
991
+ rateA: (0, viem_1.parseUnits)(config.rateA, 6),
992
+ rateB: (0, viem_1.parseUnits)(config.rateB, 6),
993
+ minRateA: (0, viem_1.parseUnits)(config.minRateA, 6),
994
+ minRateB: (0, viem_1.parseUnits)(config.minRateB, 6),
995
+ priceThresholdA: (0, viem_1.parseUnits)(config.priceThresholdA, 6),
996
+ priceThresholdB: (0, viem_1.parseUnits)(config.priceThresholdB, 6),
997
+ };
998
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
999
+ chain: chain_1.CHAIN_MAP[chainId],
1000
+ account: userAddress,
1001
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Strategy,
1002
+ abi: strategy_abi_1.STRATEGY_ABI,
1003
+ functionName: 'setConfig',
1004
+ args: [pool.key, configRaw],
1005
+ }, options?.gasLimit);
1006
+ };
1007
+ exports.setStrategyConfig = setStrategyConfig;
1008
+ const pausePool = async ({ chainId, userAddress, token0, token1, salt, options, }) => {
1009
+ const publicClient = (0, viem_1.createPublicClient)({
1010
+ chain: chain_1.CHAIN_MAP[chainId],
1011
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1012
+ });
1013
+ const pool = options?.pool
1014
+ ? options.pool
1015
+ : (await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph))).toJson();
1016
+ if (!pool.isOpened) {
1017
+ throw new Error(`
1018
+ Open the pool before trying pause.
1019
+ import { openPool } from '@clober/v2-sdk'
1020
+
1021
+ const transaction = await openPool({
1022
+ chainId: ${chainId},
1023
+ tokenA: '${token0}',
1024
+ tokenB: '${token1}',
1025
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
1026
+ })
1027
+ `);
1028
+ }
1029
+ if (pool.paused) {
1030
+ return undefined;
1031
+ }
1032
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1033
+ chain: chain_1.CHAIN_MAP[chainId],
1034
+ account: userAddress,
1035
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Operator,
1036
+ abi: operator_abi_1.OPERATOR_ABI,
1037
+ functionName: 'pause',
1038
+ args: [pool.key],
1039
+ }, options?.gasLimit, options?.gasPriceLimit);
1040
+ };
1041
+ exports.pausePool = pausePool;
1042
+ const resumePool = async ({ chainId, userAddress, token0, token1, salt, options, }) => {
1043
+ const publicClient = (0, viem_1.createPublicClient)({
1044
+ chain: chain_1.CHAIN_MAP[chainId],
1045
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1046
+ });
1047
+ const pool = options?.pool
1048
+ ? options.pool
1049
+ : (await (0, pool_1.fetchPool)(publicClient, chainId, [token0, token1], salt, !!(options && options.useSubgraph))).toJson();
1050
+ if (!pool.isOpened) {
1051
+ throw new Error(`
1052
+ Open the pool before trying resume.
1053
+ import { openPool } from '@clober/v2-sdk'
1054
+
1055
+ const transaction = await openPool({
1056
+ chainId: ${chainId},
1057
+ tokenA: '${token0}',
1058
+ tokenB: '${token1}',
1059
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
1060
+ })
1061
+ `);
1062
+ }
1063
+ if (!pool.paused) {
1064
+ return undefined;
1065
+ }
1066
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1067
+ chain: chain_1.CHAIN_MAP[chainId],
1068
+ account: userAddress,
1069
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].Strategy,
1070
+ abi: strategy_abi_1.STRATEGY_ABI,
1071
+ functionName: 'unpause',
1072
+ args: [pool.key],
1073
+ }, options?.gasLimit, options?.gasPriceLimit);
1074
+ };
1075
+ exports.resumePool = resumePool;
1076
+ const vote = async ({ chainId, userAddress, candidateAddress, inFavor, options, }) => {
1077
+ const publicClient = (0, viem_1.createPublicClient)({
1078
+ chain: chain_1.CHAIN_MAP[chainId],
1079
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1080
+ });
1081
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1082
+ chain: chain_1.CHAIN_MAP[chainId],
1083
+ account: userAddress,
1084
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].ElectionGovernor,
1085
+ abi: election_governor_abi_1.ELECTION_GOVERNOR_ABI,
1086
+ functionName: 'vote',
1087
+ args: [candidateAddress, inFavor],
1088
+ }, options?.gasLimit, options?.gasPriceLimit);
1089
+ };
1090
+ exports.vote = vote;
1091
+ const register = async ({ chainId, userAddress, options, }) => {
1092
+ const publicClient = (0, viem_1.createPublicClient)({
1093
+ chain: chain_1.CHAIN_MAP[chainId],
1094
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1095
+ });
1096
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1097
+ chain: chain_1.CHAIN_MAP[chainId],
1098
+ account: userAddress,
1099
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].ElectionGovernor,
1100
+ abi: election_governor_abi_1.ELECTION_GOVERNOR_ABI,
1101
+ functionName: 'register',
1102
+ args: [],
1103
+ }, options?.gasLimit, options?.gasPriceLimit);
1104
+ };
1105
+ exports.register = register;
1106
+ const end = async ({ chainId, userAddress, options, }) => {
1107
+ const publicClient = (0, viem_1.createPublicClient)({
1108
+ chain: chain_1.CHAIN_MAP[chainId],
1109
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1110
+ });
1111
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1112
+ chain: chain_1.CHAIN_MAP[chainId],
1113
+ account: userAddress,
1114
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].ElectionGovernor,
1115
+ abi: election_governor_abi_1.ELECTION_GOVERNOR_ABI,
1116
+ functionName: 'end',
1117
+ args: [],
1118
+ }, options?.gasLimit, options?.gasPriceLimit);
1119
+ };
1120
+ exports.end = end;
1121
+ const mintVCLOB = async ({ chainId, userAddress, amount, options, }) => {
1122
+ const publicClient = (0, viem_1.createPublicClient)({
1123
+ chain: chain_1.CHAIN_MAP[chainId],
1124
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1125
+ });
1126
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1127
+ chain: chain_1.CHAIN_MAP[chainId],
1128
+ account: userAddress,
1129
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].VoteLockedCloberToken,
1130
+ abi: vclob_abi_1.VCLOB_ABI,
1131
+ functionName: 'mint',
1132
+ args: [amount, userAddress],
1133
+ }, options?.gasLimit, options?.gasPriceLimit);
1134
+ };
1135
+ exports.mintVCLOB = mintVCLOB;
1136
+ const burnVCLOB = async ({ chainId, userAddress, id, options, }) => {
1137
+ const publicClient = (0, viem_1.createPublicClient)({
1138
+ chain: chain_1.CHAIN_MAP[chainId],
1139
+ transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
1140
+ });
1141
+ return (0, build_transaction_1.buildTransaction)(publicClient, {
1142
+ chain: chain_1.CHAIN_MAP[chainId],
1143
+ account: userAddress,
1144
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].VoteLockedCloberToken,
1145
+ abi: vclob_abi_1.VCLOB_ABI,
1146
+ functionName: 'burn',
1147
+ args: [Number(id), userAddress],
1148
+ }, options?.gasLimit, options?.gasPriceLimit);
1149
+ };
1150
+ exports.burnVCLOB = burnVCLOB;
364
1151
  //# sourceMappingURL=call.js.map