tempo.ts 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) 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 +18 -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 +80 -118
  58. package/dist/viem/Actions/amm.d.ts.map +1 -1
  59. package/dist/viem/Actions/amm.js +47 -116
  60. package/dist/viem/Actions/amm.js.map +1 -1
  61. package/dist/viem/Actions/dex.d.ts +889 -633
  62. package/dist/viem/Actions/dex.d.ts.map +1 -1
  63. package/dist/viem/Actions/dex.js +99 -0
  64. package/dist/viem/Actions/dex.js.map +1 -1
  65. package/dist/viem/Actions/fee.d.ts +3 -17
  66. package/dist/viem/Actions/fee.d.ts.map +1 -1
  67. package/dist/viem/Actions/fee.js.map +1 -1
  68. package/dist/viem/Actions/index.d.ts +1 -0
  69. package/dist/viem/Actions/index.d.ts.map +1 -1
  70. package/dist/viem/Actions/index.js +1 -0
  71. package/dist/viem/Actions/index.js.map +1 -1
  72. package/dist/viem/Actions/reward.d.ts +3236 -0
  73. package/dist/viem/Actions/reward.d.ts.map +1 -0
  74. package/dist/viem/Actions/reward.js +725 -0
  75. package/dist/viem/Actions/reward.js.map +1 -0
  76. package/dist/viem/Actions/token.d.ts +4295 -2646
  77. package/dist/viem/Actions/token.d.ts.map +1 -1
  78. package/dist/viem/Actions/token.js +214 -335
  79. package/dist/viem/Actions/token.js.map +1 -1
  80. package/dist/viem/Addresses.d.ts +1 -2
  81. package/dist/viem/Addresses.d.ts.map +1 -1
  82. package/dist/viem/Addresses.js +1 -2
  83. package/dist/viem/Addresses.js.map +1 -1
  84. package/dist/viem/Chain.d.ts +38 -12
  85. package/dist/viem/Chain.d.ts.map +1 -1
  86. package/dist/viem/Chain.js +27 -18
  87. package/dist/viem/Chain.js.map +1 -1
  88. package/dist/viem/Decorator.d.ts +959 -405
  89. package/dist/viem/Decorator.d.ts.map +1 -1
  90. package/dist/viem/Decorator.js +13 -5
  91. package/dist/viem/Decorator.js.map +1 -1
  92. package/dist/viem/Formatters.d.ts +8 -1
  93. package/dist/viem/Formatters.d.ts.map +1 -1
  94. package/dist/viem/Formatters.js +17 -0
  95. package/dist/viem/Formatters.js.map +1 -1
  96. package/dist/viem/P256.d.ts +2 -0
  97. package/dist/viem/P256.d.ts.map +1 -0
  98. package/dist/viem/P256.js +2 -0
  99. package/dist/viem/P256.js.map +1 -0
  100. package/dist/viem/Secp256k1.d.ts +2 -0
  101. package/dist/viem/Secp256k1.d.ts.map +1 -0
  102. package/dist/viem/Secp256k1.js +2 -0
  103. package/dist/viem/Secp256k1.js.map +1 -0
  104. package/dist/viem/TokenIds.d.ts +1 -2
  105. package/dist/viem/TokenIds.d.ts.map +1 -1
  106. package/dist/viem/TokenIds.js +1 -2
  107. package/dist/viem/TokenIds.js.map +1 -1
  108. package/dist/viem/Transaction.d.ts +1 -1
  109. package/dist/viem/Transaction.d.ts.map +1 -1
  110. package/dist/viem/Transaction.js +46 -5
  111. package/dist/viem/Transaction.js.map +1 -1
  112. package/dist/viem/WebAuthnP256.d.ts +79 -0
  113. package/dist/viem/WebAuthnP256.d.ts.map +1 -0
  114. package/dist/viem/WebAuthnP256.js +95 -0
  115. package/dist/viem/WebAuthnP256.js.map +1 -0
  116. package/dist/viem/WebCryptoP256.d.ts +2 -0
  117. package/dist/viem/WebCryptoP256.d.ts.map +1 -0
  118. package/dist/viem/WebCryptoP256.js +2 -0
  119. package/dist/viem/WebCryptoP256.js.map +1 -0
  120. package/dist/viem/index.d.ts +6 -3
  121. package/dist/viem/index.d.ts.map +1 -1
  122. package/dist/viem/index.js +6 -3
  123. package/dist/viem/index.js.map +1 -1
  124. package/dist/viem/internal/account.d.ts +24 -0
  125. package/dist/viem/internal/account.d.ts.map +1 -0
  126. package/dist/viem/internal/account.js +68 -0
  127. package/dist/viem/internal/account.js.map +1 -0
  128. package/dist/viem/internal/types.d.ts +10 -0
  129. package/dist/viem/internal/types.d.ts.map +1 -1
  130. package/dist/wagmi/Actions/amm.d.ts +428 -0
  131. package/dist/wagmi/Actions/amm.d.ts.map +1 -0
  132. package/dist/wagmi/Actions/amm.js +472 -0
  133. package/dist/wagmi/Actions/amm.js.map +1 -0
  134. package/dist/wagmi/Actions/dex.d.ts +908 -0
  135. package/dist/wagmi/Actions/dex.d.ts.map +1 -0
  136. package/dist/wagmi/Actions/dex.js +1023 -0
  137. package/dist/wagmi/Actions/dex.js.map +1 -0
  138. package/dist/wagmi/Actions/fee.d.ts +111 -0
  139. package/dist/wagmi/Actions/fee.d.ts.map +1 -0
  140. package/dist/wagmi/Actions/fee.js +126 -0
  141. package/dist/wagmi/Actions/fee.js.map +1 -0
  142. package/dist/wagmi/Actions/index.d.ts +6 -0
  143. package/dist/wagmi/Actions/index.d.ts.map +1 -0
  144. package/dist/wagmi/Actions/index.js +6 -0
  145. package/dist/wagmi/Actions/index.js.map +1 -0
  146. package/dist/wagmi/Actions/reward.d.ts +348 -0
  147. package/dist/wagmi/Actions/reward.d.ts.map +1 -0
  148. package/dist/wagmi/Actions/reward.js +388 -0
  149. package/dist/wagmi/Actions/reward.js.map +1 -0
  150. package/dist/wagmi/Actions/token.d.ts +1546 -0
  151. package/dist/wagmi/Actions/token.d.ts.map +1 -0
  152. package/dist/wagmi/Actions/token.js +1712 -0
  153. package/dist/wagmi/Actions/token.js.map +1 -0
  154. package/dist/wagmi/Connector.d.ts +73 -0
  155. package/dist/wagmi/Connector.d.ts.map +1 -0
  156. package/dist/wagmi/Connector.js +249 -0
  157. package/dist/wagmi/Connector.js.map +1 -0
  158. package/dist/wagmi/Hooks/amm.d.ts +421 -0
  159. package/dist/wagmi/Hooks/amm.d.ts.map +1 -0
  160. package/dist/wagmi/Hooks/amm.js +504 -0
  161. package/dist/wagmi/Hooks/amm.js.map +1 -0
  162. package/dist/wagmi/Hooks/dex.d.ts +816 -0
  163. package/dist/wagmi/Hooks/dex.d.ts.map +1 -0
  164. package/dist/wagmi/Hooks/dex.js +973 -0
  165. package/dist/wagmi/Hooks/dex.js.map +1 -0
  166. package/dist/wagmi/Hooks/fee.d.ts +97 -0
  167. package/dist/wagmi/Hooks/fee.d.ts.map +1 -0
  168. package/dist/wagmi/Hooks/fee.js +109 -0
  169. package/dist/wagmi/Hooks/fee.js.map +1 -0
  170. package/dist/wagmi/Hooks/index.d.ts +6 -0
  171. package/dist/wagmi/Hooks/index.d.ts.map +1 -0
  172. package/dist/wagmi/Hooks/index.js +6 -0
  173. package/dist/wagmi/Hooks/index.js.map +1 -0
  174. package/dist/wagmi/Hooks/reward.d.ts +307 -0
  175. package/dist/wagmi/Hooks/reward.d.ts.map +1 -0
  176. package/dist/wagmi/Hooks/reward.js +349 -0
  177. package/dist/wagmi/Hooks/reward.js.map +1 -0
  178. package/dist/wagmi/Hooks/token.d.ts +1388 -0
  179. package/dist/wagmi/Hooks/token.d.ts.map +1 -0
  180. package/dist/wagmi/Hooks/token.js +1657 -0
  181. package/dist/wagmi/Hooks/token.js.map +1 -0
  182. package/dist/wagmi/index.d.ts +4 -0
  183. package/dist/wagmi/index.d.ts.map +1 -0
  184. package/dist/wagmi/index.js +4 -0
  185. package/dist/wagmi/index.js.map +1 -0
  186. package/package.json +54 -10
  187. package/src/chains.ts +19 -9
  188. package/src/ox/Order.test.ts +78 -0
  189. package/src/ox/Order.ts +125 -0
  190. package/src/ox/OrdersFilters.test.ts +182 -0
  191. package/src/ox/OrdersFilters.ts +125 -0
  192. package/src/ox/Pagination.test.ts +162 -0
  193. package/src/ox/Pagination.ts +164 -0
  194. package/src/ox/PoolId.test.ts +33 -0
  195. package/src/ox/PoolId.ts +27 -0
  196. package/src/ox/RpcSchema.ts +35 -0
  197. package/src/ox/SignatureEnvelope.ts +3 -1
  198. package/src/{viem → ox}/Tick.test.ts +1 -1
  199. package/src/{viem → ox}/Tick.ts +5 -0
  200. package/src/ox/Transaction.test.ts +1 -1
  201. package/src/ox/Transaction.ts +2 -1
  202. package/src/ox/TransactionEnvelopeAA.test.ts +239 -96
  203. package/src/ox/TransactionEnvelopeAA.ts +9 -7
  204. package/src/ox/TransactionRequest.ts +4 -0
  205. package/src/ox/index.ts +6 -0
  206. package/src/prool/Instance.ts +51 -37
  207. package/src/prool/internal/chain.json +104 -52
  208. package/src/tsconfig.json +9 -0
  209. package/src/viem/Abis.ts +972 -710
  210. package/src/viem/Account.ts +279 -0
  211. package/src/viem/Actions/__snapshots__/dex.test.ts.snap +850 -0
  212. package/src/viem/Actions/amm.test.ts +98 -169
  213. package/src/viem/Actions/amm.ts +68 -155
  214. package/src/viem/Actions/dex.test.ts +563 -484
  215. package/src/viem/Actions/dex.ts +173 -0
  216. package/src/viem/Actions/fee.test.ts +23 -34
  217. package/src/viem/Actions/fee.ts +7 -0
  218. package/src/viem/Actions/index.ts +1 -0
  219. package/src/viem/Actions/policy.test.ts +19 -33
  220. package/src/viem/Actions/reward.test.ts +457 -0
  221. package/src/viem/Actions/reward.ts +999 -0
  222. package/src/viem/Actions/token.test.ts +453 -287
  223. package/src/viem/Actions/token.ts +452 -540
  224. package/src/viem/Addresses.ts +1 -2
  225. package/src/viem/Chain.ts +70 -20
  226. package/src/viem/Decorator.test.ts +2 -1
  227. package/src/viem/Decorator.ts +996 -421
  228. package/src/viem/Formatters.ts +31 -5
  229. package/src/viem/P256.ts +1 -0
  230. package/src/viem/Secp256k1.ts +1 -0
  231. package/src/viem/TokenIds.ts +1 -2
  232. package/src/viem/Transaction.ts +53 -7
  233. package/src/viem/WebAuthnP256.ts +140 -0
  234. package/src/viem/WebCryptoP256.ts +1 -0
  235. package/src/viem/e2e.test.ts +1126 -297
  236. package/src/viem/index.ts +6 -3
  237. package/src/viem/internal/account.ts +107 -0
  238. package/src/viem/internal/types.ts +9 -0
  239. package/src/wagmi/Actions/__snapshots__/dex.test.ts.snap +310 -0
  240. package/src/wagmi/Actions/amm.test.ts +198 -0
  241. package/src/wagmi/Actions/amm.ts +691 -0
  242. package/src/wagmi/Actions/dex.test.ts +1507 -0
  243. package/src/wagmi/Actions/dex.ts +1640 -0
  244. package/src/wagmi/Actions/fee.test.ts +63 -0
  245. package/src/wagmi/Actions/fee.ts +208 -0
  246. package/src/wagmi/Actions/index.ts +5 -0
  247. package/src/wagmi/Actions/reward.test.ts +210 -0
  248. package/src/wagmi/Actions/reward.ts +632 -0
  249. package/src/wagmi/Actions/token.test.ts +1308 -0
  250. package/src/wagmi/Actions/token.ts +2613 -0
  251. package/src/wagmi/Connector.test.ts +53 -0
  252. package/src/wagmi/Connector.ts +367 -0
  253. package/src/wagmi/Hooks/__snapshots__/dex.test.ts.snap +457 -0
  254. package/src/wagmi/Hooks/amm.test.ts +424 -0
  255. package/src/wagmi/Hooks/amm.ts +806 -0
  256. package/src/wagmi/Hooks/dex.test.ts +1017 -0
  257. package/src/wagmi/Hooks/dex.ts +1685 -0
  258. package/src/wagmi/Hooks/fee.test.ts +166 -0
  259. package/src/wagmi/Hooks/fee.ts +206 -0
  260. package/src/wagmi/Hooks/index.ts +5 -0
  261. package/src/wagmi/Hooks/reward.test.ts +219 -0
  262. package/src/wagmi/Hooks/reward.ts +672 -0
  263. package/src/wagmi/Hooks/token.test.ts +1670 -0
  264. package/src/wagmi/Hooks/token.ts +2906 -0
  265. package/src/wagmi/index.ts +3 -0
  266. package/src/wagmi/internal/types.ts +16 -0
  267. package/dist/viem/Client.d.ts +0 -27
  268. package/dist/viem/Client.d.ts.map +0 -1
  269. package/dist/viem/Client.js +0 -28
  270. package/dist/viem/Client.js.map +0 -1
  271. package/dist/viem/Tick.d.ts.map +0 -1
  272. package/dist/viem/Tick.js.map +0 -1
  273. package/src/viem/Client.bench-d.ts +0 -8
  274. package/src/viem/Client.test.ts +0 -178
  275. package/src/viem/Client.ts +0 -91
  276. /package/dist/{viem → ox}/Tick.js +0 -0
@@ -0,0 +1,1308 @@
1
+ import { connect } from '@wagmi/core'
2
+ import { parseUnits } from 'viem'
3
+ import { describe, expect, test } from 'vitest'
4
+ import { accounts, addresses } from '../../../test/viem/config.js'
5
+ import { config, queryClient } from '../../../test/wagmi/config.js'
6
+ import * as token from './token.js'
7
+
8
+ const account = accounts[0]
9
+ const account2 = accounts[1]
10
+
11
+ describe('getAllowance', () => {
12
+ test('default', async () => {
13
+ const allowance = await token.getAllowance(config, {
14
+ account: account.address,
15
+ spender: account2.address,
16
+ token: addresses.alphaUsd,
17
+ })
18
+ expect(allowance).toBeDefined()
19
+ expect(typeof allowance).toBe('bigint')
20
+ })
21
+
22
+ describe('queryOptions', () => {
23
+ test('default', async () => {
24
+ const options = token.getAllowance.queryOptions(config, {
25
+ account: account.address,
26
+ spender: account2.address,
27
+ token: addresses.alphaUsd,
28
+ })
29
+ const allowance = await queryClient.fetchQuery(options)
30
+ expect(allowance).toBeDefined()
31
+ expect(typeof allowance).toBe('bigint')
32
+ })
33
+ })
34
+ })
35
+
36
+ describe('getBalance', () => {
37
+ test('default', async () => {
38
+ const balance = await token.getBalance(config, {
39
+ account: account.address,
40
+ token: addresses.alphaUsd,
41
+ })
42
+ expect(balance).toBeDefined()
43
+ expect(typeof balance).toBe('bigint')
44
+ expect(balance).toBeGreaterThan(0n)
45
+ })
46
+
47
+ describe('queryOptions', () => {
48
+ test('default', async () => {
49
+ const options = token.getBalance.queryOptions(config, {
50
+ account: account.address,
51
+ token: addresses.alphaUsd,
52
+ })
53
+ const balance = await queryClient.fetchQuery(options)
54
+ expect(balance).toBeDefined()
55
+ expect(typeof balance).toBe('bigint')
56
+ expect(balance).toBeGreaterThan(0n)
57
+ })
58
+ })
59
+ })
60
+
61
+ describe('getMetadata', () => {
62
+ test('default', async () => {
63
+ const metadata = await token.getMetadata(config, {
64
+ token: addresses.alphaUsd,
65
+ })
66
+ expect(metadata).toBeDefined()
67
+ expect(metadata).toMatchInlineSnapshot(`
68
+ {
69
+ "currency": "USD",
70
+ "decimals": 6,
71
+ "name": "AlphaUSD",
72
+ "paused": false,
73
+ "quoteToken": "0x20C0000000000000000000000000000000000000",
74
+ "supplyCap": 340282366920938463463374607431768211455n,
75
+ "symbol": "AlphaUSD",
76
+ "totalSupply": 36893488147419103230n,
77
+ "transferPolicyId": 1n,
78
+ }
79
+ `)
80
+ })
81
+
82
+ describe('queryOptions', () => {
83
+ test('default', async () => {
84
+ const options = token.getMetadata.queryOptions(config, {
85
+ token: addresses.alphaUsd,
86
+ })
87
+ const metadata = await queryClient.fetchQuery(options)
88
+ expect(metadata).toBeDefined()
89
+ expect(metadata).toMatchInlineSnapshot(`
90
+ {
91
+ "currency": "USD",
92
+ "decimals": 6,
93
+ "name": "AlphaUSD",
94
+ "paused": false,
95
+ "quoteToken": "0x20C0000000000000000000000000000000000000",
96
+ "supplyCap": 340282366920938463463374607431768211455n,
97
+ "symbol": "AlphaUSD",
98
+ "totalSupply": 36893488147419103230n,
99
+ "transferPolicyId": 1n,
100
+ }
101
+ `)
102
+ })
103
+ })
104
+ })
105
+
106
+ describe('getRoleAdmin', () => {
107
+ test('default', async () => {
108
+ await connect(config, {
109
+ connector: config.connectors[0]!,
110
+ })
111
+
112
+ // Create a token where we're the admin
113
+ const { token: tokenAddr } = await token.createSync(config, {
114
+ currency: 'USD',
115
+ name: 'GetRoleAdmin Test',
116
+ symbol: 'GRATEST',
117
+ })
118
+
119
+ const adminRole = await token.getRoleAdmin(config, {
120
+ token: tokenAddr,
121
+ role: 'issuer',
122
+ })
123
+ expect(adminRole).toBeDefined()
124
+ expect(typeof adminRole).toBe('string')
125
+ expect(adminRole).toBe(
126
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
127
+ )
128
+ })
129
+
130
+ describe('queryOptions', () => {
131
+ test('default', async () => {
132
+ await connect(config, {
133
+ connector: config.connectors[0]!,
134
+ })
135
+
136
+ // Create a token where we're the admin
137
+ const { token: tokenAddr } = await token.createSync(config, {
138
+ currency: 'USD',
139
+ name: 'GetRoleAdmin Query Test',
140
+ symbol: 'GRAQTEST',
141
+ })
142
+
143
+ const options = token.getRoleAdmin.queryOptions(config, {
144
+ token: tokenAddr,
145
+ role: 'issuer',
146
+ })
147
+ const adminRole = await queryClient.fetchQuery(options)
148
+ expect(adminRole).toBeDefined()
149
+ expect(typeof adminRole).toBe('string')
150
+ expect(adminRole).toBe(
151
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
152
+ )
153
+ })
154
+ })
155
+ })
156
+
157
+ describe('hasRole', () => {
158
+ test('default', async () => {
159
+ await connect(config, {
160
+ connector: config.connectors[0]!,
161
+ })
162
+
163
+ // Create a token where we're the admin
164
+ const { token: tokenAddr } = await token.createSync(config, {
165
+ currency: 'USD',
166
+ name: 'HasRole Test',
167
+ symbol: 'HRTEST',
168
+ })
169
+
170
+ const result = await token.hasRole(config, {
171
+ token: tokenAddr,
172
+ account: account.address,
173
+ role: 'defaultAdmin',
174
+ })
175
+ expect(result).toBeDefined()
176
+ expect(typeof result).toBe('boolean')
177
+ expect(result).toBe(true)
178
+ })
179
+
180
+ describe('queryOptions', () => {
181
+ test('default', async () => {
182
+ await connect(config, {
183
+ connector: config.connectors[0]!,
184
+ })
185
+
186
+ // Create a token where we're the admin
187
+ const { token: tokenAddr } = await token.createSync(config, {
188
+ currency: 'USD',
189
+ name: 'HasRole Query Test',
190
+ symbol: 'HRQTEST',
191
+ })
192
+
193
+ const options = token.hasRole.queryOptions(config, {
194
+ token: tokenAddr,
195
+ account: account.address,
196
+ role: 'defaultAdmin',
197
+ })
198
+ const result = await queryClient.fetchQuery(options)
199
+ expect(result).toBeDefined()
200
+ expect(typeof result).toBe('boolean')
201
+ expect(result).toBe(true)
202
+ })
203
+ })
204
+ })
205
+
206
+ describe('approve', () => {
207
+ test('default', async () => {
208
+ await connect(config, {
209
+ connector: config.connectors[0]!,
210
+ })
211
+ const hash = await token.approve(config, {
212
+ amount: parseUnits('100', 6),
213
+ spender: account2.address,
214
+ token: addresses.alphaUsd,
215
+ })
216
+ expect(hash).toBeDefined()
217
+ expect(typeof hash).toBe('string')
218
+ })
219
+ })
220
+
221
+ describe('approveSync', () => {
222
+ test('default', async () => {
223
+ await connect(config, {
224
+ connector: config.connectors[0]!,
225
+ })
226
+ const { receipt, ...result } = await token.approveSync(config, {
227
+ amount: parseUnits('100', 6),
228
+ spender: account2.address,
229
+ token: addresses.alphaUsd,
230
+ })
231
+ expect(receipt).toBeDefined()
232
+ expect(result).toMatchInlineSnapshot(`
233
+ {
234
+ "amount": 100000000n,
235
+ "owner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
236
+ "spender": "0x8C8d35429F74ec245F8Ef2f4Fd1e551cFF97d650",
237
+ }
238
+ `)
239
+ })
240
+ })
241
+
242
+ describe('transfer', () => {
243
+ test('default', async () => {
244
+ await connect(config, {
245
+ connector: config.connectors[0]!,
246
+ })
247
+ const hash = await token.transfer(config, {
248
+ amount: parseUnits('1', 6),
249
+ to: account2.address,
250
+ token: addresses.alphaUsd,
251
+ })
252
+ expect(hash).toBeDefined()
253
+ expect(typeof hash).toBe('string')
254
+ })
255
+ })
256
+
257
+ describe('transferSync', () => {
258
+ test('default', async () => {
259
+ await connect(config, {
260
+ connector: config.connectors[0]!,
261
+ })
262
+ const { receipt, ...result } = await token.transferSync(config, {
263
+ amount: parseUnits('1', 6),
264
+ to: account2.address,
265
+ token: addresses.alphaUsd,
266
+ })
267
+ expect(receipt).toBeDefined()
268
+ expect(result).toMatchInlineSnapshot(`
269
+ {
270
+ "amount": 1000000n,
271
+ "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
272
+ "to": "0x8C8d35429F74ec245F8Ef2f4Fd1e551cFF97d650",
273
+ }
274
+ `)
275
+ })
276
+ })
277
+
278
+ describe('mint', () => {
279
+ test('default', async () => {
280
+ await connect(config, {
281
+ connector: config.connectors[0]!,
282
+ })
283
+
284
+ // Create a new token where we're the admin
285
+ const { token: tokenAddr } = await token.createSync(config, {
286
+ currency: 'USD',
287
+ name: 'Mintable Token',
288
+ symbol: 'MINT',
289
+ })
290
+
291
+ // Grant issuer role
292
+ await token.grantRolesSync(config, {
293
+ token: tokenAddr,
294
+ roles: ['issuer'],
295
+ to: account.address,
296
+ })
297
+
298
+ const hash = await token.mint(config, {
299
+ token: tokenAddr,
300
+ to: account.address,
301
+ amount: parseUnits('100', 6),
302
+ })
303
+ expect(hash).toBeDefined()
304
+ expect(typeof hash).toBe('string')
305
+ })
306
+ })
307
+
308
+ describe('mintSync', () => {
309
+ test('default', async () => {
310
+ await connect(config, {
311
+ connector: config.connectors[0]!,
312
+ })
313
+
314
+ // Create a new token where we're the admin
315
+ const { token: tokenAddr } = await token.createSync(config, {
316
+ currency: 'USD',
317
+ name: 'Mintable Token Sync',
318
+ symbol: 'MINTSYNC',
319
+ })
320
+
321
+ // Grant issuer role
322
+ await token.grantRolesSync(config, {
323
+ token: tokenAddr,
324
+ roles: ['issuer'],
325
+ to: account.address,
326
+ })
327
+
328
+ const { receipt, ...result } = await token.mintSync(config, {
329
+ token: tokenAddr,
330
+ to: account.address,
331
+ amount: parseUnits('100', 6),
332
+ })
333
+ expect(receipt).toBeDefined()
334
+ expect(result).toMatchInlineSnapshot(`
335
+ {
336
+ "amount": 100000000n,
337
+ "to": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
338
+ }
339
+ `)
340
+ })
341
+ })
342
+
343
+ describe('burn', () => {
344
+ test('default', async () => {
345
+ await connect(config, {
346
+ connector: config.connectors[0]!,
347
+ })
348
+
349
+ // Create a new token where we're the admin
350
+ const { token: tokenAddr } = await token.createSync(config, {
351
+ currency: 'USD',
352
+ name: 'Burnable Token',
353
+ symbol: 'BURN',
354
+ })
355
+
356
+ // Grant issuer role
357
+ await token.grantRolesSync(config, {
358
+ token: tokenAddr,
359
+ roles: ['issuer'],
360
+ to: account.address,
361
+ })
362
+
363
+ // Mint some tokens first
364
+ await token.mintSync(config, {
365
+ token: tokenAddr,
366
+ to: account.address,
367
+ amount: parseUnits('1000', 6),
368
+ })
369
+
370
+ const hash = await token.burn(config, {
371
+ token: tokenAddr,
372
+ amount: parseUnits('1', 6),
373
+ })
374
+ expect(hash).toBeDefined()
375
+ expect(typeof hash).toBe('string')
376
+ })
377
+ })
378
+
379
+ describe('burnSync', () => {
380
+ test('default', async () => {
381
+ await connect(config, {
382
+ connector: config.connectors[0]!,
383
+ })
384
+
385
+ // Create a new token where we're the admin
386
+ const { token: tokenAddr } = await token.createSync(config, {
387
+ currency: 'USD',
388
+ name: 'Burnable Token Sync',
389
+ symbol: 'BURNSYNC',
390
+ })
391
+
392
+ // Grant issuer role
393
+ await token.grantRolesSync(config, {
394
+ token: tokenAddr,
395
+ roles: ['issuer'],
396
+ to: account.address,
397
+ })
398
+
399
+ // Mint some tokens first
400
+ await token.mintSync(config, {
401
+ token: tokenAddr,
402
+ to: account.address,
403
+ amount: parseUnits('1000', 6),
404
+ })
405
+
406
+ const { receipt, ...result } = await token.burnSync(config, {
407
+ token: tokenAddr,
408
+ amount: parseUnits('1', 6),
409
+ })
410
+ expect(receipt).toBeDefined()
411
+ expect(result).toMatchInlineSnapshot(`
412
+ {
413
+ "amount": 1000000n,
414
+ "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
415
+ }
416
+ `)
417
+ })
418
+ })
419
+
420
+ describe('create', () => {
421
+ test('default', async () => {
422
+ await connect(config, {
423
+ connector: config.connectors[0]!,
424
+ })
425
+ const hash = await token.create(config, {
426
+ name: 'Test Token',
427
+ symbol: 'TEST',
428
+ currency: 'USD',
429
+ })
430
+ expect(hash).toBeDefined()
431
+ expect(typeof hash).toBe('string')
432
+ })
433
+ })
434
+
435
+ describe('createSync', () => {
436
+ test('default', async () => {
437
+ await connect(config, {
438
+ connector: config.connectors[0]!,
439
+ })
440
+ const { receipt, ...result } = await token.createSync(config, {
441
+ name: 'Test Token',
442
+ symbol: 'TEST',
443
+ currency: 'USD',
444
+ })
445
+ expect(receipt).toBeDefined()
446
+ expect(result.token).toBeDefined()
447
+ expect(result.tokenId).toBeDefined()
448
+ expect(result.name).toBe('Test Token')
449
+ expect(result.symbol).toBe('TEST')
450
+ expect(result.currency).toBe('USD')
451
+ expect(result.admin).toBe(account.address)
452
+ })
453
+ })
454
+
455
+ describe.todo('burnBlocked')
456
+
457
+ describe.todo('burnBlockedSync')
458
+
459
+ describe('changeTransferPolicy', () => {
460
+ test('default', async () => {
461
+ await connect(config, {
462
+ connector: config.connectors[0]!,
463
+ })
464
+
465
+ // Create a new token
466
+ const { token: tokenAddr } = await token.createSync(config, {
467
+ currency: 'USD',
468
+ name: 'Policy Token',
469
+ symbol: 'POLICY',
470
+ })
471
+
472
+ const hash = await token.changeTransferPolicy(config, {
473
+ token: tokenAddr,
474
+ policyId: 0n,
475
+ })
476
+ expect(hash).toBeDefined()
477
+ expect(typeof hash).toBe('string')
478
+ })
479
+ })
480
+
481
+ describe('changeTransferPolicySync', () => {
482
+ test('default', async () => {
483
+ await connect(config, {
484
+ connector: config.connectors[0]!,
485
+ })
486
+
487
+ // Create a new token
488
+ const { token: tokenAddr } = await token.createSync(config, {
489
+ currency: 'USD',
490
+ name: 'Policy Token Sync',
491
+ symbol: 'POLICYSYNC',
492
+ })
493
+
494
+ const { receipt, ...result } = await token.changeTransferPolicySync(
495
+ config,
496
+ {
497
+ token: tokenAddr,
498
+ policyId: 0n,
499
+ },
500
+ )
501
+ expect(receipt).toBeDefined()
502
+ expect(result).toMatchInlineSnapshot(`
503
+ {
504
+ "newPolicyId": 0n,
505
+ "updater": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
506
+ }
507
+ `)
508
+ })
509
+ })
510
+
511
+ describe('grantRoles', () => {
512
+ test('default', async () => {
513
+ await connect(config, {
514
+ connector: config.connectors[0]!,
515
+ })
516
+
517
+ // Create a new token
518
+ const { token: tokenAddr } = await token.createSync(config, {
519
+ currency: 'USD',
520
+ name: 'Grant Roles Token',
521
+ symbol: 'GRANT',
522
+ })
523
+
524
+ const hash = await token.grantRoles(config, {
525
+ token: tokenAddr,
526
+ roles: ['issuer'],
527
+ to: account2.address,
528
+ })
529
+ expect(hash).toBeDefined()
530
+ expect(typeof hash).toBe('string')
531
+ })
532
+ })
533
+
534
+ describe('grantRolesSync', () => {
535
+ test('default', async () => {
536
+ await connect(config, {
537
+ connector: config.connectors[0]!,
538
+ })
539
+
540
+ // Create a new token
541
+ const { token: tokenAddr } = await token.createSync(config, {
542
+ currency: 'USD',
543
+ name: 'Grant Roles Token Sync',
544
+ symbol: 'GRANTSYNC',
545
+ })
546
+
547
+ const { receipt, value } = await token.grantRolesSync(config, {
548
+ token: tokenAddr,
549
+ roles: ['issuer'],
550
+ to: account2.address,
551
+ })
552
+ expect(receipt).toBeDefined()
553
+ expect(value).toBeDefined()
554
+ expect(value.length).toBe(1)
555
+ expect(value[0]?.account).toBe(account2.address)
556
+ expect(value[0]?.hasRole).toBe(true)
557
+ })
558
+ })
559
+
560
+ describe('pause', () => {
561
+ test('default', async () => {
562
+ await connect(config, {
563
+ connector: config.connectors[0]!,
564
+ })
565
+
566
+ // Create a new token
567
+ const { token: tokenAddr } = await token.createSync(config, {
568
+ currency: 'USD',
569
+ name: 'Pausable Token',
570
+ symbol: 'PAUSE',
571
+ })
572
+
573
+ // Grant pause role
574
+ await token.grantRolesSync(config, {
575
+ token: tokenAddr,
576
+ roles: ['pause'],
577
+ to: account.address,
578
+ })
579
+
580
+ const hash = await token.pause(config, {
581
+ token: tokenAddr,
582
+ })
583
+ expect(hash).toBeDefined()
584
+ expect(typeof hash).toBe('string')
585
+ })
586
+ })
587
+
588
+ describe('pauseSync', () => {
589
+ test('default', async () => {
590
+ await connect(config, {
591
+ connector: config.connectors[0]!,
592
+ })
593
+
594
+ // Create a new token
595
+ const { token: tokenAddr } = await token.createSync(config, {
596
+ currency: 'USD',
597
+ name: 'Pausable Token Sync',
598
+ symbol: 'PAUSESYNC',
599
+ })
600
+
601
+ // Grant pause role
602
+ await token.grantRolesSync(config, {
603
+ token: tokenAddr,
604
+ roles: ['pause'],
605
+ to: account.address,
606
+ })
607
+
608
+ const { receipt, ...result } = await token.pauseSync(config, {
609
+ token: tokenAddr,
610
+ })
611
+ expect(receipt).toBeDefined()
612
+ expect(result).toMatchInlineSnapshot(`
613
+ {
614
+ "isPaused": true,
615
+ "updater": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
616
+ }
617
+ `)
618
+ })
619
+ })
620
+
621
+ describe('unpause', () => {
622
+ test('default', async () => {
623
+ await connect(config, {
624
+ connector: config.connectors[0]!,
625
+ })
626
+
627
+ // Create a new token
628
+ const { token: tokenAddr } = await token.createSync(config, {
629
+ currency: 'USD',
630
+ name: 'Unpausable Token',
631
+ symbol: 'UNPAUSE',
632
+ })
633
+
634
+ // Grant pause and unpause roles
635
+ await token.grantRolesSync(config, {
636
+ token: tokenAddr,
637
+ roles: ['pause', 'unpause'],
638
+ to: account.address,
639
+ })
640
+
641
+ // First pause it
642
+ await token.pauseSync(config, {
643
+ token: tokenAddr,
644
+ })
645
+
646
+ const hash = await token.unpause(config, {
647
+ token: tokenAddr,
648
+ })
649
+ expect(hash).toBeDefined()
650
+ expect(typeof hash).toBe('string')
651
+ })
652
+ })
653
+
654
+ describe('unpauseSync', () => {
655
+ test('default', async () => {
656
+ await connect(config, {
657
+ connector: config.connectors[0]!,
658
+ })
659
+
660
+ // Create a new token
661
+ const { token: tokenAddr } = await token.createSync(config, {
662
+ currency: 'USD',
663
+ name: 'Unpausable Token Sync',
664
+ symbol: 'UNPAUSESYNC',
665
+ })
666
+
667
+ // Grant pause and unpause roles
668
+ await token.grantRolesSync(config, {
669
+ token: tokenAddr,
670
+ roles: ['pause', 'unpause'],
671
+ to: account.address,
672
+ })
673
+
674
+ // First pause it
675
+ await token.pauseSync(config, {
676
+ token: tokenAddr,
677
+ })
678
+
679
+ const { receipt, ...result } = await token.unpauseSync(config, {
680
+ token: tokenAddr,
681
+ })
682
+ expect(receipt).toBeDefined()
683
+ expect(result).toMatchInlineSnapshot(`
684
+ {
685
+ "isPaused": false,
686
+ "updater": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
687
+ }
688
+ `)
689
+ })
690
+ })
691
+
692
+ describe('revokeRoles', () => {
693
+ test('default', async () => {
694
+ await connect(config, {
695
+ connector: config.connectors[0]!,
696
+ })
697
+
698
+ // Create a new token
699
+ const { token: tokenAddr } = await token.createSync(config, {
700
+ currency: 'USD',
701
+ name: 'Revoke Roles Token',
702
+ symbol: 'REVOKE',
703
+ })
704
+
705
+ // Grant issuer role to account2
706
+ await token.grantRolesSync(config, {
707
+ token: tokenAddr,
708
+ roles: ['issuer'],
709
+ to: account2.address,
710
+ })
711
+
712
+ const hash = await token.revokeRoles(config, {
713
+ token: tokenAddr,
714
+ roles: ['issuer'],
715
+ from: account2.address,
716
+ })
717
+ expect(hash).toBeDefined()
718
+ expect(typeof hash).toBe('string')
719
+ })
720
+ })
721
+
722
+ describe('revokeRolesSync', () => {
723
+ test('default', async () => {
724
+ await connect(config, {
725
+ connector: config.connectors[0]!,
726
+ })
727
+
728
+ // Create a new token
729
+ const { token: tokenAddr } = await token.createSync(config, {
730
+ currency: 'USD',
731
+ name: 'Revoke Roles Token Sync',
732
+ symbol: 'REVOKESYNC',
733
+ })
734
+
735
+ // Grant issuer role to account2
736
+ await token.grantRolesSync(config, {
737
+ token: tokenAddr,
738
+ roles: ['issuer'],
739
+ to: account2.address,
740
+ })
741
+
742
+ const { receipt, value } = await token.revokeRolesSync(config, {
743
+ token: tokenAddr,
744
+ roles: ['issuer'],
745
+ from: account2.address,
746
+ })
747
+ expect(receipt).toBeDefined()
748
+ expect(value).toBeDefined()
749
+ expect(value.length).toBe(1)
750
+ expect(value[0]?.account).toBe(account2.address)
751
+ expect(value[0]?.hasRole).toBe(false)
752
+ })
753
+ })
754
+
755
+ describe('renounceRoles', () => {
756
+ test('default', async () => {
757
+ await connect(config, {
758
+ connector: config.connectors[0]!,
759
+ })
760
+
761
+ // Create a new token
762
+ const { token: tokenAddr } = await token.createSync(config, {
763
+ currency: 'USD',
764
+ name: 'Renounce Roles Token',
765
+ symbol: 'RENOUNCE',
766
+ })
767
+
768
+ // Grant issuer role to ourselves
769
+ await token.grantRolesSync(config, {
770
+ token: tokenAddr,
771
+ roles: ['issuer'],
772
+ to: account.address,
773
+ })
774
+
775
+ const hash = await token.renounceRoles(config, {
776
+ token: tokenAddr,
777
+ roles: ['issuer'],
778
+ })
779
+ expect(hash).toBeDefined()
780
+ expect(typeof hash).toBe('string')
781
+ })
782
+ })
783
+
784
+ describe('renounceRolesSync', () => {
785
+ test('default', async () => {
786
+ await connect(config, {
787
+ connector: config.connectors[0]!,
788
+ })
789
+
790
+ // Create a new token
791
+ const { token: tokenAddr } = await token.createSync(config, {
792
+ currency: 'USD',
793
+ name: 'Renounce Roles Token Sync',
794
+ symbol: 'RENOUNCESYNC',
795
+ })
796
+
797
+ // Grant issuer role to ourselves
798
+ await token.grantRolesSync(config, {
799
+ token: tokenAddr,
800
+ roles: ['issuer'],
801
+ to: account.address,
802
+ })
803
+
804
+ const { receipt, value } = await token.renounceRolesSync(config, {
805
+ token: tokenAddr,
806
+ roles: ['issuer'],
807
+ })
808
+ expect(receipt).toBeDefined()
809
+ expect(value).toBeDefined()
810
+ expect(value.length).toBe(1)
811
+ expect(value[0]?.account).toBe(account.address)
812
+ expect(value[0]?.hasRole).toBe(false)
813
+ })
814
+ })
815
+
816
+ describe('setRoleAdmin', () => {
817
+ test('default', async () => {
818
+ await connect(config, {
819
+ connector: config.connectors[0]!,
820
+ })
821
+
822
+ // Create a new token
823
+ const { token: tokenAddr } = await token.createSync(config, {
824
+ currency: 'USD',
825
+ name: 'Role Admin Token',
826
+ symbol: 'ROLEADMIN',
827
+ })
828
+
829
+ const hash = await token.setRoleAdmin(config, {
830
+ token: tokenAddr,
831
+ role: 'issuer',
832
+ adminRole: 'pause',
833
+ })
834
+ expect(hash).toBeDefined()
835
+ expect(typeof hash).toBe('string')
836
+ })
837
+ })
838
+
839
+ describe('setRoleAdminSync', () => {
840
+ test('default', async () => {
841
+ await connect(config, {
842
+ connector: config.connectors[0]!,
843
+ })
844
+
845
+ // Create a new token
846
+ const { token: tokenAddr } = await token.createSync(config, {
847
+ currency: 'USD',
848
+ name: 'Role Admin Token Sync',
849
+ symbol: 'ROLEADMINSYNC',
850
+ })
851
+
852
+ const { receipt, ...result } = await token.setRoleAdminSync(config, {
853
+ token: tokenAddr,
854
+ role: 'issuer',
855
+ adminRole: 'pause',
856
+ })
857
+ expect(receipt).toBeDefined()
858
+ expect(result.role).toBeDefined()
859
+ expect(result.newAdminRole).toBeDefined()
860
+ expect(result.sender).toBe(account.address)
861
+ })
862
+ })
863
+
864
+ describe('setSupplyCap', () => {
865
+ test('default', async () => {
866
+ await connect(config, {
867
+ connector: config.connectors[0]!,
868
+ })
869
+
870
+ // Create a new token
871
+ const { token: tokenAddr } = await token.createSync(config, {
872
+ currency: 'USD',
873
+ name: 'Supply Cap Token',
874
+ symbol: 'SUPPLYCAP',
875
+ })
876
+
877
+ const hash = await token.setSupplyCap(config, {
878
+ token: tokenAddr,
879
+ supplyCap: parseUnits('1000000', 6),
880
+ })
881
+ expect(hash).toBeDefined()
882
+ expect(typeof hash).toBe('string')
883
+ })
884
+ })
885
+
886
+ describe('setSupplyCapSync', () => {
887
+ test('default', async () => {
888
+ await connect(config, {
889
+ connector: config.connectors[0]!,
890
+ })
891
+
892
+ // Create a new token
893
+ const { token: tokenAddr } = await token.createSync(config, {
894
+ currency: 'USD',
895
+ name: 'Supply Cap Token Sync',
896
+ symbol: 'SUPPLYCAPSYNC',
897
+ })
898
+
899
+ const { receipt, ...result } = await token.setSupplyCapSync(config, {
900
+ token: tokenAddr,
901
+ supplyCap: parseUnits('1000000', 6),
902
+ })
903
+ expect(receipt).toBeDefined()
904
+ expect(result.newSupplyCap).toBe(parseUnits('1000000', 6))
905
+ expect(result.updater).toBe(account.address)
906
+ })
907
+ })
908
+
909
+ describe('prepareUpdateQuoteToken', () => {
910
+ test('default', async () => {
911
+ await connect(config, {
912
+ connector: config.connectors[0]!,
913
+ })
914
+
915
+ // Create quote token
916
+ const { token: quoteToken } = await token.createSync(config, {
917
+ currency: 'USD',
918
+ name: 'Quote Token',
919
+ symbol: 'QUOTE',
920
+ })
921
+
922
+ // Create main token
923
+ const { token: tokenAddr } = await token.createSync(config, {
924
+ currency: 'USD',
925
+ name: 'Main Token',
926
+ symbol: 'MAIN',
927
+ })
928
+
929
+ const hash = await token.prepareUpdateQuoteToken(config, {
930
+ token: tokenAddr,
931
+ quoteToken,
932
+ })
933
+ expect(hash).toBeDefined()
934
+ expect(typeof hash).toBe('string')
935
+ })
936
+ })
937
+
938
+ describe('prepareUpdateQuoteTokenSync', () => {
939
+ test('default', async () => {
940
+ await connect(config, {
941
+ connector: config.connectors[0]!,
942
+ })
943
+
944
+ // Create quote token
945
+ const { token: quoteToken } = await token.createSync(config, {
946
+ currency: 'USD',
947
+ name: 'Quote Token Sync',
948
+ symbol: 'QUOTESYNC',
949
+ })
950
+
951
+ // Create main token
952
+ const { token: tokenAddr } = await token.createSync(config, {
953
+ currency: 'USD',
954
+ name: 'Main Token Sync',
955
+ symbol: 'MAINSYNC',
956
+ })
957
+
958
+ const { receipt, ...result } = await token.prepareUpdateQuoteTokenSync(
959
+ config,
960
+ {
961
+ token: tokenAddr,
962
+ quoteToken,
963
+ },
964
+ )
965
+ expect(receipt).toBeDefined()
966
+ expect(result.nextQuoteToken).toBe(quoteToken)
967
+ expect(result.updater).toBe(account.address)
968
+ })
969
+ })
970
+
971
+ describe('updateQuoteToken', () => {
972
+ test('default', async () => {
973
+ await connect(config, {
974
+ connector: config.connectors[0]!,
975
+ })
976
+
977
+ // Create quote token
978
+ const { token: quoteToken } = await token.createSync(config, {
979
+ currency: 'USD',
980
+ name: 'Quote Token Finalize',
981
+ symbol: 'QUOTEFINAL',
982
+ })
983
+
984
+ // Create main token
985
+ const { token: tokenAddr } = await token.createSync(config, {
986
+ currency: 'USD',
987
+ name: 'Main Token Finalize',
988
+ symbol: 'MAINFINAL',
989
+ })
990
+
991
+ // Prepare quote token update first
992
+ await token.prepareUpdateQuoteTokenSync(config, {
993
+ token: tokenAddr,
994
+ quoteToken,
995
+ })
996
+
997
+ const hash = await token.updateQuoteToken(config, {
998
+ token: tokenAddr,
999
+ })
1000
+ expect(hash).toBeDefined()
1001
+ expect(typeof hash).toBe('string')
1002
+ })
1003
+ })
1004
+
1005
+ describe('updateQuoteTokenSync', () => {
1006
+ test('default', async () => {
1007
+ await connect(config, {
1008
+ connector: config.connectors[0]!,
1009
+ })
1010
+
1011
+ // Create quote token
1012
+ const { token: quoteToken } = await token.createSync(config, {
1013
+ currency: 'USD',
1014
+ name: 'Quote Token Finalize Sync',
1015
+ symbol: 'QUOTEFINALSYNC',
1016
+ })
1017
+
1018
+ // Create main token
1019
+ const { token: tokenAddr } = await token.createSync(config, {
1020
+ currency: 'USD',
1021
+ name: 'Main Token Finalize Sync',
1022
+ symbol: 'MAINFINALSYNC',
1023
+ })
1024
+
1025
+ // Prepare quote token update first
1026
+ await token.prepareUpdateQuoteTokenSync(config, {
1027
+ token: tokenAddr,
1028
+ quoteToken,
1029
+ })
1030
+
1031
+ const { receipt, ...result } = await token.updateQuoteTokenSync(config, {
1032
+ token: tokenAddr,
1033
+ })
1034
+ expect(receipt).toBeDefined()
1035
+ expect(result.newQuoteToken).toBe(quoteToken)
1036
+ expect(result.updater).toBe(account.address)
1037
+ })
1038
+ })
1039
+
1040
+ describe.todo('permit')
1041
+
1042
+ describe.todo('permitSync')
1043
+
1044
+ describe('watchAdminRole', () => {
1045
+ test('default', async () => {
1046
+ await connect(config, {
1047
+ connector: config.connectors[0]!,
1048
+ })
1049
+
1050
+ // Create a new token
1051
+ const { token: tokenAddr } = await token.createSync(config, {
1052
+ currency: 'USD',
1053
+ name: 'Watch Admin Role Token',
1054
+ symbol: 'WATCHADMIN',
1055
+ })
1056
+
1057
+ const events: any[] = []
1058
+ const unwatch = token.watchAdminRole(config, {
1059
+ token: tokenAddr,
1060
+ onRoleAdminUpdated: (args) => {
1061
+ events.push(args)
1062
+ },
1063
+ })
1064
+
1065
+ // Trigger event by setting a role admin
1066
+ await token.setRoleAdminSync(config, {
1067
+ token: tokenAddr,
1068
+ role: 'issuer',
1069
+ adminRole: 'pause',
1070
+ })
1071
+
1072
+ // Wait a bit for the event to be processed
1073
+ await new Promise((resolve) => setTimeout(resolve, 500))
1074
+
1075
+ expect(events.length).toBeGreaterThan(0)
1076
+ expect(events[0]).toBeDefined()
1077
+ unwatch()
1078
+ })
1079
+ })
1080
+
1081
+ describe('watchApprove', () => {
1082
+ test('default', async () => {
1083
+ await connect(config, {
1084
+ connector: config.connectors[0]!,
1085
+ })
1086
+
1087
+ const events: any[] = []
1088
+ const unwatch = token.watchApprove(config, {
1089
+ onApproval: (args) => {
1090
+ events.push(args)
1091
+ },
1092
+ token: addresses.alphaUsd,
1093
+ })
1094
+
1095
+ // Trigger approval event
1096
+ await token.approveSync(config, {
1097
+ amount: parseUnits('50', 6),
1098
+ spender: account2.address,
1099
+ token: addresses.alphaUsd,
1100
+ })
1101
+
1102
+ // Wait a bit for the event to be processed
1103
+ await new Promise((resolve) => setTimeout(resolve, 500))
1104
+
1105
+ expect(events.length).toBeGreaterThan(0)
1106
+ expect(events[0]?.owner).toBe(account.address)
1107
+ expect(events[0]?.spender).toBe(account2.address)
1108
+ expect(events[0]?.amount).toBe(parseUnits('50', 6))
1109
+ unwatch()
1110
+ })
1111
+ })
1112
+
1113
+ describe('watchBurn', () => {
1114
+ test('default', async () => {
1115
+ await connect(config, {
1116
+ connector: config.connectors[0]!,
1117
+ })
1118
+
1119
+ // Create a new token
1120
+ const { token: tokenAddr } = await token.createSync(config, {
1121
+ currency: 'USD',
1122
+ name: 'Watch Burn Token',
1123
+ symbol: 'WATCHBURN',
1124
+ })
1125
+
1126
+ // Grant issuer role and mint tokens
1127
+ await token.grantRolesSync(config, {
1128
+ token: tokenAddr,
1129
+ roles: ['issuer'],
1130
+ to: account.address,
1131
+ })
1132
+ await token.mintSync(config, {
1133
+ token: tokenAddr,
1134
+ to: account.address,
1135
+ amount: parseUnits('1000', 6),
1136
+ })
1137
+
1138
+ const events: any[] = []
1139
+ const unwatch = token.watchBurn(config, {
1140
+ token: tokenAddr,
1141
+ onBurn: (args) => {
1142
+ events.push(args)
1143
+ },
1144
+ })
1145
+
1146
+ // Trigger burn event
1147
+ await token.burnSync(config, {
1148
+ token: tokenAddr,
1149
+ amount: parseUnits('10', 6),
1150
+ })
1151
+
1152
+ // Wait a bit for the event to be processed
1153
+ await new Promise((resolve) => setTimeout(resolve, 500))
1154
+
1155
+ expect(events.length).toBeGreaterThan(0)
1156
+ expect(events[0]?.from).toBe(account.address)
1157
+ expect(events[0]?.amount).toBe(parseUnits('10', 6))
1158
+ unwatch()
1159
+ })
1160
+ })
1161
+
1162
+ describe('watchCreate', () => {
1163
+ test('default', async () => {
1164
+ await connect(config, {
1165
+ connector: config.connectors[0]!,
1166
+ })
1167
+
1168
+ const events: any[] = []
1169
+ const unwatch = token.watchCreate(config, {
1170
+ onTokenCreated: (args) => {
1171
+ events.push(args)
1172
+ },
1173
+ })
1174
+
1175
+ // Trigger token creation event
1176
+ await token.createSync(config, {
1177
+ name: 'Watch Create Token',
1178
+ symbol: 'WATCHCREATE',
1179
+ currency: 'USD',
1180
+ })
1181
+
1182
+ // Wait a bit for the event to be processed
1183
+ await new Promise((resolve) => setTimeout(resolve, 500))
1184
+
1185
+ expect(events.length).toBeGreaterThan(0)
1186
+ expect(events[0]?.name).toBe('Watch Create Token')
1187
+ expect(events[0]?.symbol).toBe('WATCHCREATE')
1188
+ expect(events[0]?.currency).toBe('USD')
1189
+ expect(events[0]?.admin).toBe(account.address)
1190
+ unwatch()
1191
+ })
1192
+ })
1193
+
1194
+ describe('watchMint', () => {
1195
+ test('default', async () => {
1196
+ await connect(config, {
1197
+ connector: config.connectors[0]!,
1198
+ })
1199
+
1200
+ // Create a new token
1201
+ const { token: tokenAddr } = await token.createSync(config, {
1202
+ currency: 'USD',
1203
+ name: 'Watch Mint Token',
1204
+ symbol: 'WATCHMINT',
1205
+ })
1206
+
1207
+ // Grant issuer role
1208
+ await token.grantRolesSync(config, {
1209
+ token: tokenAddr,
1210
+ roles: ['issuer'],
1211
+ to: account.address,
1212
+ })
1213
+
1214
+ const events: any[] = []
1215
+ const unwatch = token.watchMint(config, {
1216
+ token: tokenAddr,
1217
+ onMint: (args) => {
1218
+ events.push(args)
1219
+ },
1220
+ })
1221
+
1222
+ // Trigger mint event
1223
+ await token.mintSync(config, {
1224
+ token: tokenAddr,
1225
+ to: account.address,
1226
+ amount: parseUnits('100', 6),
1227
+ })
1228
+
1229
+ // Wait a bit for the event to be processed
1230
+ await new Promise((resolve) => setTimeout(resolve, 500))
1231
+
1232
+ expect(events.length).toBeGreaterThan(0)
1233
+ expect(events[0]?.to).toBe(account.address)
1234
+ expect(events[0]?.amount).toBe(parseUnits('100', 6))
1235
+ unwatch()
1236
+ })
1237
+ })
1238
+
1239
+ describe('watchRole', () => {
1240
+ test('default', async () => {
1241
+ await connect(config, {
1242
+ connector: config.connectors[0]!,
1243
+ })
1244
+
1245
+ // Create a new token
1246
+ const { token: tokenAddr } = await token.createSync(config, {
1247
+ currency: 'USD',
1248
+ name: 'Watch Role Token',
1249
+ symbol: 'WATCHROLE',
1250
+ })
1251
+
1252
+ const events: any[] = []
1253
+ const unwatch = token.watchRole(config, {
1254
+ token: tokenAddr,
1255
+ onRoleUpdated: (args) => {
1256
+ events.push(args)
1257
+ },
1258
+ })
1259
+
1260
+ // Trigger role update event by granting a role
1261
+ await token.grantRolesSync(config, {
1262
+ token: tokenAddr,
1263
+ roles: ['issuer'],
1264
+ to: account2.address,
1265
+ })
1266
+
1267
+ // Wait a bit for the event to be processed
1268
+ await new Promise((resolve) => setTimeout(resolve, 500))
1269
+
1270
+ expect(events.length).toBeGreaterThan(0)
1271
+ expect(events[0]?.account).toBe(account2.address)
1272
+ expect(events[0]?.hasRole).toBe(true)
1273
+ expect(events[0]?.type).toBe('granted')
1274
+ unwatch()
1275
+ })
1276
+ })
1277
+
1278
+ describe('watchTransfer', () => {
1279
+ test('default', async () => {
1280
+ await connect(config, {
1281
+ connector: config.connectors[0]!,
1282
+ })
1283
+
1284
+ const events: any[] = []
1285
+ const unwatch = token.watchTransfer(config, {
1286
+ token: addresses.alphaUsd,
1287
+ onTransfer: (args) => {
1288
+ events.push(args)
1289
+ },
1290
+ })
1291
+
1292
+ // Trigger transfer event
1293
+ await token.transferSync(config, {
1294
+ amount: parseUnits('5', 6),
1295
+ to: account2.address,
1296
+ token: addresses.alphaUsd,
1297
+ })
1298
+
1299
+ // Wait a bit for the event to be processed
1300
+ await new Promise((resolve) => setTimeout(resolve, 500))
1301
+
1302
+ expect(events.length).toBeGreaterThan(0)
1303
+ expect(events[0]?.from).toBe(account.address)
1304
+ expect(events[0]?.to).toBe(account2.address)
1305
+ expect(events[0]?.amount).toBe(parseUnits('5', 6))
1306
+ unwatch()
1307
+ })
1308
+ })