tempo.ts 0.1.5 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +33 -2
  2. package/dist/chains.d.ts +509 -115
  3. package/dist/chains.d.ts.map +1 -1
  4. package/dist/chains.js +20 -9
  5. package/dist/chains.js.map +1 -1
  6. package/dist/ox/Order.d.ts +92 -0
  7. package/dist/ox/Order.d.ts.map +1 -0
  8. package/dist/ox/Order.js +88 -0
  9. package/dist/ox/Order.js.map +1 -0
  10. package/dist/ox/OrdersFilters.d.ts +72 -0
  11. package/dist/ox/OrdersFilters.d.ts.map +1 -0
  12. package/dist/ox/OrdersFilters.js +100 -0
  13. package/dist/ox/OrdersFilters.js.map +1 -0
  14. package/dist/ox/Pagination.d.ts +128 -0
  15. package/dist/ox/Pagination.d.ts.map +1 -0
  16. package/dist/ox/Pagination.js +78 -0
  17. package/dist/ox/Pagination.js.map +1 -0
  18. package/dist/ox/PoolId.d.ts +18 -0
  19. package/dist/ox/PoolId.d.ts.map +1 -0
  20. package/dist/ox/PoolId.js +13 -0
  21. package/dist/ox/PoolId.js.map +1 -0
  22. package/dist/ox/RpcSchema.d.ts +32 -0
  23. package/dist/ox/RpcSchema.d.ts.map +1 -0
  24. package/dist/ox/RpcSchema.js +2 -0
  25. package/dist/ox/RpcSchema.js.map +1 -0
  26. package/dist/ox/SignatureEnvelope.d.ts +1 -1
  27. package/dist/ox/SignatureEnvelope.d.ts.map +1 -1
  28. package/dist/ox/SignatureEnvelope.js.map +1 -1
  29. package/dist/{viem → ox}/Tick.d.ts +4 -0
  30. package/dist/ox/Tick.d.ts.map +1 -0
  31. package/dist/ox/Tick.js.map +1 -0
  32. package/dist/ox/Transaction.d.ts.map +1 -1
  33. package/dist/ox/Transaction.js +2 -1
  34. package/dist/ox/Transaction.js.map +1 -1
  35. package/dist/ox/TransactionEnvelopeAA.d.ts +6 -6
  36. package/dist/ox/TransactionEnvelopeAA.d.ts.map +1 -1
  37. package/dist/ox/TransactionEnvelopeAA.js +4 -2
  38. package/dist/ox/TransactionEnvelopeAA.js.map +1 -1
  39. package/dist/ox/TransactionRequest.d.ts +4 -0
  40. package/dist/ox/TransactionRequest.d.ts.map +1 -1
  41. package/dist/ox/TransactionRequest.js.map +1 -1
  42. package/dist/ox/index.d.ts +6 -0
  43. package/dist/ox/index.d.ts.map +1 -1
  44. package/dist/ox/index.js +6 -0
  45. package/dist/ox/index.js.map +1 -1
  46. package/dist/prool/Instance.d.ts.map +1 -1
  47. package/dist/prool/Instance.js +20 -4
  48. package/dist/prool/Instance.js.map +1 -1
  49. package/dist/viem/Abis.d.ts +1469 -1082
  50. package/dist/viem/Abis.d.ts.map +1 -1
  51. package/dist/viem/Abis.js +932 -671
  52. package/dist/viem/Abis.js.map +1 -1
  53. package/dist/viem/Account.d.ts +150 -0
  54. package/dist/viem/Account.d.ts.map +1 -0
  55. package/dist/viem/Account.js +221 -0
  56. package/dist/viem/Account.js.map +1 -0
  57. package/dist/viem/Actions/amm.d.ts +144 -161
  58. package/dist/viem/Actions/amm.d.ts.map +1 -1
  59. package/dist/viem/Actions/amm.js +109 -163
  60. package/dist/viem/Actions/amm.js.map +1 -1
  61. package/dist/viem/Actions/dex.d.ts +920 -664
  62. package/dist/viem/Actions/dex.d.ts.map +1 -1
  63. package/dist/viem/Actions/dex.js +129 -30
  64. package/dist/viem/Actions/dex.js.map +1 -1
  65. package/dist/viem/Actions/faucet.d.ts +34 -0
  66. package/dist/viem/Actions/faucet.d.ts.map +1 -0
  67. package/dist/viem/Actions/faucet.js +33 -0
  68. package/dist/viem/Actions/faucet.js.map +1 -0
  69. package/dist/viem/Actions/fee.d.ts +16 -30
  70. package/dist/viem/Actions/fee.d.ts.map +1 -1
  71. package/dist/viem/Actions/fee.js +13 -13
  72. package/dist/viem/Actions/fee.js.map +1 -1
  73. package/dist/viem/Actions/index.d.ts +2 -0
  74. package/dist/viem/Actions/index.d.ts.map +1 -1
  75. package/dist/viem/Actions/index.js +2 -0
  76. package/dist/viem/Actions/index.js.map +1 -1
  77. package/dist/viem/Actions/policy.d.ts +46 -46
  78. package/dist/viem/Actions/policy.js +46 -46
  79. package/dist/viem/Actions/reward.d.ts +3236 -0
  80. package/dist/viem/Actions/reward.d.ts.map +1 -0
  81. package/dist/viem/Actions/reward.js +725 -0
  82. package/dist/viem/Actions/reward.js.map +1 -0
  83. package/dist/viem/Actions/token.d.ts +4399 -2750
  84. package/dist/viem/Actions/token.d.ts.map +1 -1
  85. package/dist/viem/Actions/token.js +361 -482
  86. package/dist/viem/Actions/token.js.map +1 -1
  87. package/dist/viem/Addresses.d.ts +1 -2
  88. package/dist/viem/Addresses.d.ts.map +1 -1
  89. package/dist/viem/Addresses.js +1 -2
  90. package/dist/viem/Addresses.js.map +1 -1
  91. package/dist/viem/Chain.d.ts +38 -12
  92. package/dist/viem/Chain.d.ts.map +1 -1
  93. package/dist/viem/Chain.js +27 -18
  94. package/dist/viem/Chain.js.map +1 -1
  95. package/dist/viem/Decorator.d.ts +1009 -428
  96. package/dist/viem/Decorator.d.ts.map +1 -1
  97. package/dist/viem/Decorator.js +17 -5
  98. package/dist/viem/Decorator.js.map +1 -1
  99. package/dist/viem/Formatters.d.ts +8 -1
  100. package/dist/viem/Formatters.d.ts.map +1 -1
  101. package/dist/viem/Formatters.js +17 -0
  102. package/dist/viem/Formatters.js.map +1 -1
  103. package/dist/viem/P256.d.ts +2 -0
  104. package/dist/viem/P256.d.ts.map +1 -0
  105. package/dist/viem/P256.js +2 -0
  106. package/dist/viem/P256.js.map +1 -0
  107. package/dist/viem/Secp256k1.d.ts +2 -0
  108. package/dist/viem/Secp256k1.d.ts.map +1 -0
  109. package/dist/viem/Secp256k1.js +2 -0
  110. package/dist/viem/Secp256k1.js.map +1 -0
  111. package/dist/viem/TokenIds.d.ts +1 -2
  112. package/dist/viem/TokenIds.d.ts.map +1 -1
  113. package/dist/viem/TokenIds.js +1 -2
  114. package/dist/viem/TokenIds.js.map +1 -1
  115. package/dist/viem/Transaction.d.ts +1 -1
  116. package/dist/viem/Transaction.d.ts.map +1 -1
  117. package/dist/viem/Transaction.js +46 -5
  118. package/dist/viem/Transaction.js.map +1 -1
  119. package/dist/viem/WebAuthnP256.d.ts +79 -0
  120. package/dist/viem/WebAuthnP256.d.ts.map +1 -0
  121. package/dist/viem/WebAuthnP256.js +95 -0
  122. package/dist/viem/WebAuthnP256.js.map +1 -0
  123. package/dist/viem/WebCryptoP256.d.ts +2 -0
  124. package/dist/viem/WebCryptoP256.d.ts.map +1 -0
  125. package/dist/viem/WebCryptoP256.js +2 -0
  126. package/dist/viem/WebCryptoP256.js.map +1 -0
  127. package/dist/viem/index.d.ts +6 -3
  128. package/dist/viem/index.d.ts.map +1 -1
  129. package/dist/viem/index.js +6 -3
  130. package/dist/viem/index.js.map +1 -1
  131. package/dist/viem/internal/account.d.ts +24 -0
  132. package/dist/viem/internal/account.d.ts.map +1 -0
  133. package/dist/viem/internal/account.js +68 -0
  134. package/dist/viem/internal/account.js.map +1 -0
  135. package/dist/viem/internal/types.d.ts +10 -0
  136. package/dist/viem/internal/types.d.ts.map +1 -1
  137. package/dist/wagmi/Actions/amm.d.ts +428 -0
  138. package/dist/wagmi/Actions/amm.d.ts.map +1 -0
  139. package/dist/wagmi/Actions/amm.js +472 -0
  140. package/dist/wagmi/Actions/amm.js.map +1 -0
  141. package/dist/wagmi/Actions/dex.d.ts +908 -0
  142. package/dist/wagmi/Actions/dex.d.ts.map +1 -0
  143. package/dist/wagmi/Actions/dex.js +1023 -0
  144. package/dist/wagmi/Actions/dex.js.map +1 -0
  145. package/dist/wagmi/Actions/faucet.d.ts +35 -0
  146. package/dist/wagmi/Actions/faucet.d.ts.map +1 -0
  147. package/dist/wagmi/Actions/faucet.js +33 -0
  148. package/dist/wagmi/Actions/faucet.js.map +1 -0
  149. package/dist/wagmi/Actions/fee.d.ts +111 -0
  150. package/dist/wagmi/Actions/fee.d.ts.map +1 -0
  151. package/dist/wagmi/Actions/fee.js +126 -0
  152. package/dist/wagmi/Actions/fee.js.map +1 -0
  153. package/dist/wagmi/Actions/index.d.ts +7 -0
  154. package/dist/wagmi/Actions/index.d.ts.map +1 -0
  155. package/dist/wagmi/Actions/index.js +7 -0
  156. package/dist/wagmi/Actions/index.js.map +1 -0
  157. package/dist/wagmi/Actions/reward.d.ts +348 -0
  158. package/dist/wagmi/Actions/reward.d.ts.map +1 -0
  159. package/dist/wagmi/Actions/reward.js +388 -0
  160. package/dist/wagmi/Actions/reward.js.map +1 -0
  161. package/dist/wagmi/Actions/token.d.ts +1546 -0
  162. package/dist/wagmi/Actions/token.d.ts.map +1 -0
  163. package/dist/wagmi/Actions/token.js +1712 -0
  164. package/dist/wagmi/Actions/token.js.map +1 -0
  165. package/dist/wagmi/Connector.d.ts +81 -0
  166. package/dist/wagmi/Connector.d.ts.map +1 -0
  167. package/dist/wagmi/Connector.js +261 -0
  168. package/dist/wagmi/Connector.js.map +1 -0
  169. package/dist/wagmi/Hooks/amm.d.ts +421 -0
  170. package/dist/wagmi/Hooks/amm.d.ts.map +1 -0
  171. package/dist/wagmi/Hooks/amm.js +504 -0
  172. package/dist/wagmi/Hooks/amm.js.map +1 -0
  173. package/dist/wagmi/Hooks/dex.d.ts +816 -0
  174. package/dist/wagmi/Hooks/dex.d.ts.map +1 -0
  175. package/dist/wagmi/Hooks/dex.js +973 -0
  176. package/dist/wagmi/Hooks/dex.js.map +1 -0
  177. package/dist/wagmi/Hooks/faucet.d.ts +39 -0
  178. package/dist/wagmi/Hooks/faucet.d.ts.map +1 -0
  179. package/dist/wagmi/Hooks/faucet.js +40 -0
  180. package/dist/wagmi/Hooks/faucet.js.map +1 -0
  181. package/dist/wagmi/Hooks/fee.d.ts +97 -0
  182. package/dist/wagmi/Hooks/fee.d.ts.map +1 -0
  183. package/dist/wagmi/Hooks/fee.js +109 -0
  184. package/dist/wagmi/Hooks/fee.js.map +1 -0
  185. package/dist/wagmi/Hooks/index.d.ts +7 -0
  186. package/dist/wagmi/Hooks/index.d.ts.map +1 -0
  187. package/dist/wagmi/Hooks/index.js +7 -0
  188. package/dist/wagmi/Hooks/index.js.map +1 -0
  189. package/dist/wagmi/Hooks/reward.d.ts +307 -0
  190. package/dist/wagmi/Hooks/reward.d.ts.map +1 -0
  191. package/dist/wagmi/Hooks/reward.js +349 -0
  192. package/dist/wagmi/Hooks/reward.js.map +1 -0
  193. package/dist/wagmi/Hooks/token.d.ts +1388 -0
  194. package/dist/wagmi/Hooks/token.d.ts.map +1 -0
  195. package/dist/wagmi/Hooks/token.js +1657 -0
  196. package/dist/wagmi/Hooks/token.js.map +1 -0
  197. package/dist/wagmi/index.d.ts +4 -0
  198. package/dist/wagmi/index.d.ts.map +1 -0
  199. package/dist/wagmi/index.js +4 -0
  200. package/dist/wagmi/index.js.map +1 -0
  201. package/package.json +54 -10
  202. package/src/chains.ts +21 -9
  203. package/src/ox/Order.test.ts +78 -0
  204. package/src/ox/Order.ts +125 -0
  205. package/src/ox/OrdersFilters.test.ts +182 -0
  206. package/src/ox/OrdersFilters.ts +125 -0
  207. package/src/ox/Pagination.test.ts +162 -0
  208. package/src/ox/Pagination.ts +164 -0
  209. package/src/ox/PoolId.test.ts +33 -0
  210. package/src/ox/PoolId.ts +27 -0
  211. package/src/ox/RpcSchema.ts +35 -0
  212. package/src/ox/SignatureEnvelope.ts +3 -1
  213. package/src/{viem → ox}/Tick.test.ts +1 -1
  214. package/src/{viem → ox}/Tick.ts +5 -0
  215. package/src/ox/Transaction.test.ts +1 -1
  216. package/src/ox/Transaction.ts +2 -1
  217. package/src/ox/TransactionEnvelopeAA.test.ts +239 -96
  218. package/src/ox/TransactionEnvelopeAA.ts +9 -7
  219. package/src/ox/TransactionRequest.ts +4 -0
  220. package/src/ox/index.ts +6 -0
  221. package/src/prool/Instance.ts +51 -37
  222. package/src/prool/internal/chain.json +104 -52
  223. package/src/tsconfig.json +9 -0
  224. package/src/viem/Abis.ts +972 -710
  225. package/src/viem/Account.ts +279 -0
  226. package/src/viem/Actions/__snapshots__/dex.test.ts.snap +850 -0
  227. package/src/viem/Actions/amm.test.ts +173 -169
  228. package/src/viem/Actions/amm.ts +131 -203
  229. package/src/viem/Actions/dex.test.ts +563 -484
  230. package/src/viem/Actions/dex.ts +203 -30
  231. package/src/viem/Actions/faucet.ts +50 -0
  232. package/src/viem/Actions/fee.test.ts +23 -34
  233. package/src/viem/Actions/fee.ts +20 -13
  234. package/src/viem/Actions/index.ts +2 -0
  235. package/src/viem/Actions/policy.test.ts +19 -33
  236. package/src/viem/Actions/policy.ts +46 -46
  237. package/src/viem/Actions/reward.test.ts +457 -0
  238. package/src/viem/Actions/reward.ts +999 -0
  239. package/src/viem/Actions/token.test.ts +453 -287
  240. package/src/viem/Actions/token.ts +605 -693
  241. package/src/viem/Addresses.ts +1 -2
  242. package/src/viem/Chain.bench-d.ts +12 -0
  243. package/src/viem/Chain.ts +70 -20
  244. package/src/viem/Decorator.bench-d.ts +1 -1
  245. package/src/viem/Decorator.test.ts +3 -1
  246. package/src/viem/Decorator.ts +1049 -442
  247. package/src/viem/Formatters.ts +31 -5
  248. package/src/viem/P256.ts +1 -0
  249. package/src/viem/Secp256k1.ts +1 -0
  250. package/src/viem/TokenIds.ts +1 -2
  251. package/src/viem/Transaction.ts +53 -7
  252. package/src/viem/WebAuthnP256.ts +140 -0
  253. package/src/viem/WebCryptoP256.ts +1 -0
  254. package/src/viem/e2e.test.ts +1126 -297
  255. package/src/viem/index.ts +6 -3
  256. package/src/viem/internal/account.ts +107 -0
  257. package/src/viem/internal/types.ts +9 -0
  258. package/src/wagmi/Actions/__snapshots__/dex.test.ts.snap +310 -0
  259. package/src/wagmi/Actions/amm.test.ts +198 -0
  260. package/src/wagmi/Actions/amm.ts +691 -0
  261. package/src/wagmi/Actions/dex.test.ts +1507 -0
  262. package/src/wagmi/Actions/dex.ts +1640 -0
  263. package/src/wagmi/Actions/faucet.ts +46 -0
  264. package/src/wagmi/Actions/fee.test.ts +63 -0
  265. package/src/wagmi/Actions/fee.ts +208 -0
  266. package/src/wagmi/Actions/index.ts +6 -0
  267. package/src/wagmi/Actions/reward.test.ts +210 -0
  268. package/src/wagmi/Actions/reward.ts +632 -0
  269. package/src/wagmi/Actions/token.test.ts +1308 -0
  270. package/src/wagmi/Actions/token.ts +2613 -0
  271. package/src/wagmi/Connector.test.ts +53 -0
  272. package/src/wagmi/Connector.ts +390 -0
  273. package/src/wagmi/Hooks/__snapshots__/dex.test.ts.snap +457 -0
  274. package/src/wagmi/Hooks/amm.test.ts +424 -0
  275. package/src/wagmi/Hooks/amm.ts +806 -0
  276. package/src/wagmi/Hooks/dex.test.ts +1017 -0
  277. package/src/wagmi/Hooks/dex.ts +1685 -0
  278. package/src/wagmi/Hooks/faucet.ts +76 -0
  279. package/src/wagmi/Hooks/fee.test.ts +166 -0
  280. package/src/wagmi/Hooks/fee.ts +206 -0
  281. package/src/wagmi/Hooks/index.ts +6 -0
  282. package/src/wagmi/Hooks/reward.test.ts +219 -0
  283. package/src/wagmi/Hooks/reward.ts +672 -0
  284. package/src/wagmi/Hooks/token.test.ts +1670 -0
  285. package/src/wagmi/Hooks/token.ts +2906 -0
  286. package/src/wagmi/index.ts +3 -0
  287. package/src/wagmi/internal/types.ts +16 -0
  288. package/dist/viem/Client.d.ts +0 -27
  289. package/dist/viem/Client.d.ts.map +0 -1
  290. package/dist/viem/Client.js +0 -28
  291. package/dist/viem/Client.js.map +0 -1
  292. package/dist/viem/Tick.d.ts.map +0 -1
  293. package/dist/viem/Tick.js.map +0 -1
  294. package/src/viem/Client.bench-d.ts +0 -8
  295. package/src/viem/Client.test.ts +0 -178
  296. package/src/viem/Client.ts +0 -91
  297. /package/dist/{viem → ox}/Tick.js +0 -0
@@ -0,0 +1,424 @@
1
+ import { getConnectorClient } from '@wagmi/core'
2
+ import { type Address, parseUnits } from 'viem'
3
+ import { describe, expect, test, vi } from 'vitest'
4
+ import { useConnect } from 'wagmi'
5
+ import {
6
+ accounts,
7
+ addresses,
8
+ setupPoolWithLiquidity,
9
+ } from '../../../test/viem/config.js'
10
+ import { config, renderHook } from '../../../test/wagmi/config.js'
11
+ import * as hooks from './amm.js'
12
+ import * as tokenHooks from './token.js'
13
+
14
+ const account = accounts[0]
15
+
16
+ describe('usePool', () => {
17
+ test('default', async () => {
18
+ const { result } = await renderHook(() =>
19
+ hooks.usePool({
20
+ userToken: addresses.alphaUsd,
21
+ validatorToken: '0x20c0000000000000000000000000000000000001',
22
+ }),
23
+ )
24
+
25
+ await vi.waitFor(() => expect(result.current.isSuccess).toBeTruthy(), {
26
+ timeout: 5_000,
27
+ })
28
+
29
+ expect(result.current.data).toMatchInlineSnapshot(`
30
+ {
31
+ "reserveUserToken": 0n,
32
+ "reserveValidatorToken": 0n,
33
+ "totalSupply": 0n,
34
+ }
35
+ `)
36
+ })
37
+
38
+ test('reactivity: token parameters', async () => {
39
+ let userToken: Address | undefined
40
+ let validatorToken: Address | undefined
41
+
42
+ const { result, rerender } = await renderHook(() =>
43
+ hooks.usePool({
44
+ userToken,
45
+ validatorToken,
46
+ }),
47
+ )
48
+
49
+ await vi.waitFor(() => result.current.fetchStatus === 'idle')
50
+
51
+ // Should be disabled when tokens are undefined
52
+ expect(result.current.data).toBeUndefined()
53
+ expect(result.current.isPending).toBe(true)
54
+ expect(result.current.isEnabled).toBe(false)
55
+
56
+ // Set tokens
57
+ userToken = addresses.alphaUsd
58
+ validatorToken = '0x20c0000000000000000000000000000000000001'
59
+ rerender()
60
+
61
+ await vi.waitFor(() => expect(result.current.isSuccess).toBeTruthy())
62
+
63
+ // Should now be enabled and have data
64
+ expect(result.current.isEnabled).toBe(true)
65
+ expect(result.current.data).toBeDefined()
66
+ })
67
+ })
68
+
69
+ describe('useLiquidityBalance', () => {
70
+ test('default', async () => {
71
+ const { result } = await renderHook(() =>
72
+ hooks.useLiquidityBalance({
73
+ address: account.address,
74
+ userToken: addresses.alphaUsd,
75
+ validatorToken: '0x20c0000000000000000000000000000000000001',
76
+ }),
77
+ )
78
+
79
+ await vi.waitFor(() => expect(result.current.isSuccess).toBeTruthy(), {
80
+ timeout: 5_000,
81
+ })
82
+
83
+ expect(result.current.data).toMatchInlineSnapshot(`0n`)
84
+ })
85
+
86
+ test('reactivity: poolId and address parameters', async () => {
87
+ let userToken: Address | undefined
88
+ let validatorToken: Address | undefined
89
+ let address: Address | undefined
90
+
91
+ const { result, rerender } = await renderHook(() =>
92
+ hooks.useLiquidityBalance({
93
+ userToken,
94
+ validatorToken,
95
+ address,
96
+ }),
97
+ )
98
+
99
+ await vi.waitFor(() => result.current.fetchStatus === 'idle')
100
+
101
+ // Should be disabled when parameters are undefined
102
+ expect(result.current.data).toBeUndefined()
103
+ expect(result.current.isPending).toBe(true)
104
+ expect(result.current.isEnabled).toBe(false)
105
+
106
+ // Set parameters
107
+ userToken = addresses.alphaUsd
108
+ validatorToken = '0x20c0000000000000000000000000000000000001'
109
+ address = account.address
110
+ rerender()
111
+
112
+ await vi.waitFor(() => expect(result.current.isSuccess).toBeTruthy())
113
+
114
+ // Should now be enabled and have data
115
+ expect(result.current.isEnabled).toBe(true)
116
+ expect(result.current.data).toBeDefined()
117
+ })
118
+ })
119
+
120
+ describe('useMintSync', () => {
121
+ test('default', async () => {
122
+ const { result } = await renderHook(() => ({
123
+ connect: useConnect(),
124
+ createSync: tokenHooks.useCreateSync(),
125
+ grantRolesSync: tokenHooks.useGrantRolesSync(),
126
+ mintTokenSync: tokenHooks.useMintSync(),
127
+ mintSync: hooks.useMintSync(),
128
+ }))
129
+
130
+ await result.current.connect.connectAsync({
131
+ connector: config.connectors[0]!,
132
+ })
133
+
134
+ // Create a new token for testing
135
+ const { token } = await result.current.createSync.mutateAsync({
136
+ name: 'Test Token',
137
+ symbol: 'TEST',
138
+ currency: 'USD',
139
+ })
140
+
141
+ // Grant issuer role to mint tokens
142
+ await result.current.grantRolesSync.mutateAsync({
143
+ token,
144
+ roles: ['issuer'],
145
+ to: account.address,
146
+ })
147
+
148
+ // Mint some tokens to account
149
+ await result.current.mintTokenSync.mutateAsync({
150
+ to: account.address,
151
+ amount: parseUnits('1000', 6),
152
+ token,
153
+ })
154
+
155
+ // Add liquidity to pool
156
+ const data = await result.current.mintSync.mutateAsync({
157
+ userToken: {
158
+ address: token,
159
+ amount: parseUnits('100', 6),
160
+ },
161
+ validatorToken: {
162
+ address: addresses.alphaUsd,
163
+ amount: parseUnits('100', 6),
164
+ },
165
+ to: account.address,
166
+ })
167
+
168
+ await vi.waitFor(() =>
169
+ expect(result.current.mintSync.isSuccess).toBeTruthy(),
170
+ )
171
+
172
+ expect(data.receipt).toBeDefined()
173
+ expect(data.amountUserToken).toBe(parseUnits('100', 6))
174
+ expect(data.amountValidatorToken).toBe(parseUnits('100', 6))
175
+ })
176
+ })
177
+
178
+ describe('useBurnSync', () => {
179
+ test('default', async () => {
180
+ const { result } = await renderHook(() => ({
181
+ connect: useConnect(),
182
+ burnSync: hooks.useBurnSync(),
183
+ getLiquidityBalance: hooks.useLiquidityBalance,
184
+ }))
185
+
186
+ await result.current.connect.connectAsync({
187
+ connector: config.connectors[0]!,
188
+ })
189
+
190
+ const client = await getConnectorClient(config)
191
+ const { tokenAddress } = await setupPoolWithLiquidity(client)
192
+
193
+ // Get LP balance before burn
194
+ const { result: balanceResult } = await renderHook(() =>
195
+ result.current.getLiquidityBalance({
196
+ userToken: tokenAddress,
197
+ validatorToken: addresses.alphaUsd,
198
+ address: account.address,
199
+ }),
200
+ )
201
+
202
+ await vi.waitFor(() => expect(balanceResult.current.isSuccess).toBeTruthy())
203
+
204
+ const lpBalanceBefore = balanceResult.current.data!
205
+
206
+ // Burn half of LP tokens
207
+ const data = await result.current.burnSync.mutateAsync({
208
+ userToken: tokenAddress,
209
+ validatorToken: addresses.alphaUsd,
210
+ liquidity: lpBalanceBefore / 2n,
211
+ to: account.address,
212
+ })
213
+
214
+ await vi.waitFor(() =>
215
+ expect(result.current.burnSync.isSuccess).toBeTruthy(),
216
+ )
217
+
218
+ expect(data.receipt).toBeDefined()
219
+ expect(data.liquidity).toBe(lpBalanceBefore / 2n)
220
+ })
221
+ })
222
+
223
+ describe('useRebalanceSwapSync', () => {
224
+ test('default', async () => {
225
+ const { result } = await renderHook(() => ({
226
+ connect: useConnect(),
227
+ rebalanceSwapSync: hooks.useRebalanceSwapSync(),
228
+ }))
229
+
230
+ await result.current.connect.connectAsync({
231
+ connector: config.connectors[0]!,
232
+ })
233
+
234
+ const client = await getConnectorClient(config)
235
+ const { tokenAddress } = await setupPoolWithLiquidity(client)
236
+
237
+ const account2 = accounts[1]
238
+
239
+ // Perform rebalance swap
240
+ const data = await result.current.rebalanceSwapSync.mutateAsync({
241
+ userToken: tokenAddress,
242
+ validatorToken: addresses.alphaUsd,
243
+ amountOut: parseUnits('10', 6),
244
+ to: account2.address,
245
+ })
246
+
247
+ await vi.waitFor(() =>
248
+ expect(result.current.rebalanceSwapSync.isSuccess).toBeTruthy(),
249
+ )
250
+
251
+ expect(data.receipt).toBeDefined()
252
+ expect(data.amountOut).toBe(parseUnits('10', 6))
253
+ expect(data.swapper).toBe(account.address)
254
+ })
255
+ })
256
+
257
+ describe('useWatchRebalanceSwap', () => {
258
+ test('default', async () => {
259
+ const { result: connectResult } = await renderHook(() => ({
260
+ connect: useConnect(),
261
+ rebalanceSwapSync: hooks.useRebalanceSwapSync(),
262
+ }))
263
+
264
+ await connectResult.current.connect.connectAsync({
265
+ connector: config.connectors[0]!,
266
+ })
267
+
268
+ const client = await getConnectorClient(config)
269
+ const { tokenAddress } = await setupPoolWithLiquidity(client)
270
+
271
+ const events: any[] = []
272
+ await renderHook(() =>
273
+ hooks.useWatchRebalanceSwap({
274
+ onRebalanceSwap(args) {
275
+ events.push(args)
276
+ },
277
+ }),
278
+ )
279
+
280
+ const account2 = accounts[1]
281
+
282
+ // Perform rebalance swap
283
+ await connectResult.current.rebalanceSwapSync.mutateAsync({
284
+ userToken: tokenAddress,
285
+ validatorToken: addresses.alphaUsd,
286
+ amountOut: parseUnits('10', 6),
287
+ to: account2.address,
288
+ })
289
+
290
+ await vi.waitUntil(() => events.length >= 1)
291
+
292
+ expect(events.length).toBeGreaterThanOrEqual(1)
293
+ expect(events[0]?.userToken.toLowerCase()).toBe(tokenAddress.toLowerCase())
294
+ expect(events[0]?.validatorToken.toLowerCase()).toBe(
295
+ addresses.alphaUsd.toLowerCase(),
296
+ )
297
+ expect(events[0]?.amountOut).toBe(parseUnits('10', 6))
298
+ })
299
+ })
300
+
301
+ describe('useWatchMint', () => {
302
+ test('default', async () => {
303
+ const { result: connectResult } = await renderHook(() => ({
304
+ connect: useConnect(),
305
+ createSync: tokenHooks.useCreateSync(),
306
+ grantRolesSync: tokenHooks.useGrantRolesSync(),
307
+ mintTokenSync: tokenHooks.useMintSync(),
308
+ mintSync: hooks.useMintSync(),
309
+ }))
310
+
311
+ await connectResult.current.connect.connectAsync({
312
+ connector: config.connectors[0]!,
313
+ })
314
+
315
+ // Create a new token for testing
316
+ const { token } = await connectResult.current.createSync.mutateAsync({
317
+ name: 'Test Token 2',
318
+ symbol: 'TEST2',
319
+ currency: 'USD',
320
+ })
321
+
322
+ // Grant issuer role to mint tokens
323
+ await connectResult.current.grantRolesSync.mutateAsync({
324
+ token,
325
+ roles: ['issuer'],
326
+ to: account.address,
327
+ })
328
+
329
+ // Mint some tokens to account
330
+ await connectResult.current.mintTokenSync.mutateAsync({
331
+ to: account.address,
332
+ amount: parseUnits('1000', 6),
333
+ token,
334
+ })
335
+
336
+ const events: any[] = []
337
+ await renderHook(() =>
338
+ hooks.useWatchMint({
339
+ onMint(args) {
340
+ events.push(args)
341
+ },
342
+ }),
343
+ )
344
+
345
+ // Add liquidity to pool
346
+ await connectResult.current.mintSync.mutateAsync({
347
+ userToken: {
348
+ address: token,
349
+ amount: parseUnits('100', 6),
350
+ },
351
+ validatorToken: {
352
+ address: addresses.alphaUsd,
353
+ amount: parseUnits('100', 6),
354
+ },
355
+ to: account.address,
356
+ })
357
+
358
+ await vi.waitUntil(() => events.length >= 1)
359
+
360
+ expect(events.length).toBeGreaterThanOrEqual(1)
361
+ expect(events[0]?.userToken.address.toLowerCase()).toBe(token.toLowerCase())
362
+ expect(events[0]?.validatorToken.address.toLowerCase()).toBe(
363
+ addresses.alphaUsd.toLowerCase(),
364
+ )
365
+ expect(events[0]?.userToken.amount).toBe(parseUnits('100', 6))
366
+ expect(events[0]?.validatorToken.amount).toBe(parseUnits('100', 6))
367
+ })
368
+ })
369
+
370
+ describe('useWatchBurn', () => {
371
+ test('default', async () => {
372
+ const { result: connectResult } = await renderHook(() => ({
373
+ connect: useConnect(),
374
+ burnSync: hooks.useBurnSync(),
375
+ getLiquidityBalance: hooks.useLiquidityBalance,
376
+ }))
377
+
378
+ await connectResult.current.connect.connectAsync({
379
+ connector: config.connectors[0]!,
380
+ })
381
+
382
+ const client = await getConnectorClient(config)
383
+ const { tokenAddress } = await setupPoolWithLiquidity(client)
384
+
385
+ // Get LP balance
386
+ const { result: balanceResult } = await renderHook(() =>
387
+ connectResult.current.getLiquidityBalance({
388
+ userToken: tokenAddress,
389
+ validatorToken: addresses.alphaUsd,
390
+ address: account.address,
391
+ }),
392
+ )
393
+
394
+ await vi.waitFor(() => expect(balanceResult.current.isSuccess).toBeTruthy())
395
+
396
+ const lpBalance = balanceResult.current.data!
397
+
398
+ const events: any[] = []
399
+ await renderHook(() =>
400
+ hooks.useWatchBurn({
401
+ onBurn(args) {
402
+ events.push(args)
403
+ },
404
+ }),
405
+ )
406
+
407
+ // Burn LP tokens
408
+ await connectResult.current.burnSync.mutateAsync({
409
+ userToken: tokenAddress,
410
+ validatorToken: addresses.alphaUsd,
411
+ liquidity: lpBalance / 2n,
412
+ to: account.address,
413
+ })
414
+
415
+ await vi.waitUntil(() => events.length >= 1)
416
+
417
+ expect(events.length).toBeGreaterThanOrEqual(1)
418
+ expect(events[0]?.userToken.toLowerCase()).toBe(tokenAddress.toLowerCase())
419
+ expect(events[0]?.validatorToken.toLowerCase()).toBe(
420
+ addresses.alphaUsd.toLowerCase(),
421
+ )
422
+ expect(events[0]?.liquidity).toBe(lpBalance / 2n)
423
+ })
424
+ })