@clober/v2-sdk 0.0.7 → 0.0.9-6.dev

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