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,504 @@
1
+ import { useEffect } from 'react';
2
+ import { useChainId, useConfig } from 'wagmi';
3
+ import { useMutation, useQuery, } from 'wagmi/query';
4
+ import * as Actions from '../Actions/amm.js';
5
+ /**
6
+ * Hook for getting the reserves for a liquidity pool.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { Hooks } from 'tempo.ts/wagmi'
11
+ *
12
+ * function App() {
13
+ * const { data, isLoading } = Hooks.amm.usePool({
14
+ * userToken: '0x...',
15
+ * validatorToken: '0x...',
16
+ * })
17
+ *
18
+ * if (isLoading) return <div>Loading...</div>
19
+ * return (
20
+ * <div>
21
+ * User Token Reserve: {data?.reserveUserToken.toString()}
22
+ * Validator Token Reserve: {data?.reserveValidatorToken.toString()}
23
+ * </div>
24
+ * )
25
+ * }
26
+ * ```
27
+ *
28
+ * @param parameters - Parameters.
29
+ * @returns Query result with the pool reserves.
30
+ */
31
+ export function usePool(parameters) {
32
+ const { userToken, validatorToken, query = {} } = parameters;
33
+ const config = useConfig(parameters);
34
+ const chainId = useChainId({ config });
35
+ const options = Actions.getPool.queryOptions(config, {
36
+ ...parameters,
37
+ chainId: parameters.chainId ?? chainId,
38
+ query: undefined,
39
+ });
40
+ const enabled = Boolean(userToken !== undefined &&
41
+ validatorToken !== undefined &&
42
+ (query.enabled ?? true));
43
+ return useQuery({ ...query, ...options, enabled });
44
+ }
45
+ /**
46
+ * Hook for getting the LP token balance for an account in a specific pool.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * import { Hooks } from 'tempo.ts/wagmi'
51
+ *
52
+ * function App() {
53
+ * const { data: poolId } = Hooks.amm.usePoolId({
54
+ * userToken: '0x...',
55
+ * validatorToken: '0x...',
56
+ * })
57
+ *
58
+ * const { data, isLoading } = Hooks.amm.useLiquidityBalance({
59
+ * poolId,
60
+ * address: '0x20c...0055',
61
+ * })
62
+ *
63
+ * if (isLoading) return <div>Loading...</div>
64
+ * return <div>LP Balance: {data?.toString()}</div>
65
+ * }
66
+ * ```
67
+ *
68
+ * @param parameters - Parameters.
69
+ * @returns Query result with the LP token balance.
70
+ */
71
+ export function useLiquidityBalance(parameters = {}) {
72
+ const { address, poolId, userToken, validatorToken, query = {} } = parameters;
73
+ const config = useConfig(parameters);
74
+ const chainId = useChainId({ config });
75
+ const options = Actions.getLiquidityBalance.queryOptions(config, {
76
+ ...parameters,
77
+ chainId: parameters.chainId ?? chainId,
78
+ query: undefined,
79
+ });
80
+ const enabled = Boolean(address &&
81
+ (poolId || (userToken !== undefined && validatorToken !== undefined)) &&
82
+ (query.enabled ?? true));
83
+ return useQuery({ ...query, ...options, enabled });
84
+ }
85
+ /**
86
+ * Hook for performing a rebalance swap from validator token to user token.
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * import { Hooks } from 'tempo.ts/wagmi'
91
+ *
92
+ * function App() {
93
+ * const { mutate, isPending } = Hooks.amm.useRebalanceSwap()
94
+ *
95
+ * return (
96
+ * <button
97
+ * onClick={() =>
98
+ * mutate({
99
+ * userToken: '0x...',
100
+ * validatorToken: '0x...',
101
+ * amountOut: 100n,
102
+ * to: '0x...',
103
+ * })
104
+ * }
105
+ * disabled={isPending}
106
+ * >
107
+ * Rebalance Swap
108
+ * </button>
109
+ * )
110
+ * }
111
+ * ```
112
+ *
113
+ * @param parameters - Parameters.
114
+ * @returns Mutation result.
115
+ */
116
+ export function useRebalanceSwap(parameters = {}) {
117
+ const { mutation } = parameters;
118
+ const config = useConfig(parameters);
119
+ return useMutation({
120
+ ...mutation,
121
+ async mutationFn(variables) {
122
+ return Actions.rebalanceSwap(config, variables);
123
+ },
124
+ mutationKey: ['rebalanceSwap'],
125
+ });
126
+ }
127
+ /**
128
+ * Hook for performing a rebalance swap from validator token to user token.
129
+ *
130
+ * Note: This is a synchronous hook that waits for the transaction
131
+ * to be included on a block before returning a response.
132
+ *
133
+ * @example
134
+ * ```tsx
135
+ * import { Hooks } from 'tempo.ts/wagmi'
136
+ *
137
+ * function App() {
138
+ * const { mutate, isPending } = Hooks.amm.useRebalanceSwapSync()
139
+ *
140
+ * return (
141
+ * <button
142
+ * onClick={() =>
143
+ * mutate({
144
+ * userToken: '0x...',
145
+ * validatorToken: '0x...',
146
+ * amountOut: 100n,
147
+ * to: '0x...',
148
+ * })
149
+ * }
150
+ * disabled={isPending}
151
+ * >
152
+ * Rebalance Swap
153
+ * </button>
154
+ * )
155
+ * }
156
+ * ```
157
+ *
158
+ * @param parameters - Parameters.
159
+ * @returns Mutation result.
160
+ */
161
+ export function useRebalanceSwapSync(parameters = {}) {
162
+ const { mutation } = parameters;
163
+ const config = useConfig(parameters);
164
+ return useMutation({
165
+ ...mutation,
166
+ async mutationFn(variables) {
167
+ return Actions.rebalanceSwapSync(config, variables);
168
+ },
169
+ mutationKey: ['rebalanceSwapSync'],
170
+ });
171
+ }
172
+ /**
173
+ * Hook for adding liquidity to a pool.
174
+ *
175
+ * @example
176
+ * ```tsx
177
+ * import { Hooks } from 'tempo.ts/wagmi'
178
+ *
179
+ * function App() {
180
+ * const { mutate, isPending } = Hooks.amm.useMint()
181
+ *
182
+ * return (
183
+ * <button
184
+ * onClick={() =>
185
+ * mutate({
186
+ * userToken: {
187
+ * address: '0x20c0...beef',
188
+ * amount: 100n,
189
+ * },
190
+ * validatorToken: {
191
+ * address: '0x20c0...babe',
192
+ * amount: 100n,
193
+ * },
194
+ * to: '0xfeed...fede',
195
+ * })
196
+ * }
197
+ * disabled={isPending}
198
+ * >
199
+ * Add Liquidity
200
+ * </button>
201
+ * )
202
+ * }
203
+ * ```
204
+ *
205
+ * @param parameters - Parameters.
206
+ * @returns Mutation result.
207
+ */
208
+ export function useMint(parameters = {}) {
209
+ const { mutation } = parameters;
210
+ const config = useConfig(parameters);
211
+ return useMutation({
212
+ ...mutation,
213
+ async mutationFn(variables) {
214
+ return Actions.mint(config, variables);
215
+ },
216
+ mutationKey: ['mint'],
217
+ });
218
+ }
219
+ /**
220
+ * Hook for adding liquidity to a pool.
221
+ *
222
+ * Note: This is a synchronous hook that waits for the transaction
223
+ * to be included on a block before returning a response.
224
+ *
225
+ * @example
226
+ * ```tsx
227
+ * import { Hooks } from 'tempo.ts/wagmi'
228
+ *
229
+ * function App() {
230
+ * const { mutate, isPending } = Hooks.amm.useMintSync()
231
+ *
232
+ * return (
233
+ * <button
234
+ * onClick={() =>
235
+ * mutate({
236
+ * userToken: {
237
+ * address: '0x20c0...beef',
238
+ * amount: 100n,
239
+ * },
240
+ * validatorToken: {
241
+ * address: '0x20c0...babe',
242
+ * amount: 100n,
243
+ * },
244
+ * to: '0xfeed...fede',
245
+ * })
246
+ * }
247
+ * disabled={isPending}
248
+ * >
249
+ * Add Liquidity
250
+ * </button>
251
+ * )
252
+ * }
253
+ * ```
254
+ *
255
+ * @param parameters - Parameters.
256
+ * @returns Mutation result.
257
+ */
258
+ export function useMintSync(parameters = {}) {
259
+ const { mutation } = parameters;
260
+ const config = useConfig(parameters);
261
+ return useMutation({
262
+ ...mutation,
263
+ async mutationFn(variables) {
264
+ return Actions.mintSync(config, variables);
265
+ },
266
+ mutationKey: ['mintSync'],
267
+ });
268
+ }
269
+ /**
270
+ * Hook for removing liquidity from a pool.
271
+ *
272
+ * @example
273
+ * ```tsx
274
+ * import { Hooks } from 'tempo.ts/wagmi'
275
+ *
276
+ * function App() {
277
+ * const { mutate, isPending } = Hooks.amm.useBurn()
278
+ *
279
+ * return (
280
+ * <button
281
+ * onClick={() =>
282
+ * mutate({
283
+ * userToken: '0x20c0...beef',
284
+ * validatorToken: '0x20c0...babe',
285
+ * liquidity: 50n,
286
+ * to: '0xfeed...fede',
287
+ * })
288
+ * }
289
+ * disabled={isPending}
290
+ * >
291
+ * Remove Liquidity
292
+ * </button>
293
+ * )
294
+ * }
295
+ * ```
296
+ *
297
+ * @param parameters - Parameters.
298
+ * @returns Mutation result.
299
+ */
300
+ export function useBurn(parameters = {}) {
301
+ const { mutation } = parameters;
302
+ const config = useConfig(parameters);
303
+ return useMutation({
304
+ ...mutation,
305
+ async mutationFn(variables) {
306
+ return Actions.burn(config, variables);
307
+ },
308
+ mutationKey: ['burn'],
309
+ });
310
+ }
311
+ /**
312
+ * Hook for removing liquidity from a pool.
313
+ *
314
+ * Note: This is a synchronous hook that waits for the transaction
315
+ * to be included on a block before returning a response.
316
+ *
317
+ * @example
318
+ * ```tsx
319
+ * import { Hooks } from 'tempo.ts/wagmi'
320
+ *
321
+ * function App() {
322
+ * const { mutate, isPending } = Hooks.amm.useBurnSync()
323
+ *
324
+ * return (
325
+ * <button
326
+ * onClick={() =>
327
+ * mutate({
328
+ * userToken: '0x20c0...beef',
329
+ * validatorToken: '0x20c0...babe',
330
+ * liquidity: 50n,
331
+ * to: '0xfeed...fede',
332
+ * })
333
+ * }
334
+ * disabled={isPending}
335
+ * >
336
+ * Remove Liquidity
337
+ * </button>
338
+ * )
339
+ * }
340
+ * ```
341
+ *
342
+ * @param parameters - Parameters.
343
+ * @returns Mutation result.
344
+ */
345
+ export function useBurnSync(parameters = {}) {
346
+ const { mutation } = parameters;
347
+ const config = useConfig(parameters);
348
+ return useMutation({
349
+ ...mutation,
350
+ async mutationFn(variables) {
351
+ return Actions.burnSync(config, variables);
352
+ },
353
+ mutationKey: ['burnSync'],
354
+ });
355
+ }
356
+ /**
357
+ * Hook for watching rebalance swap events.
358
+ *
359
+ * @example
360
+ * ```tsx
361
+ * import { Hooks } from 'tempo.ts/wagmi'
362
+ *
363
+ * function App() {
364
+ * Hooks.amm.useWatchRebalanceSwap({
365
+ * onRebalanceSwap(args) {
366
+ * console.log('Rebalance swap:', args)
367
+ * },
368
+ * })
369
+ *
370
+ * return <div>Watching for rebalance swaps...</div>
371
+ * }
372
+ * ```
373
+ *
374
+ * @param parameters - Parameters.
375
+ */
376
+ export function useWatchRebalanceSwap(parameters = {}) {
377
+ const { enabled = true, onRebalanceSwap, ...rest } = parameters;
378
+ const config = useConfig({ config: parameters.config });
379
+ const configChainId = useChainId({ config });
380
+ const chainId = parameters.chainId ?? configChainId;
381
+ useEffect(() => {
382
+ if (!enabled)
383
+ return;
384
+ if (!onRebalanceSwap)
385
+ return;
386
+ return Actions.watchRebalanceSwap(config, {
387
+ ...rest,
388
+ chainId,
389
+ onRebalanceSwap,
390
+ });
391
+ }, [config, enabled, onRebalanceSwap, rest, chainId]);
392
+ }
393
+ /**
394
+ * Hook for watching fee swap events.
395
+ *
396
+ * @example
397
+ * ```tsx
398
+ * import { Hooks } from 'tempo.ts/wagmi'
399
+ *
400
+ * function App() {
401
+ * Hooks.amm.useWatchFeeSwap({
402
+ * onFeeSwap(args) {
403
+ * console.log('Fee swap:', args)
404
+ * },
405
+ * })
406
+ *
407
+ * return <div>Watching for fee swaps...</div>
408
+ * }
409
+ * ```
410
+ *
411
+ * @param parameters - Parameters.
412
+ */
413
+ export function useWatchFeeSwap(parameters = {}) {
414
+ const { enabled = true, onFeeSwap, ...rest } = parameters;
415
+ const config = useConfig({ config: parameters.config });
416
+ const configChainId = useChainId({ config });
417
+ const chainId = parameters.chainId ?? configChainId;
418
+ useEffect(() => {
419
+ if (!enabled)
420
+ return;
421
+ if (!onFeeSwap)
422
+ return;
423
+ return Actions.watchFeeSwap(config, {
424
+ ...rest,
425
+ chainId,
426
+ onFeeSwap,
427
+ });
428
+ }, [config, enabled, onFeeSwap, rest, chainId]);
429
+ }
430
+ /**
431
+ * Hook for watching liquidity mint events.
432
+ *
433
+ * @example
434
+ * ```tsx
435
+ * import { Hooks } from 'tempo.ts/wagmi'
436
+ *
437
+ * function App() {
438
+ * Hooks.amm.useWatchMint({
439
+ * onMint(args) {
440
+ * console.log('Liquidity added:', args)
441
+ * },
442
+ * })
443
+ *
444
+ * return <div>Watching for liquidity additions...</div>
445
+ * }
446
+ * ```
447
+ *
448
+ * @param parameters - Parameters.
449
+ */
450
+ export function useWatchMint(parameters = {}) {
451
+ const { enabled = true, onMint, ...rest } = parameters;
452
+ const config = useConfig({ config: parameters.config });
453
+ const configChainId = useChainId({ config });
454
+ const chainId = parameters.chainId ?? configChainId;
455
+ useEffect(() => {
456
+ if (!enabled)
457
+ return;
458
+ if (!onMint)
459
+ return;
460
+ return Actions.watchMint(config, {
461
+ ...rest,
462
+ chainId,
463
+ onMint,
464
+ });
465
+ }, [config, enabled, onMint, rest, chainId]);
466
+ }
467
+ /**
468
+ * Hook for watching liquidity burn events.
469
+ *
470
+ * @example
471
+ * ```tsx
472
+ * import { Hooks } from 'tempo.ts/wagmi'
473
+ *
474
+ * function App() {
475
+ * Hooks.amm.useWatchBurn({
476
+ * onBurn(args) {
477
+ * console.log('Liquidity removed:', args)
478
+ * },
479
+ * })
480
+ *
481
+ * return <div>Watching for liquidity removals...</div>
482
+ * }
483
+ * ```
484
+ *
485
+ * @param parameters - Parameters.
486
+ */
487
+ export function useWatchBurn(parameters = {}) {
488
+ const { enabled = true, onBurn, ...rest } = parameters;
489
+ const config = useConfig({ config: parameters.config });
490
+ const configChainId = useChainId({ config });
491
+ const chainId = parameters.chainId ?? configChainId;
492
+ useEffect(() => {
493
+ if (!enabled)
494
+ return;
495
+ if (!onBurn)
496
+ return;
497
+ return Actions.watchBurn(config, {
498
+ ...rest,
499
+ chainId,
500
+ onBurn,
501
+ });
502
+ }, [config, enabled, onBurn, rest, chainId]);
503
+ }
504
+ //# sourceMappingURL=amm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amm.js","sourceRoot":"","sources":["../../../src/wagmi/Hooks/amm.ts"],"names":[],"mappings":"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"}