@tempoxyz/id 0.0.0-stage → 0.0.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 (1096) hide show
  1. package/README.md +121 -2
  2. package/dist/App.d.ts +121 -0
  3. package/dist/App.d.ts.map +1 -0
  4. package/dist/App.js +132 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/app/client/.assetsignore +2 -0
  7. package/dist/app/client/_headers +4 -0
  8. package/dist/app/client/assets/Account-BYLpNFf3.css +1 -0
  9. package/dist/app/client/assets/Account-BllJah07.js +1 -0
  10. package/dist/app/client/assets/Amount-E_7snI0-.js +1 -0
  11. package/dist/app/client/assets/Amount-ZdtluGf-.css +1 -0
  12. package/dist/app/client/assets/Approval-CgV5JHlb.css +1 -0
  13. package/dist/app/client/assets/Approval-yKflypU2.js +1 -0
  14. package/dist/app/client/assets/ArrowUp-CRvqfMNU.js +1 -0
  15. package/dist/app/client/assets/Authentication-BAXhOh_4.js +2 -0
  16. package/dist/app/client/assets/BRLA-CZvVDNYr.png +0 -0
  17. package/dist/app/client/assets/BRZ-Cn3jEi9t.svg +1 -0
  18. package/dist/app/client/assets/CHFAU-DCedc4aH.png +0 -0
  19. package/dist/app/client/assets/Callout-B736759d.js +1 -0
  20. package/dist/app/client/assets/Callout-DBfEmP7q.css +1 -0
  21. package/dist/app/client/assets/Check-DVgD8tDG.js +1 -0
  22. package/dist/app/client/assets/ChevronRight-CsXtIZCB.js +1 -0
  23. package/dist/app/client/assets/ChooseAccount-BjxfQjPK.js +1 -0
  24. package/dist/app/client/assets/ChooseAccount-DL3wgJhE.css +1 -0
  25. package/dist/app/client/assets/Client-JrABNovb.js +1 -0
  26. package/dist/app/client/assets/Close-CRvWlhqc.js +1 -0
  27. package/dist/app/client/assets/Cloud-DgJsrqpQ.js +1 -0
  28. package/dist/app/client/assets/CodeInput-79Ctx8ZA.js +1 -0
  29. package/dist/app/client/assets/CodeInput-BqRteSwD.css +1 -0
  30. package/dist/app/client/assets/DLUSD-BnRXm3EI.png +0 -0
  31. package/dist/app/client/assets/Deposit-CclrAoXL.css +1 -0
  32. package/dist/app/client/assets/Deposit-c7uYn2Eb.js +1 -0
  33. package/dist/app/client/assets/DevTools-BYkmtuV5.css +1 -0
  34. package/dist/app/client/assets/DevTools-BgnzDGo2.js +1 -0
  35. package/dist/app/client/assets/DeviceApproval-BBUVv58e.js +1 -0
  36. package/dist/app/client/assets/DeviceApproval-BffFLD8F.css +1 -0
  37. package/dist/app/client/assets/EURAU-sjieTTB9.svg +1 -0
  38. package/dist/app/client/assets/EURC.e-CxYiiwkz.svg +1 -0
  39. package/dist/app/client/assets/Fingerprint-BNCA6qOJ.js +1 -0
  40. package/dist/app/client/assets/GBPA-DI_25xSG.svg +4 -0
  41. package/dist/app/client/assets/GUSD-BDEP2Qb-.svg +1 -0
  42. package/dist/app/client/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  43. package/dist/app/client/assets/Globe-f0eWzcEI.js +1 -0
  44. package/dist/app/client/assets/Grant-5a-n1gJH.css +1 -0
  45. package/dist/app/client/assets/Grant-Dp7mpcEi.js +1 -0
  46. package/dist/app/client/assets/Hex-C9KeV7_9.css +1 -0
  47. package/dist/app/client/assets/Hex-CSp2U46W.js +10 -0
  48. package/dist/app/client/assets/IconChip-DpZHa1JW.js +1 -0
  49. package/dist/app/client/assets/IconChip-yqaQ2y_d.css +1 -0
  50. package/dist/app/client/assets/InputGroup-BlZvt9In.css +1 -0
  51. package/dist/app/client/assets/InputGroup-CsOeBnpB.js +1 -0
  52. package/dist/app/client/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  53. package/dist/app/client/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  54. package/dist/app/client/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  55. package/dist/app/client/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  56. package/dist/app/client/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  57. package/dist/app/client/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  58. package/dist/app/client/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  59. package/dist/app/client/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  60. package/dist/app/client/assets/Loader-Cm9YJNNJ.js +1 -0
  61. package/dist/app/client/assets/MACH-sK0r79kQ.svg +4 -0
  62. package/dist/app/client/assets/OUSD-BFXgVo-Z.svg +5 -0
  63. package/dist/app/client/assets/OUSD.dark-BbbjMvA1.svg +17 -0
  64. package/dist/app/client/assets/OUSD.light-B_zpSz_c.svg +17 -0
  65. package/dist/app/client/assets/PRIME-CiFp2-3e.svg +14 -0
  66. package/dist/app/client/assets/PopoverPopup-DprRXRQe.js +1 -0
  67. package/dist/app/client/assets/Rows-DPGTUdA8.css +1 -0
  68. package/dist/app/client/assets/Rows-Qqo3evtk.js +1 -0
  69. package/dist/app/client/assets/SBC-BTYkbkiD.svg +1 -0
  70. package/dist/app/client/assets/SEKAU-CB5Fc6o8.svg +5 -0
  71. package/dist/app/client/assets/Separator-CZUjVQOL.js +1 -0
  72. package/dist/app/client/assets/SignIn-HdaDzFmq.js +1 -0
  73. package/dist/app/client/assets/SignIn-mlBTwUq4.css +1 -0
  74. package/dist/app/client/assets/Stack-CkkvkOzj.js +1 -0
  75. package/dist/app/client/assets/Stack-D7Yt22Ed.css +1 -0
  76. package/dist/app/client/assets/Tag-BMh6ajrW.css +1 -0
  77. package/dist/app/client/assets/Tag-CLOVANTX.js +1 -0
  78. package/dist/app/client/assets/ToolbarRootContext-Zty_Dh3J.js +1 -0
  79. package/dist/app/client/assets/Tooltip-CLATV6YU.js +1 -0
  80. package/dist/app/client/assets/Tooltip-d3y9ESUJ.css +1 -0
  81. package/dist/app/client/assets/USD1-COVcO_PB.svg +30 -0
  82. package/dist/app/client/assets/USDB-Ckwb6UQw.svg +11 -0
  83. package/dist/app/client/assets/USDC.e-3nMsKAMC.svg +1 -0
  84. package/dist/app/client/assets/USDT0-ia60Dw0e.svg +1 -0
  85. package/dist/app/client/assets/USDY-CB4iet2q.svg +16 -0
  86. package/dist/app/client/assets/USDe-BXHQCd92.svg +1 -0
  87. package/dist/app/client/assets/Upgrade-D0_aO5AP.js +1 -0
  88. package/dist/app/client/assets/WalletUpgrade-BPsPNQsd.js +1 -0
  89. package/dist/app/client/assets/WalletUpgrade-C04kW0Jl.css +1 -0
  90. package/dist/app/client/assets/YLDS-CRh8Zw0g.svg +3 -0
  91. package/dist/app/client/assets/___-I98bns4o.css +1 -0
  92. package/dist/app/client/assets/___.flows-XOlLwMIy.js +5 -0
  93. package/dist/app/client/assets/alphaUSD-CpCFoVuh.svg +1 -0
  94. package/dist/app/client/assets/authorize-C-MlCyaM.js +1 -0
  95. package/dist/app/client/assets/betaUSD-9A8AjgYg.svg +1 -0
  96. package/dist/app/client/assets/cUSD-WsQfa-iC.svg +1 -0
  97. package/dist/app/client/assets/cbBTC-DvUDqrDi.svg +1 -0
  98. package/dist/app/client/assets/choose-account-nXR-SKa2.js +1 -0
  99. package/dist/app/client/assets/deposit-G8tiLPN4.js +1 -0
  100. package/dist/app/client/assets/device-BojBF7hZ.js +1 -0
  101. package/dist/app/client/assets/error-KiOpX7GD.js +1 -0
  102. package/dist/app/client/assets/frxUSD-n9pTpinR.svg +1 -0
  103. package/dist/app/client/assets/getPseudoElementBounds-BsLy4zf_.js +1 -0
  104. package/dist/app/client/assets/goUSD-D9kUvHsF.svg +5 -0
  105. package/dist/app/client/assets/iUSD-CWCJAq9X.svg +1 -0
  106. package/dist/app/client/assets/index-BZH0M7Nf.js +13 -0
  107. package/dist/app/client/assets/index-CIYxHmYA.css +1 -0
  108. package/dist/app/client/assets/login-DUjpk60p.js +1 -0
  109. package/dist/app/client/assets/pathUSD-BvaO6ooS.svg +25 -0
  110. package/dist/app/client/assets/preload-helper-Bs9KvdYl.js +1 -0
  111. package/dist/app/client/assets/rUSD-B-xuFS7T.svg +1 -0
  112. package/dist/app/client/assets/reUSD-CkIUs0Lx.svg +1 -0
  113. package/dist/app/client/assets/removable-DMiA3t_o.js +1 -0
  114. package/dist/app/client/assets/reset-co-CHrff.css +1 -0
  115. package/dist/app/client/assets/rolldown-runtime-WkwZ5CU-.js +1 -0
  116. package/dist/app/client/assets/routes-CK8cthzA.js +1 -0
  117. package/dist/app/client/assets/sUSDe-j9GOnH7I.svg +1 -0
  118. package/dist/app/client/assets/siUSD-C10QUNYS.svg +1 -0
  119. package/dist/app/client/assets/stcUSD-DIntDJeh.svg +1 -0
  120. package/dist/app/client/assets/syrupUSDC-DhYwZqdM.svg +5 -0
  121. package/dist/app/client/assets/thetaUSD-Dgmksf6G.svg +1 -0
  122. package/dist/app/client/assets/useNavigate-CB6S2u4J.js +1 -0
  123. package/dist/app/client/assets/useQuery-BpHfPhTT.js +1 -0
  124. package/dist/app/client/assets/useRegisterFieldControl-DsslqY-V.js +1 -0
  125. package/dist/app/client/assets/wYLDS-CaCKDrO-.svg +10 -0
  126. package/dist/app/client/assets/wsrUSD-B2Ey0bDQ.svg +1 -0
  127. package/dist/app/client/assets/zyzz-DYC-X0_B.css +1 -0
  128. package/dist/app/client/assets/zyzz.config-DX_D_7j3.js +2 -0
  129. package/dist/app/db/auth.d.ts +3412 -0
  130. package/dist/app/db/auth.d.ts.map +1 -0
  131. package/dist/app/db/auth.js +349 -0
  132. package/dist/app/db/auth.js.map +1 -0
  133. package/dist/app/db/schema.d.ts +1091 -0
  134. package/dist/app/db/schema.d.ts.map +1 -0
  135. package/dist/app/db/schema.js +183 -0
  136. package/dist/app/db/schema.js.map +1 -0
  137. package/dist/app/db/table.d.ts +8 -0
  138. package/dist/app/db/table.d.ts.map +1 -0
  139. package/dist/app/db/table.js +28 -0
  140. package/dist/app/db/table.js.map +1 -0
  141. package/dist/app/server/.vite/manifest.json +2093 -0
  142. package/dist/app/server/assets/Account-BYLpNFf3.css +1 -0
  143. package/dist/app/server/assets/Account-G_SUeRU3.js +2 -0
  144. package/dist/app/server/assets/Account-G_SUeRU3.js.map +1 -0
  145. package/dist/app/server/assets/Amount-Cgwdr3Xt.js +2 -0
  146. package/dist/app/server/assets/Amount-Cgwdr3Xt.js.map +1 -0
  147. package/dist/app/server/assets/Amount-ZdtluGf-.css +1 -0
  148. package/dist/app/server/assets/Approval-CgV5JHlb.css +1 -0
  149. package/dist/app/server/assets/Approval-DvkB9tWA.js +2 -0
  150. package/dist/app/server/assets/Approval-DvkB9tWA.js.map +1 -0
  151. package/dist/app/server/assets/ArrowUp-DpK_zNgZ.js +2 -0
  152. package/dist/app/server/assets/ArrowUp-DpK_zNgZ.js.map +1 -0
  153. package/dist/app/server/assets/Authentication-BOkhlNQu.js +2 -0
  154. package/dist/app/server/assets/Authentication-BOkhlNQu.js.map +1 -0
  155. package/dist/app/server/assets/Authentication-C3oNZAVX.js +2 -0
  156. package/dist/app/server/assets/Authentication-C3oNZAVX.js.map +1 -0
  157. package/dist/app/server/assets/BRLA-CZvVDNYr.png +0 -0
  158. package/dist/app/server/assets/BRZ-Cn3jEi9t.svg +1 -0
  159. package/dist/app/server/assets/Bytes-C7CRVS3J.js +4 -0
  160. package/dist/app/server/assets/Bytes-C7CRVS3J.js.map +1 -0
  161. package/dist/app/server/assets/CHFAU-DCedc4aH.png +0 -0
  162. package/dist/app/server/assets/Callout-DBfEmP7q.css +1 -0
  163. package/dist/app/server/assets/Callout-tQoAitWq.js +2 -0
  164. package/dist/app/server/assets/Callout-tQoAitWq.js.map +1 -0
  165. package/dist/app/server/assets/ChainList-C4A_7e-9.js +6 -0
  166. package/dist/app/server/assets/ChainList-C4A_7e-9.js.map +1 -0
  167. package/dist/app/server/assets/ChainName-BMnJyJrd.js +2 -0
  168. package/dist/app/server/assets/ChainName-BMnJyJrd.js.map +1 -0
  169. package/dist/app/server/assets/Check-DU_oR3Ev.js +2 -0
  170. package/dist/app/server/assets/Check-DU_oR3Ev.js.map +1 -0
  171. package/dist/app/server/assets/ChevronRight-DTBnw-W6.js +2 -0
  172. package/dist/app/server/assets/ChevronRight-DTBnw-W6.js.map +1 -0
  173. package/dist/app/server/assets/ChooseAccount-BizJvMrY.js +2 -0
  174. package/dist/app/server/assets/ChooseAccount-BizJvMrY.js.map +1 -0
  175. package/dist/app/server/assets/ChooseAccount-DL3wgJhE.css +1 -0
  176. package/dist/app/server/assets/Client-Dx3KrpJZ.js +2 -0
  177. package/dist/app/server/assets/Client-Dx3KrpJZ.js.map +1 -0
  178. package/dist/app/server/assets/ClientOnly-CKLiu67O.js +2 -0
  179. package/dist/app/server/assets/ClientOnly-CKLiu67O.js.map +1 -0
  180. package/dist/app/server/assets/Close-DUeE37ev.js +2 -0
  181. package/dist/app/server/assets/Close-DUeE37ev.js.map +1 -0
  182. package/dist/app/server/assets/Cloud-CLB3rTTy.js +2 -0
  183. package/dist/app/server/assets/Cloud-CLB3rTTy.js.map +1 -0
  184. package/dist/app/server/assets/CodeInput-BqRteSwD.css +1 -0
  185. package/dist/app/server/assets/CodeInput-FsPzVuLU.js +2 -0
  186. package/dist/app/server/assets/CodeInput-FsPzVuLU.js.map +1 -0
  187. package/dist/app/server/assets/Credential-DFjcrdyI.js +2 -0
  188. package/dist/app/server/assets/Credential-DFjcrdyI.js.map +1 -0
  189. package/dist/app/server/assets/DLUSD-BnRXm3EI.png +0 -0
  190. package/dist/app/server/assets/Deposit-CclrAoXL.css +1 -0
  191. package/dist/app/server/assets/Deposit-ChYGRfW2.js +2 -0
  192. package/dist/app/server/assets/Deposit-ChYGRfW2.js.map +1 -0
  193. package/dist/app/server/assets/DevTools-BYkmtuV5.css +1 -0
  194. package/dist/app/server/assets/DevTools-ZJVXqrIK.js +2 -0
  195. package/dist/app/server/assets/DevTools-ZJVXqrIK.js.map +1 -0
  196. package/dist/app/server/assets/DeviceApproval-BffFLD8F.css +1 -0
  197. package/dist/app/server/assets/DeviceApproval-Bqe3Mi78.js +2 -0
  198. package/dist/app/server/assets/DeviceApproval-Bqe3Mi78.js.map +1 -0
  199. package/dist/app/server/assets/EURAU-sjieTTB9.svg +1 -0
  200. package/dist/app/server/assets/EURC.e-CxYiiwkz.svg +1 -0
  201. package/dist/app/server/assets/ExecutionError-CDszGSF1.js +9 -0
  202. package/dist/app/server/assets/ExecutionError-CDszGSF1.js.map +1 -0
  203. package/dist/app/server/assets/Fingerprint-DhOPOdRr.js +2 -0
  204. package/dist/app/server/assets/Fingerprint-DhOPOdRr.js.map +1 -0
  205. package/dist/app/server/assets/GBPA-DI_25xSG.svg +4 -0
  206. package/dist/app/server/assets/GUSD-BDEP2Qb-.svg +1 -0
  207. package/dist/app/server/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  208. package/dist/app/server/assets/Globe-2CxqxU-7.js +2 -0
  209. package/dist/app/server/assets/Globe-2CxqxU-7.js.map +1 -0
  210. package/dist/app/server/assets/Grant-5a-n1gJH.css +1 -0
  211. package/dist/app/server/assets/Grant-D_tun0mF.js +2 -0
  212. package/dist/app/server/assets/Grant-D_tun0mF.js.map +1 -0
  213. package/dist/app/server/assets/Hex-C9KeV7_9.css +1 -0
  214. package/dist/app/server/assets/Hex-Z6m_0Y0m.js +11 -0
  215. package/dist/app/server/assets/Hex-Z6m_0Y0m.js.map +1 -0
  216. package/dist/app/server/assets/IconChip-C9ZrmGB5.js +2 -0
  217. package/dist/app/server/assets/IconChip-C9ZrmGB5.js.map +1 -0
  218. package/dist/app/server/assets/IconChip-yqaQ2y_d.css +1 -0
  219. package/dist/app/server/assets/InputGroup-BlZvt9In.css +1 -0
  220. package/dist/app/server/assets/InputGroup-hpjuLuR7.js +2 -0
  221. package/dist/app/server/assets/InputGroup-hpjuLuR7.js.map +1 -0
  222. package/dist/app/server/assets/Inter-cyrillic-e3OmmzmJ.woff2 +0 -0
  223. package/dist/app/server/assets/Inter-cyrillic-ext-DOWZeO4Q.woff2 +0 -0
  224. package/dist/app/server/assets/Inter-greek-BD3ujQlX.woff2 +0 -0
  225. package/dist/app/server/assets/Inter-greek-ext-CXEwbus4.woff2 +0 -0
  226. package/dist/app/server/assets/Inter-latin-BDFm4vTb.woff2 +0 -0
  227. package/dist/app/server/assets/Inter-latin-ext-E7a9JEPe.woff2 +0 -0
  228. package/dist/app/server/assets/Inter-symbols-DEch7Rxr.woff2 +0 -0
  229. package/dist/app/server/assets/Inter-vietnamese-Bg9723vR.woff2 +0 -0
  230. package/dist/app/server/assets/Loader-DnKC9P5p.js +2 -0
  231. package/dist/app/server/assets/Loader-DnKC9P5p.js.map +1 -0
  232. package/dist/app/server/assets/MACH-sK0r79kQ.svg +4 -0
  233. package/dist/app/server/assets/Match-CyVdYcSf.js +2 -0
  234. package/dist/app/server/assets/Match-CyVdYcSf.js.map +1 -0
  235. package/dist/app/server/assets/OUSD-BFXgVo-Z.svg +5 -0
  236. package/dist/app/server/assets/OUSD.dark-BbbjMvA1.svg +17 -0
  237. package/dist/app/server/assets/OUSD.light-B_zpSz_c.svg +17 -0
  238. package/dist/app/server/assets/PRIME-CiFp2-3e.svg +14 -0
  239. package/dist/app/server/assets/PopoverPopup-CwqeQelI.js +2 -0
  240. package/dist/app/server/assets/PopoverPopup-CwqeQelI.js.map +1 -0
  241. package/dist/app/server/assets/Rows-CQKQwTI1.js +2 -0
  242. package/dist/app/server/assets/Rows-CQKQwTI1.js.map +1 -0
  243. package/dist/app/server/assets/Rows-DPGTUdA8.css +1 -0
  244. package/dist/app/server/assets/SBC-BTYkbkiD.svg +1 -0
  245. package/dist/app/server/assets/SEKAU-CB5Fc6o8.svg +5 -0
  246. package/dist/app/server/assets/Separator-DrI7KRAs.js +2 -0
  247. package/dist/app/server/assets/Separator-DrI7KRAs.js.map +1 -0
  248. package/dist/app/server/assets/SignIn-DfeeLEmN.js +2 -0
  249. package/dist/app/server/assets/SignIn-DfeeLEmN.js.map +1 -0
  250. package/dist/app/server/assets/SignIn-mlBTwUq4.css +1 -0
  251. package/dist/app/server/assets/Stack-D7Yt22Ed.css +1 -0
  252. package/dist/app/server/assets/Stack-DGktaLZc.js +2 -0
  253. package/dist/app/server/assets/Stack-DGktaLZc.js.map +1 -0
  254. package/dist/app/server/assets/Tag-9vSRBpph.js +2 -0
  255. package/dist/app/server/assets/Tag-9vSRBpph.js.map +1 -0
  256. package/dist/app/server/assets/Tag-BMh6ajrW.css +1 -0
  257. package/dist/app/server/assets/ToolbarRootContext-BH_CFSWd.js +2 -0
  258. package/dist/app/server/assets/ToolbarRootContext-BH_CFSWd.js.map +1 -0
  259. package/dist/app/server/assets/Tooltip-DLX41peb.js +2 -0
  260. package/dist/app/server/assets/Tooltip-DLX41peb.js.map +1 -0
  261. package/dist/app/server/assets/Tooltip-d3y9ESUJ.css +1 -0
  262. package/dist/app/server/assets/USD1-COVcO_PB.svg +30 -0
  263. package/dist/app/server/assets/USDB-Ckwb6UQw.svg +11 -0
  264. package/dist/app/server/assets/USDC.e-3nMsKAMC.svg +1 -0
  265. package/dist/app/server/assets/USDT0-ia60Dw0e.svg +1 -0
  266. package/dist/app/server/assets/USDY-CB4iet2q.svg +16 -0
  267. package/dist/app/server/assets/USDe-BXHQCd92.svg +1 -0
  268. package/dist/app/server/assets/Upgrade-Dbfm2nm0.js +2 -0
  269. package/dist/app/server/assets/Upgrade-Dbfm2nm0.js.map +1 -0
  270. package/dist/app/server/assets/WalletUpgrade-C04kW0Jl.css +1 -0
  271. package/dist/app/server/assets/WalletUpgrade-CWKc5fYt.js +2 -0
  272. package/dist/app/server/assets/WalletUpgrade-CWKc5fYt.js.map +1 -0
  273. package/dist/app/server/assets/YLDS-CRh8Zw0g.svg +3 -0
  274. package/dist/app/server/assets/___-I98bns4o.css +1 -0
  275. package/dist/app/server/assets/___.flows-Cc-awUoC.js +6 -0
  276. package/dist/app/server/assets/___.flows-Cc-awUoC.js.map +1 -0
  277. package/dist/app/server/assets/_tanstack-start-manifest_v-U7TrtUSA.js +1 -0
  278. package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows-B1pPOqsM.css +1 -0
  279. package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows.tsx-CKALi9oD.js +2 -0
  280. package/dist/app/server/assets/_zyzz__2Fhome_2Frunner_2Fwork_2Fid_2Fid_2Fsrc_2Fapp_2Froutes_2F_5B__5D.flows.tsx-CKALi9oD.js.map +1 -0
  281. package/dist/app/server/assets/_zyzz_shared-BbDIEd_j.css +1 -0
  282. package/dist/app/server/assets/alphaUSD-CpCFoVuh.svg +1 -0
  283. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js +2 -0
  284. package/dist/app/server/assets/arktype-aI7TBD0R-D1R3Byo5.js.map +1 -0
  285. package/dist/app/server/assets/async-local-storage-DlOvwxXd.js +2 -0
  286. package/dist/app/server/assets/async-local-storage-DlOvwxXd.js.map +1 -0
  287. package/dist/app/server/assets/authorize-BXzTo2Pb.js +2 -0
  288. package/dist/app/server/assets/authorize-BXzTo2Pb.js.map +1 -0
  289. package/dist/app/server/assets/authorize-BzoUqOdA.js +2 -0
  290. package/dist/app/server/assets/authorize-BzoUqOdA.js.map +1 -0
  291. package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js +56 -0
  292. package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js.map +1 -0
  293. package/dist/app/server/assets/authorize-DfjPYJqS.css +1 -0
  294. package/dist/app/server/assets/betaUSD-9A8AjgYg.svg +1 -0
  295. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js +2 -0
  296. package/dist/app/server/assets/bun-sqlite-dialect-DoOVo4ja-CtyBkVMb.js.map +1 -0
  297. package/dist/app/server/assets/cUSD-WsQfa-iC.svg +1 -0
  298. package/dist/app/server/assets/call-dzi0xjZd.js +31 -0
  299. package/dist/app/server/assets/call-dzi0xjZd.js.map +1 -0
  300. package/dist/app/server/assets/cbBTC-DvUDqrDi.svg +1 -0
  301. package/dist/app/server/assets/ccip-DjD8z_3B.js +2 -0
  302. package/dist/app/server/assets/ccip-DjD8z_3B.js.map +1 -0
  303. package/dist/app/server/assets/choose-account-_X7xq5am.js +2 -0
  304. package/dist/app/server/assets/choose-account-_X7xq5am.js.map +1 -0
  305. package/dist/app/server/assets/choose-account-lqA5SLx9.css +1 -0
  306. package/dist/app/server/assets/choose-account-zm-5Qs3e.js +2 -0
  307. package/dist/app/server/assets/choose-account-zm-5Qs3e.js.map +1 -0
  308. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js +2 -0
  309. package/dist/app/server/assets/compiled-query-Ds2NVcFT.js.map +1 -0
  310. package/dist/app/server/assets/convert-BIC8n32x.js +2 -0
  311. package/dist/app/server/assets/convert-BIC8n32x.js.map +1 -0
  312. package/dist/app/server/assets/cookie-DxViaO10.js +2 -0
  313. package/dist/app/server/assets/cookie-DxViaO10.js.map +1 -0
  314. package/dist/app/server/assets/core-BBrZXfrB.js +56 -0
  315. package/dist/app/server/assets/core-BBrZXfrB.js.map +1 -0
  316. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js +2 -0
  317. package/dist/app/server/assets/d1-sqlite-dialect-m0f01-4z-Cv-csE1u.js.map +1 -0
  318. package/dist/app/server/assets/decodeFunctionData-bP6V2ai4.js +2 -0
  319. package/dist/app/server/assets/decodeFunctionData-bP6V2ai4.js.map +1 -0
  320. package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js +2 -0
  321. package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js.map +1 -0
  322. package/dist/app/server/assets/deposit-BBaNI01u.js +2 -0
  323. package/dist/app/server/assets/deposit-BBaNI01u.js.map +1 -0
  324. package/dist/app/server/assets/deposit-LWS6ZTuf.js +2 -0
  325. package/dist/app/server/assets/deposit-LWS6ZTuf.js.map +1 -0
  326. package/dist/app/server/assets/deposit-oFx15XCA.css +1 -0
  327. package/dist/app/server/assets/device-CrXlusjr.js +2 -0
  328. package/dist/app/server/assets/device-CrXlusjr.js.map +1 -0
  329. package/dist/app/server/assets/device-DdFMgYe2.js +2 -0
  330. package/dist/app/server/assets/device-DdFMgYe2.js.map +1 -0
  331. package/dist/app/server/assets/device-tMCpu5zk.css +1 -0
  332. package/dist/app/server/assets/dist-CR6FW-yS.js +1 -0
  333. package/dist/app/server/assets/dist-CoH0hD1s.js +15 -0
  334. package/dist/app/server/assets/dist-CoH0hD1s.js.map +1 -0
  335. package/dist/app/server/assets/dist-DcICI3fd.js +2 -0
  336. package/dist/app/server/assets/dist-DcICI3fd.js.map +1 -0
  337. package/dist/app/server/assets/effect-QlVUlMFu-mXPkuQTb.js +2 -0
  338. package/dist/app/server/assets/effect-QlVUlMFu-mXPkuQTb.js.map +1 -0
  339. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js +2 -0
  340. package/dist/app/server/assets/empty-plugin-adapters-BaGcmrjC.js.map +1 -0
  341. package/dist/app/server/assets/error-CXy8gqdE.css +1 -0
  342. package/dist/app/server/assets/error-DXDT2AHy.js +2 -0
  343. package/dist/app/server/assets/error-DXDT2AHy.js.map +1 -0
  344. package/dist/app/server/assets/error-bnVzy9tx.js +2 -0
  345. package/dist/app/server/assets/error-bnVzy9tx.js.map +1 -0
  346. package/dist/app/server/assets/esm-C6SW--yt.js +4 -0
  347. package/dist/app/server/assets/esm-C6SW--yt.js.map +1 -0
  348. package/dist/app/server/assets/factory-dvoOlKer.js +5 -0
  349. package/dist/app/server/assets/factory-dvoOlKer.js.map +1 -0
  350. package/dist/app/server/assets/frxUSD-n9pTpinR.svg +1 -0
  351. package/dist/app/server/assets/get-id-field-OwLpfjj2.js +6 -0
  352. package/dist/app/server/assets/get-id-field-OwLpfjj2.js.map +1 -0
  353. package/dist/app/server/assets/getPseudoElementBounds-PkWU72kn.js +2 -0
  354. package/dist/app/server/assets/getPseudoElementBounds-PkWU72kn.js.map +1 -0
  355. package/dist/app/server/assets/goUSD-D9kUvHsF.svg +5 -0
  356. package/dist/app/server/assets/iUSD-CWCJAq9X.svg +1 -0
  357. package/dist/app/server/assets/index-CLddUTqr-CC33CMvS.js +2 -0
  358. package/dist/app/server/assets/index-CLddUTqr-CC33CMvS.js.map +1 -0
  359. package/dist/app/server/assets/index-DZEfthgZ-Ec2MMQ_e.js +2 -0
  360. package/dist/app/server/assets/index-DZEfthgZ-Ec2MMQ_e.js.map +1 -0
  361. package/dist/app/server/assets/kysely-adapter-B8tQwTcu.js +1 -0
  362. package/dist/app/server/assets/lazyRouteComponent-DPOOPZw_.js +2 -0
  363. package/dist/app/server/assets/lazyRouteComponent-DPOOPZw_.js.map +1 -0
  364. package/dist/app/server/assets/load-server-Dr0IlySo.js +3 -0
  365. package/dist/app/server/assets/load-server-Dr0IlySo.js.map +1 -0
  366. package/dist/app/server/assets/login-BLq3tEEr.js +2 -0
  367. package/dist/app/server/assets/login-BLq3tEEr.js.map +1 -0
  368. package/dist/app/server/assets/login-DCIrAbED.js +2 -0
  369. package/dist/app/server/assets/login-DCIrAbED.js.map +1 -0
  370. package/dist/app/server/assets/login-msDnt3yT.css +1 -0
  371. package/dist/app/server/assets/matchContext-ByrIUj4L.js +2 -0
  372. package/dist/app/server/assets/matchContext-ByrIUj4L.js.map +1 -0
  373. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js +2 -0
  374. package/dist/app/server/assets/node-sqlite-dialect-BowWLXvK.js.map +1 -0
  375. package/dist/app/server/assets/pathUSD-BvaO6ooS.svg +25 -0
  376. package/dist/app/server/assets/rUSD-B-xuFS7T.svg +1 -0
  377. package/dist/app/server/assets/reUSD-CkIUs0Lx.svg +1 -0
  378. package/dist/app/server/assets/react-dom-DYzj0HXX.js +2 -0
  379. package/dist/app/server/assets/react-dom-DYzj0HXX.js.map +1 -0
  380. package/dist/app/server/assets/removable-BCLTvPOx.js +2 -0
  381. package/dist/app/server/assets/removable-BCLTvPOx.js.map +1 -0
  382. package/dist/app/server/assets/reset-DZWeTZeQ.js +2 -0
  383. package/dist/app/server/assets/reset-DZWeTZeQ.js.map +1 -0
  384. package/dist/app/server/assets/reset-co-CHrff.css +1 -0
  385. package/dist/app/server/assets/resolveError-CZXXvCJR.js +2 -0
  386. package/dist/app/server/assets/resolveError-CZXXvCJR.js.map +1 -0
  387. package/dist/app/server/assets/rolldown-runtime-BWaJ3C7D.js +1 -0
  388. package/dist/app/server/assets/router-Bqz5X4Qw.js +2 -0
  389. package/dist/app/server/assets/router-Bqz5X4Qw.js.map +1 -0
  390. package/dist/app/server/assets/router-CclzitkY.css +1 -0
  391. package/dist/app/server/assets/routes-BLQdKqcZ.js +2 -0
  392. package/dist/app/server/assets/routes-BLQdKqcZ.js.map +1 -0
  393. package/dist/app/server/assets/routes-BgiIzrOt.css +1 -0
  394. package/dist/app/server/assets/routes-Bv6WzsSR.js +2 -0
  395. package/dist/app/server/assets/routes-Bv6WzsSR.js.map +1 -0
  396. package/dist/app/server/assets/sUSDe-j9GOnH7I.svg +1 -0
  397. package/dist/app/server/assets/schema-check-oLqvHR8y.js +9 -0
  398. package/dist/app/server/assets/schema-check-oLqvHR8y.js.map +1 -0
  399. package/dist/app/server/assets/secp256k1-yg8eeIYU.js +2 -0
  400. package/dist/app/server/assets/secp256k1-yg8eeIYU.js.map +1 -0
  401. package/dist/app/server/assets/server-RRUiOef2.js +76 -0
  402. package/dist/app/server/assets/server-RRUiOef2.js.map +1 -0
  403. package/dist/app/server/assets/siUSD-C10QUNYS.svg +1 -0
  404. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js +2 -0
  405. package/dist/app/server/assets/sqlite-adapter-C_LAV4e3.js.map +1 -0
  406. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js +6 -0
  407. package/dist/app/server/assets/sqlite-introspector-DSCAP82F-Crx7Ny14.js.map +1 -0
  408. package/dist/app/server/assets/standard-json-DY77efq0.js +2 -0
  409. package/dist/app/server/assets/standard-json-DY77efq0.js.map +1 -0
  410. package/dist/app/server/assets/standard-json-ig2t0wRt.js +2 -0
  411. package/dist/app/server/assets/standard-json-ig2t0wRt.js.map +1 -0
  412. package/dist/app/server/assets/standard-json-t-LNckA6.js +2 -0
  413. package/dist/app/server/assets/standard-json-t-LNckA6.js.map +1 -0
  414. package/dist/app/server/assets/standard-openapi-CONmVRl8.js +2 -0
  415. package/dist/app/server/assets/standard-openapi-CONmVRl8.js.map +1 -0
  416. package/dist/app/server/assets/start-C63VetBp.js +2 -0
  417. package/dist/app/server/assets/start-C63VetBp.js.map +1 -0
  418. package/dist/app/server/assets/stcUSD-DIntDJeh.svg +1 -0
  419. package/dist/app/server/assets/sury-CWZTCd75-CDaOS2oM.js +2 -0
  420. package/dist/app/server/assets/sury-CWZTCd75-CDaOS2oM.js.map +1 -0
  421. package/dist/app/server/assets/syrupUSDC-DhYwZqdM.svg +5 -0
  422. package/dist/app/server/assets/thetaUSD-Dgmksf6G.svg +1 -0
  423. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js +2 -0
  424. package/dist/app/server/assets/typebox-Dei93FPO-D_lCVdAz.js.map +1 -0
  425. package/dist/app/server/assets/useNavigate-D6d1w7KE.js +2 -0
  426. package/dist/app/server/assets/useNavigate-D6d1w7KE.js.map +1 -0
  427. package/dist/app/server/assets/useQuery-BRpCr5vj.js +2 -0
  428. package/dist/app/server/assets/useQuery-BRpCr5vj.js.map +1 -0
  429. package/dist/app/server/assets/useRegisterFieldControl-cJesrOWK.js +2 -0
  430. package/dist/app/server/assets/useRegisterFieldControl-cJesrOWK.js.map +1 -0
  431. package/dist/app/server/assets/utils-C4ZXZIZW.js +2 -0
  432. package/dist/app/server/assets/utils-C4ZXZIZW.js.map +1 -0
  433. package/dist/app/server/assets/utils-D57zfcg-.js +2 -0
  434. package/dist/app/server/assets/utils-D57zfcg-.js.map +1 -0
  435. package/dist/app/server/assets/valibot--1zFm7rT-CIKoH3MS.js +2 -0
  436. package/dist/app/server/assets/valibot--1zFm7rT-CIKoH3MS.js.map +1 -0
  437. package/dist/app/server/assets/valibot-D_HTw1Gn-BdPyLkXt.js +2 -0
  438. package/dist/app/server/assets/valibot-D_HTw1Gn-BdPyLkXt.js.map +1 -0
  439. package/dist/app/server/assets/wYLDS-CaCKDrO-.svg +10 -0
  440. package/dist/app/server/assets/wsrUSD-B2Ey0bDQ.svg +1 -0
  441. package/dist/app/server/assets/zod-Bwrt9trS-BezI5Gi1.js +2 -0
  442. package/dist/app/server/assets/zod-Bwrt9trS-BezI5Gi1.js.map +1 -0
  443. package/dist/app/server/assets/zod-DSgpEGAE-DZ7M_Q33.js +2 -0
  444. package/dist/app/server/assets/zod-DSgpEGAE-DZ7M_Q33.js.map +1 -0
  445. package/dist/app/server/assets/zyzz-6R2K52xP.css +1 -0
  446. package/dist/app/server/assets/zyzz.config-CJRpjn0E.js +3 -0
  447. package/dist/app/server/assets/zyzz.config-CJRpjn0E.js.map +1 -0
  448. package/dist/app/server/index.js +532 -0
  449. package/dist/app/server/index.js.map +1 -0
  450. package/dist/app/server/wrangler.json +1 -0
  451. package/dist/cli/Admin.d.ts +34 -0
  452. package/dist/cli/Admin.d.ts.map +1 -0
  453. package/dist/cli/Admin.js +61 -0
  454. package/dist/cli/Admin.js.map +1 -0
  455. package/dist/cli/Apps.d.ts +9 -0
  456. package/dist/cli/Apps.d.ts.map +1 -0
  457. package/dist/cli/Apps.js +34 -0
  458. package/dist/cli/Apps.js.map +1 -0
  459. package/dist/cli/Cli.d.ts +13 -0
  460. package/dist/cli/Cli.d.ts.map +1 -0
  461. package/dist/cli/Cli.js +26 -0
  462. package/dist/cli/Cli.js.map +1 -0
  463. package/dist/cli/Project.d.ts +17 -0
  464. package/dist/cli/Project.d.ts.map +1 -0
  465. package/dist/cli/Project.js +90 -0
  466. package/dist/cli/Project.js.map +1 -0
  467. package/dist/cli/Realms.d.ts +24 -0
  468. package/dist/cli/Realms.d.ts.map +1 -0
  469. package/dist/cli/Realms.js +48 -0
  470. package/dist/cli/Realms.js.map +1 -0
  471. package/dist/cli/Session.d.ts +79 -0
  472. package/dist/cli/Session.d.ts.map +1 -0
  473. package/dist/cli/Session.js +229 -0
  474. package/dist/cli/Session.js.map +1 -0
  475. package/dist/cli/User.d.ts +24 -0
  476. package/dist/cli/User.d.ts.map +1 -0
  477. package/dist/cli/User.js +34 -0
  478. package/dist/cli/User.js.map +1 -0
  479. package/dist/cli/V1.d.ts +32 -0
  480. package/dist/cli/V1.d.ts.map +1 -0
  481. package/dist/cli/V1.js +38 -0
  482. package/dist/cli/V1.js.map +1 -0
  483. package/dist/cli/bin.d.ts +3 -0
  484. package/dist/cli/bin.d.ts.map +1 -0
  485. package/dist/cli/bin.js +46 -0
  486. package/dist/cli/bin.js.map +1 -0
  487. package/dist/cli/commands/admin/apps/create.d.ts +23 -0
  488. package/dist/cli/commands/admin/apps/create.d.ts.map +1 -0
  489. package/dist/cli/commands/admin/apps/create.js +84 -0
  490. package/dist/cli/commands/admin/apps/create.js.map +1 -0
  491. package/dist/cli/commands/admin/apps/delete.d.ts +15 -0
  492. package/dist/cli/commands/admin/apps/delete.d.ts.map +1 -0
  493. package/dist/cli/commands/admin/apps/delete.js +41 -0
  494. package/dist/cli/commands/admin/apps/delete.js.map +1 -0
  495. package/dist/cli/commands/admin/apps/index.d.ts +5 -0
  496. package/dist/cli/commands/admin/apps/index.d.ts.map +1 -0
  497. package/dist/cli/commands/admin/apps/index.js +14 -0
  498. package/dist/cli/commands/admin/apps/index.js.map +1 -0
  499. package/dist/cli/commands/admin/apps/list.d.ts +10 -0
  500. package/dist/cli/commands/admin/apps/list.d.ts.map +1 -0
  501. package/dist/cli/commands/admin/apps/list.js +26 -0
  502. package/dist/cli/commands/admin/apps/list.js.map +1 -0
  503. package/dist/cli/commands/admin/apps/rotate-secret.d.ts +17 -0
  504. package/dist/cli/commands/admin/apps/rotate-secret.d.ts.map +1 -0
  505. package/dist/cli/commands/admin/apps/rotate-secret.js +47 -0
  506. package/dist/cli/commands/admin/apps/rotate-secret.js.map +1 -0
  507. package/dist/cli/commands/admin/apps/update.d.ts +20 -0
  508. package/dist/cli/commands/admin/apps/update.d.ts.map +1 -0
  509. package/dist/cli/commands/admin/apps/update.js +71 -0
  510. package/dist/cli/commands/admin/apps/update.js.map +1 -0
  511. package/dist/cli/commands/admin/index.d.ts +5 -0
  512. package/dist/cli/commands/admin/index.d.ts.map +1 -0
  513. package/dist/cli/commands/admin/index.js +13 -0
  514. package/dist/cli/commands/admin/index.js.map +1 -0
  515. package/dist/cli/commands/admin/migrate.d.ts +10 -0
  516. package/dist/cli/commands/admin/migrate.d.ts.map +1 -0
  517. package/dist/cli/commands/admin/migrate.js +20 -0
  518. package/dist/cli/commands/admin/migrate.js.map +1 -0
  519. package/dist/cli/commands/admin/realms/add.d.ts +13 -0
  520. package/dist/cli/commands/admin/realms/add.d.ts.map +1 -0
  521. package/dist/cli/commands/admin/realms/add.js +42 -0
  522. package/dist/cli/commands/admin/realms/add.js.map +1 -0
  523. package/dist/cli/commands/admin/realms/index.d.ts +5 -0
  524. package/dist/cli/commands/admin/realms/index.d.ts.map +1 -0
  525. package/dist/cli/commands/admin/realms/index.js +13 -0
  526. package/dist/cli/commands/admin/realms/index.js.map +1 -0
  527. package/dist/cli/commands/admin/realms/list.d.ts +14 -0
  528. package/dist/cli/commands/admin/realms/list.d.ts.map +1 -0
  529. package/dist/cli/commands/admin/realms/list.js +36 -0
  530. package/dist/cli/commands/admin/realms/list.js.map +1 -0
  531. package/dist/cli/commands/admin/realms/passkeys/index.d.ts +5 -0
  532. package/dist/cli/commands/admin/realms/passkeys/index.d.ts.map +1 -0
  533. package/dist/cli/commands/admin/realms/passkeys/index.js +13 -0
  534. package/dist/cli/commands/admin/realms/passkeys/index.js.map +1 -0
  535. package/dist/cli/commands/admin/realms/passkeys/set.d.ts +17 -0
  536. package/dist/cli/commands/admin/realms/passkeys/set.d.ts.map +1 -0
  537. package/dist/cli/commands/admin/realms/passkeys/set.js +46 -0
  538. package/dist/cli/commands/admin/realms/passkeys/set.js.map +1 -0
  539. package/dist/cli/commands/admin/realms/privy/index.d.ts +5 -0
  540. package/dist/cli/commands/admin/realms/privy/index.d.ts.map +1 -0
  541. package/dist/cli/commands/admin/realms/privy/index.js +13 -0
  542. package/dist/cli/commands/admin/realms/privy/index.js.map +1 -0
  543. package/dist/cli/commands/admin/realms/privy/set.d.ts +19 -0
  544. package/dist/cli/commands/admin/realms/privy/set.d.ts.map +1 -0
  545. package/dist/cli/commands/admin/realms/privy/set.js +66 -0
  546. package/dist/cli/commands/admin/realms/privy/set.js.map +1 -0
  547. package/dist/cli/commands/admin/realms/remove.d.ts +12 -0
  548. package/dist/cli/commands/admin/realms/remove.d.ts.map +1 -0
  549. package/dist/cli/commands/admin/realms/remove.js +35 -0
  550. package/dist/cli/commands/admin/realms/remove.js.map +1 -0
  551. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts +16 -0
  552. package/dist/cli/commands/admin/realms/secp256k1/disable.d.ts.map +1 -0
  553. package/dist/cli/commands/admin/realms/secp256k1/disable.js +42 -0
  554. package/dist/cli/commands/admin/realms/secp256k1/disable.js.map +1 -0
  555. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts +16 -0
  556. package/dist/cli/commands/admin/realms/secp256k1/enable.d.ts.map +1 -0
  557. package/dist/cli/commands/admin/realms/secp256k1/enable.js +42 -0
  558. package/dist/cli/commands/admin/realms/secp256k1/enable.js.map +1 -0
  559. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts +9 -0
  560. package/dist/cli/commands/admin/realms/secp256k1/index.d.ts.map +1 -0
  561. package/dist/cli/commands/admin/realms/secp256k1/index.js +17 -0
  562. package/dist/cli/commands/admin/realms/secp256k1/index.js.map +1 -0
  563. package/dist/cli/commands/admin/realms/set.d.ts +17 -0
  564. package/dist/cli/commands/admin/realms/set.d.ts.map +1 -0
  565. package/dist/cli/commands/admin/realms/set.js +46 -0
  566. package/dist/cli/commands/admin/realms/set.js.map +1 -0
  567. package/dist/cli/commands/admin/rotate-key.d.ts +16 -0
  568. package/dist/cli/commands/admin/rotate-key.d.ts.map +1 -0
  569. package/dist/cli/commands/admin/rotate-key.js +46 -0
  570. package/dist/cli/commands/admin/rotate-key.js.map +1 -0
  571. package/dist/cli/commands/init.d.ts +11 -0
  572. package/dist/cli/commands/init.d.ts.map +1 -0
  573. package/dist/cli/commands/init.js +34 -0
  574. package/dist/cli/commands/init.js.map +1 -0
  575. package/dist/cli/commands/login.d.ts +12 -0
  576. package/dist/cli/commands/login.d.ts.map +1 -0
  577. package/dist/cli/commands/login.js +29 -0
  578. package/dist/cli/commands/login.js.map +1 -0
  579. package/dist/cli/commands/logout.d.ts +8 -0
  580. package/dist/cli/commands/logout.d.ts.map +1 -0
  581. package/dist/cli/commands/logout.js +19 -0
  582. package/dist/cli/commands/logout.js.map +1 -0
  583. package/dist/cli/commands/whoami.d.ts +12 -0
  584. package/dist/cli/commands/whoami.d.ts.map +1 -0
  585. package/dist/cli/commands/whoami.js +24 -0
  586. package/dist/cli/commands/whoami.js.map +1 -0
  587. package/dist/client/Actions.d.ts +108 -0
  588. package/dist/client/Actions.d.ts.map +1 -0
  589. package/dist/client/Actions.js +94 -0
  590. package/dist/client/Actions.js.map +1 -0
  591. package/dist/client/Auth.d.ts +143 -0
  592. package/dist/client/Auth.d.ts.map +1 -0
  593. package/dist/client/Auth.js +106 -0
  594. package/dist/client/Auth.js.map +1 -0
  595. package/dist/client/Authorization.d.ts +29 -0
  596. package/dist/client/Authorization.d.ts.map +1 -0
  597. package/dist/client/Authorization.js +12 -0
  598. package/dist/client/Authorization.js.map +1 -0
  599. package/dist/client/Decorator.d.ts +172 -0
  600. package/dist/client/Decorator.d.ts.map +1 -0
  601. package/dist/client/Decorator.js +241 -0
  602. package/dist/client/Decorator.js.map +1 -0
  603. package/dist/client/Key.d.ts +82 -0
  604. package/dist/client/Key.d.ts.map +1 -0
  605. package/dist/client/Key.js +81 -0
  606. package/dist/client/Key.js.map +1 -0
  607. package/dist/client/Pending.d.ts +38 -0
  608. package/dist/client/Pending.d.ts.map +1 -0
  609. package/dist/client/Pending.js +12 -0
  610. package/dist/client/Pending.js.map +1 -0
  611. package/dist/client/Permissions.d.ts +36 -0
  612. package/dist/client/Permissions.d.ts.map +1 -0
  613. package/dist/client/Permissions.js +16 -0
  614. package/dist/client/Permissions.js.map +1 -0
  615. package/dist/client/Storage.d.ts +27 -0
  616. package/dist/client/Storage.d.ts.map +1 -0
  617. package/dist/client/Storage.js +16 -0
  618. package/dist/client/Storage.js.map +1 -0
  619. package/dist/client/TempoAccount.d.ts +52 -0
  620. package/dist/client/TempoAccount.d.ts.map +1 -0
  621. package/dist/client/TempoAccount.js +17 -0
  622. package/dist/client/TempoAccount.js.map +1 -0
  623. package/dist/client/Tokens.d.ts +25 -0
  624. package/dist/client/Tokens.d.ts.map +1 -0
  625. package/dist/client/Tokens.js +12 -0
  626. package/dist/client/Tokens.js.map +1 -0
  627. package/dist/client/User.d.ts +21 -0
  628. package/dist/client/User.d.ts.map +1 -0
  629. package/dist/client/User.js +12 -0
  630. package/dist/client/User.js.map +1 -0
  631. package/dist/client/actions/account.d.ts +75 -0
  632. package/dist/client/actions/account.d.ts.map +1 -0
  633. package/dist/client/actions/account.js +102 -0
  634. package/dist/client/actions/account.js.map +1 -0
  635. package/dist/client/actions/device.d.ts +52 -0
  636. package/dist/client/actions/device.d.ts.map +1 -0
  637. package/dist/client/actions/device.js +103 -0
  638. package/dist/client/actions/device.js.map +1 -0
  639. package/dist/client/actions/email.d.ts +89 -0
  640. package/dist/client/actions/email.d.ts.map +1 -0
  641. package/dist/client/actions/email.js +86 -0
  642. package/dist/client/actions/email.js.map +1 -0
  643. package/dist/client/actions/oauth.d.ts +112 -0
  644. package/dist/client/actions/oauth.d.ts.map +1 -0
  645. package/dist/client/actions/oauth.js +103 -0
  646. package/dist/client/actions/oauth.js.map +1 -0
  647. package/dist/client/actions/passkey.d.ts +140 -0
  648. package/dist/client/actions/passkey.d.ts.map +1 -0
  649. package/dist/client/actions/passkey.js +170 -0
  650. package/dist/client/actions/passkey.js.map +1 -0
  651. package/dist/client/actions/realm.d.ts +25 -0
  652. package/dist/client/actions/realm.d.ts.map +1 -0
  653. package/dist/client/actions/realm.js +16 -0
  654. package/dist/client/actions/realm.js.map +1 -0
  655. package/dist/client/actions/redirect.d.ts +152 -0
  656. package/dist/client/actions/redirect.d.ts.map +1 -0
  657. package/dist/client/actions/redirect.js +311 -0
  658. package/dist/client/actions/redirect.js.map +1 -0
  659. package/dist/client/internal/accessKey.d.ts +21 -0
  660. package/dist/client/internal/accessKey.d.ts.map +1 -0
  661. package/dist/client/internal/accessKey.js +38 -0
  662. package/dist/client/internal/accessKey.js.map +1 -0
  663. package/dist/client/internal/account.d.ts +17 -0
  664. package/dist/client/internal/account.d.ts.map +1 -0
  665. package/dist/client/internal/account.js +3 -0
  666. package/dist/client/internal/account.js.map +1 -0
  667. package/dist/client/internal/api.d.ts +110 -0
  668. package/dist/client/internal/api.d.ts.map +1 -0
  669. package/dist/client/internal/api.js +136 -0
  670. package/dist/client/internal/api.js.map +1 -0
  671. package/dist/client/internal/headless.d.ts +159 -0
  672. package/dist/client/internal/headless.d.ts.map +1 -0
  673. package/dist/client/internal/headless.js +196 -0
  674. package/dist/client/internal/headless.js.map +1 -0
  675. package/dist/client/internal/indexedDb.d.ts +8 -0
  676. package/dist/client/internal/indexedDb.d.ts.map +1 -0
  677. package/dist/client/internal/indexedDb.js +32 -0
  678. package/dist/client/internal/indexedDb.js.map +1 -0
  679. package/dist/client/internal/request.d.ts +56 -0
  680. package/dist/client/internal/request.d.ts.map +1 -0
  681. package/dist/client/internal/request.js +44 -0
  682. package/dist/client/internal/request.js.map +1 -0
  683. package/dist/client/internal/store.d.ts +12 -0
  684. package/dist/client/internal/store.d.ts.map +1 -0
  685. package/dist/client/internal/store.js +15 -0
  686. package/dist/client/internal/store.js.map +1 -0
  687. package/dist/client/internal/verifier.d.ts +25 -0
  688. package/dist/client/internal/verifier.d.ts.map +1 -0
  689. package/dist/client/internal/verifier.js +52 -0
  690. package/dist/client/internal/verifier.js.map +1 -0
  691. package/dist/client.d.ts +18 -0
  692. package/dist/client.d.ts.map +1 -0
  693. package/dist/client.js +18 -0
  694. package/dist/client.js.map +1 -0
  695. package/dist/index.d.ts +6 -0
  696. package/dist/index.d.ts.map +1 -0
  697. package/dist/index.js +6 -0
  698. package/dist/index.js.map +1 -0
  699. package/dist/internal/Apps.d.ts +3169 -0
  700. package/dist/internal/Apps.d.ts.map +1 -0
  701. package/dist/internal/Apps.js +948 -0
  702. package/dist/internal/Apps.js.map +1 -0
  703. package/dist/internal/Auth.d.ts +4287 -0
  704. package/dist/internal/Auth.d.ts.map +1 -0
  705. package/dist/internal/Auth.js +185 -0
  706. package/dist/internal/Auth.js.map +1 -0
  707. package/dist/internal/Authorize.d.ts +526 -0
  708. package/dist/internal/Authorize.d.ts.map +1 -0
  709. package/dist/internal/Authorize.js +330 -0
  710. package/dist/internal/Authorize.js.map +1 -0
  711. package/dist/internal/Cache.d.ts +56 -0
  712. package/dist/internal/Cache.d.ts.map +1 -0
  713. package/dist/internal/Cache.js +65 -0
  714. package/dist/internal/Cache.js.map +1 -0
  715. package/dist/internal/Chain.d.ts +738 -0
  716. package/dist/internal/Chain.d.ts.map +1 -0
  717. package/dist/internal/Chain.js +65 -0
  718. package/dist/internal/Chain.js.map +1 -0
  719. package/dist/internal/ChainList.d.ts +117 -0
  720. package/dist/internal/ChainList.d.ts.map +1 -0
  721. package/dist/internal/ChainList.js +148 -0
  722. package/dist/internal/ChainList.js.map +1 -0
  723. package/dist/internal/ChainName.d.ts +11 -0
  724. package/dist/internal/ChainName.d.ts.map +1 -0
  725. package/dist/internal/ChainName.js +13 -0
  726. package/dist/internal/ChainName.js.map +1 -0
  727. package/dist/internal/CodeEmail.d.ts +38 -0
  728. package/dist/internal/CodeEmail.d.ts.map +1 -0
  729. package/dist/internal/CodeEmail.js +85 -0
  730. package/dist/internal/CodeEmail.js.map +1 -0
  731. package/dist/internal/ConfigurableAccount.d.ts +600 -0
  732. package/dist/internal/ConfigurableAccount.d.ts.map +1 -0
  733. package/dist/internal/ConfigurableAccount.js +795 -0
  734. package/dist/internal/ConfigurableAccount.js.map +1 -0
  735. package/dist/internal/Device.d.ts +246 -0
  736. package/dist/internal/Device.d.ts.map +1 -0
  737. package/dist/internal/Device.js +257 -0
  738. package/dist/internal/Device.js.map +1 -0
  739. package/dist/internal/Env.d.ts +97 -0
  740. package/dist/internal/Env.d.ts.map +1 -0
  741. package/dist/internal/Env.js +2 -0
  742. package/dist/internal/Env.js.map +1 -0
  743. package/dist/internal/ErrorResponse.d.ts +608 -0
  744. package/dist/internal/ErrorResponse.d.ts.map +1 -0
  745. package/dist/internal/ErrorResponse.js +701 -0
  746. package/dist/internal/ErrorResponse.js.map +1 -0
  747. package/dist/internal/Id.d.ts +10 -0
  748. package/dist/internal/Id.d.ts.map +1 -0
  749. package/dist/internal/Id.js +34 -0
  750. package/dist/internal/Id.js.map +1 -0
  751. package/dist/internal/KeyAuthorization.d.ts +1650 -0
  752. package/dist/internal/KeyAuthorization.d.ts.map +1 -0
  753. package/dist/internal/KeyAuthorization.js +1187 -0
  754. package/dist/internal/KeyAuthorization.js.map +1 -0
  755. package/dist/internal/Limits.d.ts +70 -0
  756. package/dist/internal/Limits.d.ts.map +1 -0
  757. package/dist/internal/Limits.js +36 -0
  758. package/dist/internal/Limits.js.map +1 -0
  759. package/dist/internal/Log.d.ts +34 -0
  760. package/dist/internal/Log.d.ts.map +1 -0
  761. package/dist/internal/Log.js +99 -0
  762. package/dist/internal/Log.js.map +1 -0
  763. package/dist/internal/LogLine.d.ts +29 -0
  764. package/dist/internal/LogLine.d.ts.map +1 -0
  765. package/dist/internal/LogLine.js +50 -0
  766. package/dist/internal/LogLine.js.map +1 -0
  767. package/dist/internal/Migrations.d.ts +28 -0
  768. package/dist/internal/Migrations.d.ts.map +1 -0
  769. package/dist/internal/Migrations.js +82 -0
  770. package/dist/internal/Migrations.js.map +1 -0
  771. package/dist/internal/Owner.d.ts +230 -0
  772. package/dist/internal/Owner.d.ts.map +1 -0
  773. package/dist/internal/Owner.js +101 -0
  774. package/dist/internal/Owner.js.map +1 -0
  775. package/dist/internal/Passkey.d.ts +901 -0
  776. package/dist/internal/Passkey.d.ts.map +1 -0
  777. package/dist/internal/Passkey.js +1185 -0
  778. package/dist/internal/Passkey.js.map +1 -0
  779. package/dist/internal/PendingKey.d.ts +49 -0
  780. package/dist/internal/PendingKey.d.ts.map +1 -0
  781. package/dist/internal/PendingKey.js +58 -0
  782. package/dist/internal/PendingKey.js.map +1 -0
  783. package/dist/internal/Privy.d.ts +138 -0
  784. package/dist/internal/Privy.d.ts.map +1 -0
  785. package/dist/internal/Privy.js +285 -0
  786. package/dist/internal/Privy.js.map +1 -0
  787. package/dist/internal/RateLimit.d.ts +218 -0
  788. package/dist/internal/RateLimit.d.ts.map +1 -0
  789. package/dist/internal/RateLimit.js +209 -0
  790. package/dist/internal/RateLimit.js.map +1 -0
  791. package/dist/internal/Realm.d.ts +290 -0
  792. package/dist/internal/Realm.d.ts.map +1 -0
  793. package/dist/internal/Realm.js +502 -0
  794. package/dist/internal/Realm.js.map +1 -0
  795. package/dist/internal/RequestId.d.ts +16 -0
  796. package/dist/internal/RequestId.d.ts.map +1 -0
  797. package/dist/internal/RequestId.js +78 -0
  798. package/dist/internal/RequestId.js.map +1 -0
  799. package/dist/internal/SigningKey.d.ts +126 -0
  800. package/dist/internal/SigningKey.d.ts.map +1 -0
  801. package/dist/internal/SigningKey.js +221 -0
  802. package/dist/internal/SigningKey.js.map +1 -0
  803. package/dist/internal/TempoAccount.d.ts +181 -0
  804. package/dist/internal/TempoAccount.d.ts.map +1 -0
  805. package/dist/internal/TempoAccount.js +369 -0
  806. package/dist/internal/TempoAccount.js.map +1 -0
  807. package/dist/internal/TestInbox.d.ts +42 -0
  808. package/dist/internal/TestInbox.d.ts.map +1 -0
  809. package/dist/internal/TestInbox.js +20 -0
  810. package/dist/internal/TestInbox.js.map +1 -0
  811. package/dist/internal/Timing.d.ts +52 -0
  812. package/dist/internal/Timing.d.ts.map +1 -0
  813. package/dist/internal/Timing.js +116 -0
  814. package/dist/internal/Timing.js.map +1 -0
  815. package/dist/internal/Validation.d.ts +52 -0
  816. package/dist/internal/Validation.d.ts.map +1 -0
  817. package/dist/internal/Validation.js +22 -0
  818. package/dist/internal/Validation.js.map +1 -0
  819. package/dist/internal/Verification.d.ts +24 -0
  820. package/dist/internal/Verification.d.ts.map +1 -0
  821. package/dist/internal/Verification.js +37 -0
  822. package/dist/internal/Verification.js.map +1 -0
  823. package/dist/internal/Wallet.d.ts +66 -0
  824. package/dist/internal/Wallet.d.ts.map +1 -0
  825. package/dist/internal/Wallet.js +59 -0
  826. package/dist/internal/Wallet.js.map +1 -0
  827. package/dist/internal/owners/Passkey.d.ts +9 -0
  828. package/dist/internal/owners/Passkey.d.ts.map +1 -0
  829. package/dist/internal/owners/Passkey.js +58 -0
  830. package/dist/internal/owners/Passkey.js.map +1 -0
  831. package/dist/internal/owners/Privy.d.ts +13 -0
  832. package/dist/internal/owners/Privy.d.ts.map +1 -0
  833. package/dist/internal/owners/Privy.js +59 -0
  834. package/dist/internal/owners/Privy.js.map +1 -0
  835. package/dist/internal/owners/Secp256k1.d.ts +12 -0
  836. package/dist/internal/owners/Secp256k1.d.ts.map +1 -0
  837. package/dist/internal/owners/Secp256k1.js +99 -0
  838. package/dist/internal/owners/Secp256k1.js.map +1 -0
  839. package/dist/worker.d.ts +18 -0
  840. package/dist/worker.d.ts.map +1 -0
  841. package/dist/worker.js +18 -0
  842. package/dist/worker.js.map +1 -0
  843. package/package.json +83 -3
  844. package/src/Api.ts +157 -0
  845. package/src/App.ts +316 -0
  846. package/src/api/account.ts +2266 -0
  847. package/src/api/authenticate.ts +1662 -0
  848. package/src/api/authorize.ts +1086 -0
  849. package/src/api/device.ts +516 -0
  850. package/src/api/health.ts +72 -0
  851. package/src/api/lib/AccountStep.ts +485 -0
  852. package/src/api/lib/Auth.ts +164 -0
  853. package/src/api/lib/Configure.ts +921 -0
  854. package/src/api/lib/Consent.ts +388 -0
  855. package/src/api/lib/Cors.ts +160 -0
  856. package/src/api/lib/Database.ts +10 -0
  857. package/src/api/lib/DeviceRequest.ts +244 -0
  858. package/src/api/lib/FirstAccount.ts +136 -0
  859. package/src/api/lib/Headless.ts +616 -0
  860. package/src/api/lib/IsolateCache.ts +28 -0
  861. package/src/api/lib/KeySigner.ts +690 -0
  862. package/src/api/lib/PasskeyLink.ts +162 -0
  863. package/src/api/lib/Session.ts +64 -0
  864. package/src/api/lib/SignInConsent.ts +393 -0
  865. package/src/api/oauth.ts +1796 -0
  866. package/src/app/components/CodeInput.tsx +153 -0
  867. package/src/app/components/DevTools.tsx +1071 -0
  868. package/src/app/components/Grant.tsx +476 -0
  869. package/src/app/components/icons/BRLA.png +0 -0
  870. package/src/app/components/icons/BRZ.svg +1 -0
  871. package/src/app/components/icons/CHFAU.png +0 -0
  872. package/src/app/components/icons/DLUSD.png +0 -0
  873. package/src/app/components/icons/EURAU.svg +1 -0
  874. package/src/app/components/icons/EURC.e.svg +1 -0
  875. package/src/app/components/icons/GBPA.svg +4 -0
  876. package/src/app/components/icons/GUSD.svg +1 -0
  877. package/src/app/components/icons/MACH.svg +4 -0
  878. package/src/app/components/icons/OUSD.svg +5 -0
  879. package/src/app/components/icons/PRIME.svg +14 -0
  880. package/src/app/components/icons/SBC.svg +1 -0
  881. package/src/app/components/icons/SEKAU.svg +5 -0
  882. package/src/app/components/icons/USD1.svg +30 -0
  883. package/src/app/components/icons/USDB.svg +11 -0
  884. package/src/app/components/icons/USDC.e.svg +1 -0
  885. package/src/app/components/icons/USDT0.svg +1 -0
  886. package/src/app/components/icons/USDY.svg +16 -0
  887. package/src/app/components/icons/USDe.svg +1 -0
  888. package/src/app/components/icons/YLDS.svg +3 -0
  889. package/src/app/components/icons/alphaUSD.svg +1 -0
  890. package/src/app/components/icons/betaUSD.svg +1 -0
  891. package/src/app/components/icons/cUSD.svg +1 -0
  892. package/src/app/components/icons/cbBTC.svg +1 -0
  893. package/src/app/components/icons/frxUSD.svg +1 -0
  894. package/src/app/components/icons/goUSD.svg +5 -0
  895. package/src/app/components/icons/iUSD.svg +1 -0
  896. package/src/app/components/icons/pathUSD.svg +25 -0
  897. package/src/app/components/icons/rUSD.svg +1 -0
  898. package/src/app/components/icons/reUSD.svg +1 -0
  899. package/src/app/components/icons/sUSDe.svg +1 -0
  900. package/src/app/components/icons/siUSD.svg +1 -0
  901. package/src/app/components/icons/stcUSD.svg +1 -0
  902. package/src/app/components/icons/syrupUSDC.svg +5 -0
  903. package/src/app/components/icons/thetaUSD.svg +1 -0
  904. package/src/app/components/icons/wYLDS.svg +10 -0
  905. package/src/app/components/icons/wsrUSD.svg +1 -0
  906. package/src/app/components/logos/OUSD.dark.svg +17 -0
  907. package/src/app/components/logos/OUSD.light.svg +17 -0
  908. package/src/app/coverage.server.ts +73 -0
  909. package/src/app/coverage.ts +69 -0
  910. package/src/app/crons/cleanup.ts +104 -0
  911. package/src/app/db/auth.ts +440 -0
  912. package/src/app/db/migrations/0000_better_auth.sql +53 -0
  913. package/src/app/db/migrations/0001_oauth_provider.sql +162 -0
  914. package/src/app/db/migrations/0002_device_code.sql +17 -0
  915. package/src/app/db/migrations/0003_realms.sql +27 -0
  916. package/src/app/db/migrations/0004_default_realm.sql +2 -0
  917. package/src/app/db/migrations/0005_passkeys.sql +30 -0
  918. package/src/app/db/migrations/0006_first_accounts.sql +9 -0
  919. package/src/app/db/migrations/0007_pending_keys.sql +13 -0
  920. package/src/app/db/migrations/0008_secp256k1_owners.sql +18 -0
  921. package/src/app/db/migrations/0009_device_requests.sql +8 -0
  922. package/src/app/db/migrations/0010_device_keys.sql +4 -0
  923. package/src/app/db/migrations/0011_registered_passkeys.sql +2 -0
  924. package/src/app/db/migrations/0012_passkey_accounts.sql +7 -0
  925. package/src/app/db/migrations/0013_first_party_apps.sql +4 -0
  926. package/src/app/db/migrations/0014_logout_revokes_tokens.sql +17 -0
  927. package/src/app/db/migrations/0015_expiry_indexes.sql +9 -0
  928. package/src/app/db/migrations/0016_configurable_accounts.sql +15 -0
  929. package/src/app/db/migrations/0017_account_config_keys.sql +3 -0
  930. package/src/app/db/migrations/0018_better_auth_1_8.sql +9 -0
  931. package/src/app/db/migrations/0019_drop_provider_account_index.sql +1 -0
  932. package/src/app/db/migrations/meta/0000_snapshot.json +362 -0
  933. package/src/app/db/migrations/meta/0001_snapshot.json +1487 -0
  934. package/src/app/db/migrations/meta/0002_snapshot.json +1603 -0
  935. package/src/app/db/migrations/meta/0003_snapshot.json +1760 -0
  936. package/src/app/db/migrations/meta/0004_snapshot.json +1760 -0
  937. package/src/app/db/migrations/meta/0005_snapshot.json +1911 -0
  938. package/src/app/db/migrations/meta/0006_snapshot.json +1967 -0
  939. package/src/app/db/migrations/meta/0007_snapshot.json +2047 -0
  940. package/src/app/db/migrations/meta/0008_snapshot.json +2157 -0
  941. package/src/app/db/migrations/meta/0009_snapshot.json +2207 -0
  942. package/src/app/db/migrations/meta/0010_snapshot.json +2231 -0
  943. package/src/app/db/migrations/meta/0011_snapshot.json +2231 -0
  944. package/src/app/db/migrations/meta/0012_snapshot.json +2231 -0
  945. package/src/app/db/migrations/meta/0013_snapshot.json +2231 -0
  946. package/src/app/db/migrations/meta/0014_snapshot.json +2231 -0
  947. package/src/app/db/migrations/meta/0015_snapshot.json +2375 -0
  948. package/src/app/db/migrations/meta/0016_snapshot.json +2475 -0
  949. package/src/app/db/migrations/meta/0017_snapshot.json +2481 -0
  950. package/src/app/db/migrations/meta/0018_snapshot.json +2535 -0
  951. package/src/app/db/migrations/meta/0019_snapshot.json +2514 -0
  952. package/src/app/db/migrations/meta/_journal.json +146 -0
  953. package/src/app/db/schema.ts +241 -0
  954. package/src/app/db/table.ts +31 -0
  955. package/src/app/env.ts +57 -0
  956. package/src/app/inbox.ts +190 -0
  957. package/src/app/lib/Client.ts +82 -0
  958. package/src/app/lib/Inbox.ts +11 -0
  959. package/src/app/lib/Loader.ts +21 -0
  960. package/src/app/lib/Upgrade.ts +221 -0
  961. package/src/app/package.json +8 -0
  962. package/src/app/public/_headers +4 -0
  963. package/src/app/routeTree.gen.ts +219 -0
  964. package/src/app/router.tsx +47 -0
  965. package/src/app/routes/[_].flows.tsx +4254 -0
  966. package/src/app/routes/__root.tsx +172 -0
  967. package/src/app/routes/authorize.tsx +379 -0
  968. package/src/app/routes/choose-account.tsx +144 -0
  969. package/src/app/routes/deposit.tsx +107 -0
  970. package/src/app/routes/device.tsx +273 -0
  971. package/src/app/routes/error.tsx +62 -0
  972. package/src/app/routes/index.tsx +511 -0
  973. package/src/app/routes/login.tsx +577 -0
  974. package/src/app/screens/Account.tsx +559 -0
  975. package/src/app/screens/Approval.tsx +444 -0
  976. package/src/app/screens/ChooseAccount.tsx +206 -0
  977. package/src/app/screens/Deposit.tsx +523 -0
  978. package/src/app/screens/DeviceApproval.tsx +500 -0
  979. package/src/app/screens/NotFound.tsx +62 -0
  980. package/src/app/screens/SignIn.tsx +372 -0
  981. package/src/app/screens/WalletUpgrade.tsx +121 -0
  982. package/src/app/screens/chains/base.svg +3 -0
  983. package/src/app/screens/chains/ethereum.svg +11 -0
  984. package/src/app/screens/chains/solana.svg +4 -0
  985. package/src/app/screens/chains/tempo.svg +4 -0
  986. package/src/app/server.ts +342 -0
  987. package/src/app/vite.config.ts +128 -0
  988. package/src/app/void.config.ts +36 -0
  989. package/src/app/wallet.ts +69 -0
  990. package/src/app/zyzz.config.ts +52 -0
  991. package/src/cli/Admin.ts +74 -0
  992. package/src/cli/Apps.ts +27 -0
  993. package/src/cli/Cli.ts +41 -0
  994. package/src/cli/Project.ts +119 -0
  995. package/src/cli/Realms.ts +49 -0
  996. package/src/cli/Session.ts +290 -0
  997. package/src/cli/User.ts +40 -0
  998. package/src/cli/V1.ts +54 -0
  999. package/src/cli/bin.ts +44 -0
  1000. package/src/cli/commands/admin/apps/create.ts +96 -0
  1001. package/src/cli/commands/admin/apps/delete.ts +38 -0
  1002. package/src/cli/commands/admin/apps/index.ts +15 -0
  1003. package/src/cli/commands/admin/apps/list.ts +25 -0
  1004. package/src/cli/commands/admin/apps/rotate-secret.ts +47 -0
  1005. package/src/cli/commands/admin/apps/update.ts +79 -0
  1006. package/src/cli/commands/admin/index.ts +14 -0
  1007. package/src/cli/commands/admin/migrate.ts +19 -0
  1008. package/src/cli/commands/admin/realms/add.ts +40 -0
  1009. package/src/cli/commands/admin/realms/index.ts +14 -0
  1010. package/src/cli/commands/admin/realms/list.ts +38 -0
  1011. package/src/cli/commands/admin/realms/passkeys/index.ts +15 -0
  1012. package/src/cli/commands/admin/realms/passkeys/set.ts +44 -0
  1013. package/src/cli/commands/admin/realms/privy/index.ts +14 -0
  1014. package/src/cli/commands/admin/realms/privy/set.ts +69 -0
  1015. package/src/cli/commands/admin/realms/remove.ts +33 -0
  1016. package/src/cli/commands/admin/realms/secp256k1/disable.ts +40 -0
  1017. package/src/cli/commands/admin/realms/secp256k1/enable.ts +40 -0
  1018. package/src/cli/commands/admin/realms/secp256k1/index.ts +19 -0
  1019. package/src/cli/commands/admin/realms/set.ts +46 -0
  1020. package/src/cli/commands/admin/rotate-key.ts +47 -0
  1021. package/src/cli/commands/init.ts +42 -0
  1022. package/src/cli/commands/login.ts +32 -0
  1023. package/src/cli/commands/logout.ts +19 -0
  1024. package/src/cli/commands/whoami.ts +23 -0
  1025. package/src/client/Actions.ts +180 -0
  1026. package/src/client/Auth.ts +267 -0
  1027. package/src/client/Authorization.ts +34 -0
  1028. package/src/client/Decorator.ts +444 -0
  1029. package/src/client/Key.ts +137 -0
  1030. package/src/client/Pending.ts +45 -0
  1031. package/src/client/Permissions.ts +41 -0
  1032. package/src/client/Storage.ts +29 -0
  1033. package/src/client/TempoAccount.ts +55 -0
  1034. package/src/client/Tokens.ts +27 -0
  1035. package/src/client/User.ts +23 -0
  1036. package/src/client/actions/account.ts +171 -0
  1037. package/src/client/actions/device.ts +166 -0
  1038. package/src/client/actions/email.ts +164 -0
  1039. package/src/client/actions/oauth.ts +179 -0
  1040. package/src/client/actions/passkey.ts +333 -0
  1041. package/src/client/actions/realm.ts +37 -0
  1042. package/src/client/actions/redirect.ts +502 -0
  1043. package/src/client/internal/accessKey.ts +54 -0
  1044. package/src/client/internal/account.ts +18 -0
  1045. package/src/client/internal/api.ts +242 -0
  1046. package/src/client/internal/headless.ts +308 -0
  1047. package/src/client/internal/indexedDb.ts +44 -0
  1048. package/src/client/internal/request.ts +70 -0
  1049. package/src/client/internal/store.ts +20 -0
  1050. package/src/client/internal/verifier.ts +75 -0
  1051. package/src/client.ts +17 -0
  1052. package/src/index.ts +5 -0
  1053. package/src/internal/Apps.ts +1283 -0
  1054. package/src/internal/Auth.ts +273 -0
  1055. package/src/internal/Authorize.ts +433 -0
  1056. package/src/internal/Balance.ts +144 -0
  1057. package/src/internal/BodyLimit.ts +31 -0
  1058. package/src/internal/Cache.ts +119 -0
  1059. package/src/internal/Chain.ts +99 -0
  1060. package/src/internal/ChainList.ts +270 -0
  1061. package/src/internal/ChainName.ts +14 -0
  1062. package/src/internal/ChainStatus.ts +65 -0
  1063. package/src/internal/CodeEmail.ts +138 -0
  1064. package/src/internal/ConfigurableAccount.ts +1315 -0
  1065. package/src/internal/Device.ts +471 -0
  1066. package/src/internal/Env.ts +92 -0
  1067. package/src/internal/ErrorResponse.ts +896 -0
  1068. package/src/internal/Faucet.ts +43 -0
  1069. package/src/internal/Id.ts +41 -0
  1070. package/src/internal/KeyAuthorization.ts +1536 -0
  1071. package/src/internal/Limits.ts +40 -0
  1072. package/src/internal/Log.ts +166 -0
  1073. package/src/internal/LogLine.ts +81 -0
  1074. package/src/internal/Logout.ts +356 -0
  1075. package/src/internal/Migrations.ts +120 -0
  1076. package/src/internal/OpenApi.ts +300 -0
  1077. package/src/internal/Owner.ts +310 -0
  1078. package/src/internal/Passkey.ts +1904 -0
  1079. package/src/internal/PendingKey.ts +104 -0
  1080. package/src/internal/Privy.ts +536 -0
  1081. package/src/internal/RateLimit.ts +346 -0
  1082. package/src/internal/Realm.ts +814 -0
  1083. package/src/internal/RequestId.ts +118 -0
  1084. package/src/internal/SignInGrant.ts +175 -0
  1085. package/src/internal/SigningKey.ts +319 -0
  1086. package/src/internal/TempoAccount.ts +545 -0
  1087. package/src/internal/TestInbox.ts +51 -0
  1088. package/src/internal/Timing.ts +172 -0
  1089. package/src/internal/Validation.ts +52 -0
  1090. package/src/internal/Verification.ts +58 -0
  1091. package/src/internal/Wallet.ts +101 -0
  1092. package/src/internal/owners/Passkey.ts +76 -0
  1093. package/src/internal/owners/Privy.ts +82 -0
  1094. package/src/internal/owners/Secp256k1.ts +139 -0
  1095. package/src/types/app.d.ts +39 -0
  1096. package/src/worker.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveError-CZXXvCJR.js","names":["Hash.keccak256","Hex.concat","Hex.padLeft","TokenId.toAddress","Addresses.feeManager","Abis.feeAmm","TokenId.toAddress","PoolId.from","errorResolvers","ox_Channel.address","Abis.tip20ChannelReserve","ox_Channel.from","ox_Channel.computeId","Hex.random","Address.from","TokenId.toAddress","withdraw","Addresses.tip20ChannelReserve","errorResolvers","Addresses.stablecoinDex","Abis.stablecoinDex","Hash.keccak256","Hex.concat","errorResolvers","Addresses.tip403Registry","Abis.tip403Registry","errorResolvers","TokenId.fromAddress","Addresses.feeManager","Abis.feeManager","TokenId.toAddress","errorResolvers","Abis.tip20","Addresses.nonceManager","Abis.nonce","ExecutionError.from","ExecutionError.messages","hints","ExecutionError.hints","accessKeyResolvers","ammResolvers","channelResolvers","dexResolvers","feeResolvers","nonceResolvers","policyResolvers","tokenResolvers","tip20ChannelReserve","stablecoinDex","feeManager$1","zeroAddress","computeId","nonce","from$2","writeContract","feeAmm","parseEventLogs","toAddress","stablecoinDex$1","tip403Registry","multicall","from$1","tip403Registry$1","address","readContract","fromAddress","TempoExecutionError","errorResolvers$7","feeManager","defineCall","withExecutionError","getFeeToken","errorResolvers$6","formatTime","hints","formatAmount","messages$1","from$3","tip20ChannelReserve$1","nonceManager","tip20","random","concat","keccak256","TransactionReceiptRevertedError","parseAccount","isAddressEqual","formatAbiItem","toFunctionSelector","BaseError","call","encodeFunctionData","from","padLeft","value","getPool","rest","parameters","pool","totalSupply","client","calls","args","userToken","validatorToken","getLiquidityBalance","poolId","rebalanceSwap","inner","action","amountOut","to","extractEvent","log","mint","userTokenAddress","validatorTokenAddress","validatorTokenAmount","burn","liquidity","AmmInsufficientLiquidityError","reserveUserToken","reserveValidatorToken","amount","resolvePool","context","errorResolvers$5","close","channel","cumulativeAmount","captureAmount","signature","getStates","chainId","channelIds","channel_","open","payee","operator","token","deposit","salt","authorizedSigner","requestClose","settle","topUp","additionalDeposit","withdraw$1","withdraw","ChannelNotFoundError","descriptor","ChannelCloseNotReadyError","closeRequestedAt","readyAt","ChannelAmountExceedsDepositError","ChannelAmountNotIncreasingError","settled","reserve","readChannel","gracePeriod","errorResolvers$4","buy","tokenIn","tokenOut","maxAmountIn","cancel","orderId","cancelStale","createPair","base","getBalance","acc","account","getBuyQuote","getOrder","getOrderbook","pairKey","getPairKey","quote","getTickLevel","head","tail","totalLiquidity","tick","isBid","getSellQuote","amountIn","place","type","placeFlip","flipTick","l","sell","minAmountOut","DexInsufficientOutputError","DexMaxInputExceededError","DexInsufficientLiquidityError","DexBelowMinimumOrderSizeError","minimum","DexTickOutOfBoundsError","minTick","maxTick","DexInvalidFlipTickError","tickSpacing","side","DexOrderNotFoundError","DexOrderNotStaleError","DexPairNotFoundError","DexInsufficientBalanceError","balance","exchange","getExchangeCall","errorResolvers$3","tokens","name","policyTypeMap","create","admin","config","addresses","setAdmin","policyId","modifyWhitelist","targetAccount","allowed","modifyBlacklist","restricted","getData","result","isAuthorized","user","PolicyNotFoundError","errorResolvers$2","getUserToken","account_","setUserToken","getValidatorToken","validator","setValidatorToken","FeeInsufficientBalanceError","feeToken","decimals","errorResolvers$1","payer","feePayer","getNonce","nonceKey","NonceReplayError","NonceInvalidExpiryError","now","errorResolvers","messages","toExecutionError","cause","options","source","replay","details","error","pattern","hints$1","getCall","hasRevertData","resolvers","reverted","data","hex","raw","functionName","item","abi","inputs","input"],"sources":["../../../../../node_modules/.pnpm/ox@0.14.59_typescript@7.0.2_zod@4.6.7/node_modules/ox/_esm/tempo/PoolId.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/actions/amm.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/actions/channel.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/actions/dex.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/actions/policy.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/actions/fee.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/actions/nonce.js","../../../../../node_modules/.pnpm/viem@2.57.12_typescript@7.0.2_zod@4.6.7/node_modules/viem/_esm/tempo/internal/resolveError.js"],"sourcesContent":["import * as Hash from '../core/Hash.js';\nimport * as Hex from '../core/Hex.js';\nimport * as TokenId from './TokenId.js';\n/**\n * Converts a user token and validator token to a pool ID.\n *\n * Pool IDs are deterministic keys derived from two token addresses (order-independent)\n * used to identify trading pairs on Tempo's enshrined stablecoin DEX.\n *\n * [Stablecoin DEX Specification](https://docs.tempo.xyz/protocol/exchange/spec)\n *\n * @example\n * ```ts twoslash\n * import { PoolId } from 'ox/tempo'\n *\n * const poolId = PoolId.from({\n * userToken: 1n,\n * validatorToken: 2n,\n * })\n * ```\n *\n * @param value - User token and validator token.\n * @returns The pool ID.\n */\nexport function from(value) {\n return Hash.keccak256(Hex.concat(Hex.padLeft(TokenId.toAddress(value.userToken), 32), Hex.padLeft(TokenId.toAddress(value.validatorToken), 32)));\n}\n//# sourceMappingURL=PoolId.js.map","import { PoolId, TokenId } from 'ox/tempo';\nimport { multicall } from '../../actions/public/multicall.js';\nimport { readContract } from '../../actions/public/readContract.js';\nimport { watchContractEvent } from '../../actions/public/watchContractEvent.js';\nimport { writeContract } from '../../actions/wallet/writeContract.js';\nimport { writeContractSync } from '../../actions/wallet/writeContractSync.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js';\nimport * as Abis from '../Abis.js';\nimport * as Addresses from '../Addresses.js';\nimport { TempoExecutionError } from '../errors.js';\nimport { withExecutionError, } from '../internal/errors.js';\nimport { defineCall } from '../internal/utils.js';\n/**\n * Gets the reserves for a liquidity pool.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const pool = await Actions.amm.getPool(client, {\n * userToken: '0x...',\n * validatorToken: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The pool reserves.\n */\nexport async function getPool(client, parameters) {\n const { userToken, validatorToken, ...rest } = parameters;\n const [pool, totalSupply] = await multicall(client, {\n ...rest,\n contracts: getPool.calls({ userToken, validatorToken }),\n allowFailure: false,\n deployless: true,\n });\n return {\n reserveUserToken: pool.reserveUserToken,\n reserveValidatorToken: pool.reserveValidatorToken,\n totalSupply,\n };\n}\n(function (getPool) {\n /**\n * Defines calls to the `getPool` and `totalSupply` functions.\n *\n * @param args - Arguments.\n * @returns The calls.\n */\n function calls(args) {\n const { userToken, validatorToken } = args;\n return [\n defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n args: [TokenId.toAddress(userToken), TokenId.toAddress(validatorToken)],\n functionName: 'getPool',\n }),\n defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n args: [PoolId.from({ userToken, validatorToken })],\n functionName: 'totalSupply',\n }),\n ];\n }\n getPool.calls = calls;\n})(getPool || (getPool = {}));\n/**\n * Gets the LP token balance for an account in a specific pool.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const poolId = await Actions.amm.getPoolId(client, {\n * userToken: '0x...',\n * validatorToken: '0x...',\n * })\n *\n * const balance = await Actions.amm.getLiquidityBalance(client, {\n * poolId,\n * address: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The LP token balance.\n */\nexport async function getLiquidityBalance(client, parameters) {\n const { address, poolId, userToken, validatorToken, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getLiquidityBalance.call({\n address,\n poolId,\n userToken,\n validatorToken,\n }),\n });\n}\n(function (getLiquidityBalance) {\n /**\n * Defines a call to the `liquidityBalances` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { address } = args;\n const poolId = (() => {\n if ('poolId' in args && args.poolId)\n return args.poolId;\n if ('userToken' in args && 'validatorToken' in args)\n return PoolId.from({\n userToken: args.userToken,\n validatorToken: args.validatorToken,\n });\n throw new Error('`poolId`, or `userToken` and `validatorToken` must be provided.');\n })();\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n args: [poolId, address],\n functionName: 'liquidityBalances',\n });\n }\n Object.defineProperty(getLiquidityBalance, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getLiquidityBalance || (getLiquidityBalance = {}));\n/**\n * Performs a rebalance swap from validator token to user token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.amm.rebalanceSwap(client, {\n * userToken: '0x...',\n * validatorToken: '0x...',\n * amountOut: 100n,\n * to: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function rebalanceSwap(client, parameters) {\n return rebalanceSwap.inner(writeContract, client, parameters);\n}\n(function (rebalanceSwap) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { userToken, validatorToken, amountOut, to, ...rest } = parameters;\n const call = rebalanceSwap.call({\n userToken,\n validatorToken,\n amountOut,\n to,\n });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n rebalanceSwap.inner = inner;\n /**\n * Defines a call to the `rebalanceSwap` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.amm.rebalanceSwap.call({\n * userToken: '0x20c0...beef',\n * validatorToken: '0x20c0...babe',\n * amountOut: 100n,\n * to: '0xfeed...fede',\n * }),\n * actions.amm.rebalanceSwap.call({\n * userToken: '0x20c0...babe',\n * validatorToken: '0x20c0...babe',\n * amountOut: 100n,\n * to: '0xfeed...fede',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { userToken, validatorToken, amountOut, to } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n functionName: 'rebalanceSwap',\n args: [\n TokenId.toAddress(userToken),\n TokenId.toAddress(validatorToken),\n amountOut,\n to,\n ],\n });\n }\n Object.defineProperty(rebalanceSwap, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `RebalanceSwap` event from logs.\n *\n * @param logs - The logs.\n * @returns The `RebalanceSwap` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.feeAmm,\n logs,\n eventName: 'RebalanceSwap',\n strict: true,\n });\n if (!log)\n throw new Error('`RebalanceSwap` event not found.');\n return log;\n }\n rebalanceSwap.extractEvent = extractEvent;\n})(rebalanceSwap || (rebalanceSwap = {}));\n/**\n * Performs a rebalance swap from validator token to user token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.amm.rebalanceSwapSync(client, {\n * userToken: '0x...',\n * validatorToken: '0x...',\n * amountOut: 100n,\n * to: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function rebalanceSwapSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await rebalanceSwap.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = rebalanceSwap.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Adds liquidity to a pool.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.amm.mint(client, {\n * userTokenAddress: '0x20c0...beef',\n * validatorTokenAddress: '0x20c0...babe',\n * validatorTokenAmount: 100n,\n * to: '0xfeed...fede',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function mint(client, parameters) {\n return mint.inner(writeContract, client, parameters);\n}\n(function (mint) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { to, userTokenAddress, validatorTokenAddress, validatorTokenAmount, ...rest } = parameters;\n const call = mint.call({\n to,\n userTokenAddress,\n validatorTokenAddress,\n validatorTokenAmount,\n });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n mint.inner = inner;\n /**\n * Defines a call to the `mint` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.amm.mint.call({\n * userTokenAddress: '0x20c0...beef',\n * validatorTokenAddress: '0x20c0...babe',\n * validatorTokenAmount: 100n,\n * to: '0xfeed...fede',\n * }),\n * actions.amm.mint.call({\n * userTokenAddress: '0x20c0...babe',\n * validatorTokenAddress: '0x20c0...babe',\n * validatorTokenAmount: 100n,\n * to: '0xfeed...fede',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { to, userTokenAddress, validatorTokenAddress, validatorTokenAmount, } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n functionName: 'mint',\n args: [\n TokenId.toAddress(userTokenAddress),\n TokenId.toAddress(validatorTokenAddress),\n validatorTokenAmount,\n to,\n ],\n });\n }\n Object.defineProperty(mint, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `Mint` event from logs.\n *\n * @param logs - The logs.\n * @returns The `Mint` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.feeAmm,\n logs,\n eventName: 'Mint',\n strict: true,\n });\n if (!log)\n throw new Error('`Mint` event not found.');\n return log;\n }\n mint.extractEvent = extractEvent;\n})(mint || (mint = {}));\n/**\n * Adds liquidity to a pool.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.amm.mint(client, {\n * userTokenAddress: '0x20c0...beef',\n * validatorTokenAddress: '0x20c0...babe',\n * validatorTokenAmount: 100n,\n * to: '0xfeed...fede',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function mintSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await mint.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = mint.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Removes liquidity from a pool.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.amm.burn(client, {\n * userToken: '0x20c0...beef',\n * validatorToken: '0x20c0...babe',\n * liquidity: 50n,\n * to: '0xfeed...fede',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function burn(client, parameters) {\n return burn.inner(writeContract, client, parameters);\n}\n(function (burn) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { liquidity, to, userToken, validatorToken, ...rest } = parameters;\n const call = burn.call({ liquidity, to, userToken, validatorToken });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n burn.inner = inner;\n /**\n * Defines a call to the `burn` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.amm.burn.call({\n * liquidity: 100n,\n * to: '0xfeed...fede',\n * userToken: '0x20c0...beef',\n * validatorToken: '0x20c0...babe',\n * }),\n * actions.amm.burn.call({\n * liquidity: 100n,\n * to: '0xfeed...fede',\n * userToken: '0x20c0...babe',\n * validatorToken: '0x20c0...babe',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { liquidity, to, userToken, validatorToken } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n functionName: 'burn',\n args: [\n TokenId.toAddress(userToken),\n TokenId.toAddress(validatorToken),\n liquidity,\n to,\n ],\n });\n }\n Object.defineProperty(burn, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `Burn` event from logs.\n *\n * @param logs - The logs.\n * @returns The `Burn` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.feeAmm,\n logs,\n eventName: 'Burn',\n strict: true,\n });\n if (!log)\n throw new Error('`Burn` event not found.');\n return log;\n }\n burn.extractEvent = extractEvent;\n})(burn || (burn = {}));\n/**\n * Removes liquidity from a pool.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.amm.burnSync(client, {\n * userToken: '0x20c0...beef',\n * validatorToken: '0x20c0...babe',\n * liquidity: 50n,\n * to: '0xfeed...fede',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function burnSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await burn.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = burn.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Watches for rebalance swap events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.amm.watchRebalanceSwap(client, {\n * onRebalanceSwap: (args, log) => {\n * console.log('Rebalance swap:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchRebalanceSwap(client, parameters) {\n const { onRebalanceSwap, userToken, validatorToken, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n eventName: 'RebalanceSwap',\n args: userToken !== undefined && validatorToken !== undefined\n ? {\n userToken: TokenId.toAddress(userToken),\n validatorToken: TokenId.toAddress(validatorToken),\n }\n : undefined,\n onLogs: (logs) => {\n for (const log of logs)\n onRebalanceSwap(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for liquidity mint events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.amm.watchMint(client, {\n * onMint: (args, log) => {\n * console.log('Liquidity added:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchMint(client, parameters) {\n const { onMint, to, userToken, validatorToken, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n eventName: 'Mint',\n args: {\n to,\n ...(userToken !== undefined && {\n userToken: TokenId.toAddress(userToken),\n }),\n ...(validatorToken !== undefined && {\n validatorToken: TokenId.toAddress(validatorToken),\n }),\n },\n onLogs: (logs) => {\n for (const log of logs)\n onMint(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for liquidity burn events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.amm.watchBurn(client, {\n * onBurn: (args, log) => {\n * console.log('Liquidity removed:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchBurn(client, parameters) {\n const { onBurn, userToken, validatorToken, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n eventName: 'Burn',\n args: userToken !== undefined && validatorToken !== undefined\n ? {\n userToken: TokenId.toAddress(userToken),\n validatorToken: TokenId.toAddress(validatorToken),\n }\n : undefined,\n onLogs: (logs) => {\n for (const log of logs)\n onBurn(log.args, log);\n },\n strict: true,\n });\n}\n/** Thrown when a fee AMM pool cannot cover a swap, deposit, or withdrawal. */\nexport class AmmInsufficientLiquidityError extends TempoExecutionError {\n constructor(parameters) {\n const { amount, reserveUserToken, reserveValidatorToken, userToken, validatorToken, } = parameters;\n super(parameters, {\n details: {\n 'user token': userToken,\n 'validator token': validatorToken,\n amount,\n 'user token reserve': reserveUserToken,\n 'validator token reserve': reserveValidatorToken,\n },\n name: 'AmmInsufficientLiquidityError',\n });\n /** Amount of the call (`amountOut`, `amountValidatorToken`, or `liquidity`). */\n Object.defineProperty(this, \"amount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Pool reserve of `userToken`, when known. */\n Object.defineProperty(this, \"reserveUserToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Pool reserve of `validatorToken`, when known. */\n Object.defineProperty(this, \"reserveValidatorToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** User token of the pool. */\n Object.defineProperty(this, \"userToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Validator token of the pool. */\n Object.defineProperty(this, \"validatorToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amount = amount;\n this.reserveUserToken = reserveUserToken;\n this.reserveValidatorToken = reserveValidatorToken;\n this.userToken = userToken;\n this.validatorToken = validatorToken;\n }\n}\nasync function resolvePool(context) {\n const { call } = context;\n if (!call || !isAddressEqual(call.address, Addresses.feeManager))\n return undefined;\n const userToken = call.arg('userToken');\n const validatorToken = call.arg('validatorToken');\n if (!userToken || !validatorToken)\n return undefined;\n const [pool] = await context.read([\n {\n address: Addresses.feeManager,\n abi: Abis.feeAmm,\n functionName: 'getPool',\n args: [userToken, validatorToken],\n },\n ]);\n return new AmmInsufficientLiquidityError({\n ...context.base,\n amount: call.arg('amountOut') ??\n call.arg('amountValidatorToken') ??\n call.arg('liquidity'),\n reserveUserToken: pool?.result?.reserveUserToken,\n reserveValidatorToken: pool?.result?.reserveValidatorToken,\n userToken,\n validatorToken,\n });\n}\n/** @internal */\nexport const errorResolvers = {\n 'InsufficientLiquidity()': resolvePool,\n 'InsufficientReserves()': resolvePool,\n};\n//# sourceMappingURL=amm.js.map","import * as Address from 'ox/Address';\nimport * as Hex from 'ox/Hex';\nimport { Channel as ox_Channel, TokenId } from 'ox/tempo';\nimport { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { readContract } from '../../actions/public/readContract.js';\nimport { writeContract } from '../../actions/wallet/writeContract.js';\nimport { writeContractSync } from '../../actions/wallet/writeContractSync.js';\nimport { zeroAddress } from '../../constants/address.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js';\nimport * as Abis from '../Abis.js';\nimport { signVoucher as signVoucher_ } from '../Account.js';\nimport * as Addresses from '../Addresses.js';\nimport { TempoExecutionError } from '../errors.js';\nimport { formatTime, withExecutionError, } from '../internal/errors.js';\nimport { defineCall } from '../internal/utils.js';\n/**\n * Closes a TIP-20 channel reserve channel from the payee or operator side.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const hash = await Actions.channel.close(client, {\n * captureAmount: 100n,\n * cumulativeAmount: 100n,\n * channel,\n * signature: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function close(client, parameters) {\n return close.inner(writeContract, client, parameters);\n}\n(function (close) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { captureAmount, cumulativeAmount, channel, signature, ...rest } = parameters;\n return (await withExecutionError(action)(client, {\n ...rest,\n ...close.call({\n captureAmount,\n cumulativeAmount,\n channel,\n signature,\n }),\n }));\n }\n close.inner = inner;\n /**\n * Defines a call to the `close` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { captureAmount, cumulativeAmount, channel, signature } = args;\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n functionName: 'close',\n args: [\n ox_Channel.from(channel),\n cumulativeAmount,\n captureAmount,\n signature,\n ],\n });\n }\n Object.defineProperty(close, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `ChannelClosed` event from logs.\n *\n * @param logs - The logs.\n * @returns The `ChannelClosed` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip20ChannelReserve,\n logs,\n eventName: 'ChannelClosed',\n strict: true,\n });\n if (!log)\n throw new Error('`ChannelClosed` event not found.');\n return log;\n }\n close.extractEvent = extractEvent;\n})(close || (close = {}));\n/**\n * Closes a TIP-20 channel reserve channel and waits for the transaction receipt.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const result = await Actions.channel.closeSync(client, {\n * captureAmount: 100n,\n * cumulativeAmount: 100n,\n * channel,\n * signature: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function closeSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await close.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = close.extractEvent(receipt.logs);\n return { ...args, receipt };\n}\n/**\n * Gets TIP-20 channel reserve state for a channel ID or channel.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }),\n * transport: http(),\n * })\n *\n * const state = await Actions.channel.getStates(client, {\n * channel: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns Channel state for a single channel, or channel states for multiple channels.\n */\nexport async function getStates(client, parameters) {\n const chainId = client.chain?.id;\n const { channel, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getStates.call({ channel, chainId }),\n });\n}\n(function (getStates) {\n /**\n * Defines a call to the `getChannelState` or `getChannelStatesBatch` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }),\n * transport: http(),\n * }).extend(walletActions)\n *\n * const calls = [Actions.channel.getStates.call({ channel: '0x...' })]\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { channel, chainId } = args;\n if (Array.isArray(channel)) {\n const channelIds = channel.map((channel) => {\n if (typeof channel === 'string')\n return channel;\n if (chainId === undefined)\n throw new Error('`chainId` is required for channel inputs.');\n return ox_Channel.computeId(channel, { chainId });\n });\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n args: [channelIds],\n functionName: 'getChannelStatesBatch',\n });\n }\n const channel_ = channel;\n if (typeof channel_ === 'string')\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n args: [channel_],\n functionName: 'getChannelState',\n });\n if (chainId === undefined)\n throw new Error('`chainId` is required for channel inputs.');\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n args: [ox_Channel.computeId(channel_, { chainId })],\n functionName: 'getChannelState',\n });\n }\n Object.defineProperty(getStates, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getStates || (getStates = {}));\n/**\n * Opens and funds a TIP-20 channel reserve channel.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }),\n * transport: http(),\n * })\n *\n * const hash = await Actions.channel.open(client, {\n * deposit: 100n,\n * payee: '0x...',\n * token: 1n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function open(client, parameters) {\n return open.inner(writeContract, client, parameters);\n}\n(function (open) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { authorizedSigner, deposit, operator, payee, salt, token, ...rest } = parameters;\n return (await withExecutionError(action)(client, {\n ...rest,\n ...open.call({\n authorizedSigner,\n deposit,\n operator,\n payee,\n salt,\n token,\n }),\n }));\n }\n open.inner = inner;\n /**\n * Defines a call to the `open` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { authorizedSigner = zeroAddress, deposit, operator = zeroAddress, payee, salt = Hex.random(32), token, } = args;\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n functionName: 'open',\n args: [\n Address.from(payee),\n Address.from(operator),\n TokenId.toAddress(token),\n deposit,\n salt,\n Address.from(authorizedSigner),\n ],\n });\n }\n Object.defineProperty(open, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `ChannelOpened` event from logs.\n *\n * @param logs - The logs.\n * @returns The `ChannelOpened` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip20ChannelReserve,\n logs,\n eventName: 'ChannelOpened',\n strict: true,\n });\n if (!log)\n throw new Error('`ChannelOpened` event not found.');\n return log;\n }\n open.extractEvent = extractEvent;\n})(open || (open = {}));\n/**\n * Opens and funds a TIP-20 channel reserve channel and waits for the\n * transaction receipt.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }),\n * transport: http(),\n * })\n *\n * const result = await Actions.channel.openSync(client, {\n * deposit: 100n,\n * payee: '0x...',\n * token: 1n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function openSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await open.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = open.extractEvent(receipt.logs);\n return { ...args, receipt };\n}\n/**\n * Starts the payer close timer for a TIP-20 channel reserve channel.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const hash = await Actions.channel.requestClose(client, {\n * channel,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function requestClose(client, parameters) {\n return requestClose.inner(writeContract, client, parameters);\n}\n(function (requestClose) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { channel, ...rest } = parameters;\n return (await withExecutionError(action)(client, {\n ...rest,\n ...requestClose.call({ channel }),\n }));\n }\n requestClose.inner = inner;\n /**\n * Defines a call to the `requestClose` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { channel } = args;\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n functionName: 'requestClose',\n args: [ox_Channel.from(channel)],\n });\n }\n Object.defineProperty(requestClose, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `CloseRequested` event from logs.\n *\n * @param logs - The logs.\n * @returns The `CloseRequested` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip20ChannelReserve,\n logs,\n eventName: 'CloseRequested',\n strict: true,\n });\n if (!log)\n throw new Error('`CloseRequested` event not found.');\n return log;\n }\n requestClose.extractEvent = extractEvent;\n})(requestClose || (requestClose = {}));\n/**\n * Starts the payer close timer and waits for the transaction receipt.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const result = await Actions.channel.requestCloseSync(client, {\n * channel,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function requestCloseSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await requestClose.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = requestClose.extractEvent(receipt.logs);\n return { ...args, receipt };\n}\n/**\n * Settles a TIP-20 channel reserve voucher.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const hash = await Actions.channel.settle(client, {\n * cumulativeAmount: 100n,\n * channel,\n * signature: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function settle(client, parameters) {\n return settle.inner(writeContract, client, parameters);\n}\n(function (settle) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { cumulativeAmount, channel, signature, ...rest } = parameters;\n return (await withExecutionError(action)(client, {\n ...rest,\n ...settle.call({ cumulativeAmount, channel, signature }),\n }));\n }\n settle.inner = inner;\n /**\n * Defines a call to the `settle` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { cumulativeAmount, channel, signature } = args;\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n functionName: 'settle',\n args: [ox_Channel.from(channel), cumulativeAmount, signature],\n });\n }\n Object.defineProperty(settle, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `Settled` event from logs.\n *\n * @param logs - The logs.\n * @returns The `Settled` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip20ChannelReserve,\n logs,\n eventName: 'Settled',\n strict: true,\n });\n if (!log)\n throw new Error('`Settled` event not found.');\n return log;\n }\n settle.extractEvent = extractEvent;\n})(settle || (settle = {}));\n/**\n * Settles a TIP-20 channel reserve voucher and waits for the transaction receipt.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const result = await Actions.channel.settleSync(client, {\n * cumulativeAmount: 100n,\n * channel,\n * signature: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function settleSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await settle.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = settle.extractEvent(receipt.logs);\n return { ...args, receipt };\n}\n/**\n * Signs a TIP-20 channel reserve voucher.\n *\n * @example\n * ```ts\n * import { parseUnits } from 'viem'\n * import { Actions } from 'viem/tempo'\n *\n * const signature = await Actions.channel.signVoucher(client, {\n * channel,\n * cumulativeAmount: parseUnits('40', 6),\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The voucher signature.\n */\nexport async function signVoucher(client, parameters) {\n const { account: account_ = client.account, chainId = client.chain?.id, channel, cumulativeAmount, } = parameters;\n if (!account_)\n throw new Error('account is required.');\n if (chainId === undefined)\n throw new Error('chainId is required.');\n const parsed = parseAccount(account_);\n if (!('sign' in parsed) || !parsed.sign)\n throw new Error('account.sign is required.');\n return signVoucher_(parsed, {\n chainId,\n channel,\n cumulativeAmount,\n });\n}\n/**\n * Adds deposit to a TIP-20 channel reserve channel.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const hash = await Actions.channel.topUp(client, {\n * additionalDeposit: 100n,\n * channel,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function topUp(client, parameters) {\n return topUp.inner(writeContract, client, parameters);\n}\n(function (topUp) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { additionalDeposit, channel, ...rest } = parameters;\n return (await withExecutionError(action)(client, {\n ...rest,\n ...topUp.call({ additionalDeposit, channel }),\n }));\n }\n topUp.inner = inner;\n /**\n * Defines a call to the `topUp` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { additionalDeposit, channel } = args;\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n functionName: 'topUp',\n args: [ox_Channel.from(channel), additionalDeposit],\n });\n }\n Object.defineProperty(topUp, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `TopUp` event from logs.\n *\n * @param logs - The logs.\n * @returns The `TopUp` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip20ChannelReserve,\n logs,\n eventName: 'TopUp',\n strict: true,\n });\n if (!log)\n throw new Error('`TopUp` event not found.');\n return log;\n }\n topUp.extractEvent = extractEvent;\n})(topUp || (topUp = {}));\n/**\n * Adds deposit to a TIP-20 channel reserve channel and waits for the\n * transaction receipt.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const result = await Actions.channel.topUpSync(client, {\n * additionalDeposit: 100n,\n * channel,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function topUpSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await topUp.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = topUp.extractEvent(receipt.logs);\n return { ...args, receipt };\n}\n/**\n * Withdraws payer funds after the close grace period elapses.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const hash = await Actions.channel.withdraw(client, {\n * channel,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function withdraw(client, parameters) {\n return withdraw.inner(writeContract, client, parameters);\n}\n(function (withdraw) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { channel, ...rest } = parameters;\n return (await withExecutionError(action)(client, {\n ...rest,\n ...withdraw.call({ channel }),\n }));\n }\n withdraw.inner = inner;\n /**\n * Defines a call to the `withdraw` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { channel } = args;\n return defineCall({\n address: ox_Channel.address,\n abi: Abis.tip20ChannelReserve,\n functionName: 'withdraw',\n args: [ox_Channel.from(channel)],\n });\n }\n Object.defineProperty(withdraw, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `ChannelClosed` event from logs.\n *\n * @param logs - The logs.\n * @returns The `ChannelClosed` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip20ChannelReserve,\n logs,\n eventName: 'ChannelClosed',\n strict: true,\n });\n if (!log)\n throw new Error('`ChannelClosed` event not found.');\n return log;\n }\n withdraw.extractEvent = extractEvent;\n})(withdraw || (withdraw = {}));\n/**\n * Withdraws payer funds after the close grace period elapses and waits for the\n * transaction receipt.\n *\n * @example\n * ```ts\n * import { Actions } from 'viem/tempo'\n *\n * const result = await Actions.channel.withdrawSync(client, {\n * channel,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function withdrawSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await withdraw.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = withdraw.extractEvent(receipt.logs);\n return { ...args, receipt };\n}\n/** Thrown when a payment channel does not exist. */\nexport class ChannelNotFoundError extends TempoExecutionError {\n constructor(parameters) {\n const { descriptor } = parameters;\n super(parameters, {\n details: {\n payer: descriptor?.payer,\n payee: descriptor?.payee,\n token: descriptor?.token,\n },\n name: 'ChannelNotFoundError',\n });\n /** Channel descriptor, when known. */\n Object.defineProperty(this, \"descriptor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.descriptor = descriptor;\n }\n}\n/** Thrown when withdrawing from a channel before its close grace period ends. */\nexport class ChannelCloseNotReadyError extends TempoExecutionError {\n constructor(parameters) {\n const { closeRequestedAt, readyAt } = parameters;\n super(parameters, {\n details: {\n 'close requested at': formatTime(closeRequestedAt),\n 'ready at': formatTime(readyAt),\n },\n name: 'ChannelCloseNotReadyError',\n shortMessage: closeRequestedAt === 0\n ? 'Channel close has not been requested.'\n : readyAt\n ? `Channel is not ready to close until ${formatTime(readyAt)}.`\n : undefined,\n });\n /** When the close was requested (Unix seconds), or `0` when it was not. */\n Object.defineProperty(this, \"closeRequestedAt\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** When the channel can be withdrawn from (Unix seconds), when known. */\n Object.defineProperty(this, \"readyAt\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.closeRequestedAt = closeRequestedAt;\n this.readyAt = readyAt;\n }\n}\n/** Thrown when a voucher amount exceeds the channel deposit. */\nexport class ChannelAmountExceedsDepositError extends TempoExecutionError {\n constructor(parameters) {\n const { amount, deposit } = parameters;\n super(parameters, {\n details: { amount, deposit },\n name: 'ChannelAmountExceedsDepositError',\n });\n /** Cumulative voucher amount. */\n Object.defineProperty(this, \"amount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Channel deposit, when known. */\n Object.defineProperty(this, \"deposit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amount = amount;\n this.deposit = deposit;\n }\n}\n/** Thrown when a voucher amount is not above the amount already settled. */\nexport class ChannelAmountNotIncreasingError extends TempoExecutionError {\n constructor(parameters) {\n const { amount, settled } = parameters;\n super(parameters, {\n details: { amount, settled },\n name: 'ChannelAmountNotIncreasingError',\n });\n /** Cumulative voucher amount. */\n Object.defineProperty(this, \"amount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Amount already settled, when known. */\n Object.defineProperty(this, \"settled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amount = amount;\n this.settled = settled;\n }\n}\nconst reserve = {\n address: Addresses.tip20ChannelReserve,\n abi: Abis.tip20ChannelReserve,\n};\n/** Reads the channel state of the failed call, when it targets the channel reserve. */\nasync function readChannel(context) {\n const { call } = context;\n if (!call || !isAddressEqual(call.address, Addresses.tip20ChannelReserve))\n return undefined;\n const descriptor = call.arg('descriptor');\n if (!descriptor)\n return { call, descriptor };\n const [channel, gracePeriod] = await context.read([\n {\n ...reserve,\n functionName: 'getChannel',\n args: [descriptor],\n },\n { ...reserve, functionName: 'CLOSE_GRACE_PERIOD' },\n ]);\n return {\n call,\n descriptor,\n gracePeriod: gracePeriod?.result,\n state: channel?.result?.state,\n };\n}\n/** @internal */\nexport const errorResolvers = {\n 'AmountExceedsDeposit()': async (context) => {\n const channel = await readChannel(context);\n if (!channel)\n return undefined;\n return new ChannelAmountExceedsDepositError({\n ...context.base,\n amount: channel.call.arg('cumulativeAmount'),\n deposit: channel.state?.deposit,\n });\n },\n 'AmountNotIncreasing()': async (context) => {\n const channel = await readChannel(context);\n if (!channel)\n return undefined;\n return new ChannelAmountNotIncreasingError({\n ...context.base,\n amount: channel.call.arg('cumulativeAmount'),\n settled: channel.state?.settled,\n });\n },\n 'ChannelNotFound()': (context) => {\n const { call } = context;\n if (!call || !isAddressEqual(call.address, Addresses.tip20ChannelReserve))\n return undefined;\n return new ChannelNotFoundError({\n ...context.base,\n descriptor: call.arg('descriptor'),\n });\n },\n 'CloseNotReady()': async (context) => {\n const channel = await readChannel(context);\n if (!channel)\n return undefined;\n const closeRequestedAt = channel.state?.closeRequestedAt;\n return new ChannelCloseNotReadyError({\n ...context.base,\n closeRequestedAt,\n readyAt: closeRequestedAt && channel.gracePeriod !== undefined\n ? BigInt(closeRequestedAt) + channel.gracePeriod\n : undefined,\n });\n },\n};\n//# sourceMappingURL=channel.js.map","import * as Hash from 'ox/Hash';\nimport * as Hex from 'ox/Hex';\nimport { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { readContract, } from '../../actions/public/readContract.js';\nimport { watchContractEvent, } from '../../actions/public/watchContractEvent.js';\nimport { writeContract, } from '../../actions/wallet/writeContract.js';\nimport { writeContractSync } from '../../actions/wallet/writeContractSync.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js';\nimport * as Abis from '../Abis.js';\nimport * as Addresses from '../Addresses.js';\nimport { TempoExecutionError } from '../errors.js';\nimport { withExecutionError, } from '../internal/errors.js';\nimport { defineCall } from '../internal/utils.js';\n/**\n * Buys a specific amount of tokens.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.buy(client, {\n * tokenIn: '0x20c...11',\n * tokenOut: '0x20c...20',\n * amountOut: parseUnits('100', 6),\n * maxAmountIn: parseUnits('105', 6),\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function buy(client, parameters) {\n return buy.inner(writeContract, client, parameters);\n}\n(function (buy) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { tokenIn, tokenOut, amountOut, maxAmountIn, ...rest } = parameters;\n const call = buy.call({ tokenIn, tokenOut, amountOut, maxAmountIn });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n buy.inner = inner;\n /**\n * Defines a call to the `swapExactAmountOut` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.buy.call({\n * tokenIn: '0x20c0...beef',\n * tokenOut: '0x20c0...babe',\n * amountOut: parseUnits('100', 6),\n * maxAmountIn: parseUnits('105', 6),\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { tokenIn, tokenOut, amountOut, maxAmountIn } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'swapExactAmountOut',\n args: [tokenIn, tokenOut, amountOut, maxAmountIn],\n });\n }\n Object.defineProperty(buy, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(buy || (buy = {}));\n/**\n * Buys a specific amount of tokens.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.buySync(client, {\n * tokenIn: '0x20c...11',\n * tokenOut: '0x20c...20',\n * amountOut: parseUnits('100', 6),\n * maxAmountIn: parseUnits('105', 6),\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt.\n */\nexport async function buySync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await buy.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n return { receipt };\n}\n/**\n * Cancels an order from the orderbook.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.cancel(client, {\n * orderId: 123n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function cancel(client, parameters) {\n return cancel.inner(writeContract, client, parameters);\n}\n(function (cancel) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { orderId, ...rest } = parameters;\n const call = cancel.call({ orderId });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n cancel.inner = inner;\n /**\n * Defines a call to the `cancel` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.cancel.call({\n * orderId: 123n,\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { orderId } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'cancel',\n args: [orderId],\n });\n }\n Object.defineProperty(cancel, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `OrderCancelled` event from logs.\n *\n * @param logs - The logs.\n * @returns The `OrderCancelled` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.stablecoinDex,\n logs,\n eventName: 'OrderCancelled',\n strict: true,\n });\n if (!log)\n throw new Error('`OrderCancelled` event not found.');\n return log;\n }\n cancel.extractEvent = extractEvent;\n})(cancel || (cancel = {}));\n/**\n * Cancels an order from the orderbook.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.cancelSync(client, {\n * orderId: 123n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function cancelSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await cancel.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = cancel.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Cancels a stale order from the orderbook.\n *\n * A stale order is one where the owner's balance or allowance has dropped\n * below the order amount.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.cancelStale(client, {\n * orderId: 123n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function cancelStale(client, parameters) {\n return cancelStale.inner(writeContract, client, parameters);\n}\n(function (cancelStale) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { orderId, ...rest } = parameters;\n const call = cancelStale.call({ orderId });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n cancelStale.inner = inner;\n /**\n * Defines a call to the `cancelStaleOrder` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.cancelStale.call({\n * orderId: 123n,\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { orderId } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'cancelStaleOrder',\n args: [orderId],\n });\n }\n Object.defineProperty(cancelStale, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `OrderCancelled` event from logs.\n *\n * @param logs - The logs.\n * @returns The `OrderCancelled` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.stablecoinDex,\n logs,\n eventName: 'OrderCancelled',\n strict: true,\n });\n if (!log)\n throw new Error('`OrderCancelled` event not found.');\n return log;\n }\n cancelStale.extractEvent = extractEvent;\n})(cancelStale || (cancelStale = {}));\n/**\n * Cancels a stale order from the orderbook and waits for confirmation.\n *\n * A stale order is one where the owner's balance or allowance has dropped\n * below the order amount.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.cancelStaleSync(client, {\n * orderId: 123n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function cancelStaleSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await cancelStale.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = cancelStale.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Creates a new trading pair on the DEX.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.createPair(client, {\n * base: '0x20c...11',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function createPair(client, parameters) {\n return createPair.inner(writeContract, client, parameters);\n}\n(function (createPair) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { base, ...rest } = parameters;\n const call = createPair.call({ base });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n createPair.inner = inner;\n /**\n * Defines a call to the `createPair` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.createPair.call({\n * base: '0x20c0...beef',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { base } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'createPair',\n args: [base],\n });\n }\n Object.defineProperty(createPair, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `PairCreated` event from logs.\n *\n * @param logs - The logs.\n * @returns The `PairCreated` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.stablecoinDex,\n logs,\n eventName: 'PairCreated',\n strict: true,\n });\n if (!log)\n throw new Error('`PairCreated` event not found.');\n return log;\n }\n createPair.extractEvent = extractEvent;\n})(createPair || (createPair = {}));\n/**\n * Creates a new trading pair on the DEX.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.createPairSync(client, {\n * base: '0x20c...11',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function createPairSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await createPair.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = createPair.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Gets a user's token balance on the DEX.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const balance = await Actions.dex.getBalance(client, {\n * account: '0x...',\n * token: '0x20c...11',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The user's token balance on the DEX.\n */\nexport async function getBalance(client, parameters) {\n const { account: acc = client.account, token, ...rest } = parameters;\n const address = acc ? parseAccount(acc).address : undefined;\n if (!address)\n throw new Error('account is required.');\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getBalance.call({ account: address, token }),\n });\n}\n(function (getBalance) {\n /**\n * Defines a call to the `balanceOf` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { account, token } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n args: [account, token],\n functionName: 'balanceOf',\n });\n }\n Object.defineProperty(getBalance, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getBalance || (getBalance = {}));\n/**\n * Gets the quote for buying a specific amount of tokens.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const amountIn = await Actions.dex.getBuyQuote(client, {\n * amountOut: parseUnits('100', 6),\n * tokenIn: '0x20c...11',\n * tokenOut: '0x20c...20',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The amount of tokenIn needed to buy the specified amountOut.\n */\nexport async function getBuyQuote(client, parameters) {\n const { tokenIn, tokenOut, amountOut, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getBuyQuote.call({ tokenIn, tokenOut, amountOut }),\n });\n}\n(function (getBuyQuote) {\n /**\n * Defines a call to the `quoteSwapExactAmountOut` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { tokenIn, tokenOut, amountOut } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n args: [tokenIn, tokenOut, amountOut],\n functionName: 'quoteSwapExactAmountOut',\n });\n }\n Object.defineProperty(getBuyQuote, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getBuyQuote || (getBuyQuote = {}));\n/**\n * Gets an order's details from the orderbook.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const order = await Actions.dex.getOrder(client, {\n * orderId: 123n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The order details.\n */\nexport async function getOrder(client, parameters) {\n const { orderId, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getOrder.call({ orderId }),\n });\n}\n(function (getOrder) {\n /**\n * Defines a call to the `getOrder` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { orderId } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n args: [orderId],\n functionName: 'getOrder',\n });\n }\n Object.defineProperty(getOrder, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getOrder || (getOrder = {}));\n/**\n * Gets orderbook information for a trading pair.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const book = await Actions.dex.getOrderbook(client, {\n * base: '0x20c...11',\n * quote: '0x20c...20',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The orderbook information.\n */\nexport async function getOrderbook(client, parameters) {\n const { base, quote, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getOrderbook.call({ base, quote }),\n });\n}\n(function (getOrderbook) {\n /**\n * Defines a call to the `books` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { base, quote } = args;\n const pairKey = getPairKey(base, quote);\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n args: [pairKey],\n functionName: 'books',\n });\n }\n Object.defineProperty(getOrderbook, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getOrderbook || (getOrderbook = {}));\n/**\n * Gets the price level information at a specific tick.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const level = await Actions.dex.getTickLevel(client, {\n * base: '0x20c...11',\n * tick: Tick.fromPrice('1.001'),\n * isBid: true,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The price level information.\n */\nexport async function getTickLevel(client, parameters) {\n const { base, tick, isBid, ...rest } = parameters;\n const [head, tail, totalLiquidity] = await withExecutionError(readContract)(client, {\n ...rest,\n ...getTickLevel.call({ base, tick, isBid }),\n });\n return { head, tail, totalLiquidity };\n}\n(function (getTickLevel) {\n /**\n * Defines a call to the `getTickLevel` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { base, tick, isBid } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n args: [base, tick, isBid],\n functionName: 'getTickLevel',\n });\n }\n Object.defineProperty(getTickLevel, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getTickLevel || (getTickLevel = {}));\n/**\n * Gets the quote for selling a specific amount of tokens.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const amountOut = await Actions.dex.getSellQuote(client, {\n * amountIn: parseUnits('100', 6),\n * tokenIn: '0x20c...11',\n * tokenOut: '0x20c...20',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The amount of tokenOut received for selling the specified amountIn.\n */\nexport async function getSellQuote(client, parameters) {\n const { tokenIn, tokenOut, amountIn, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getSellQuote.call({ tokenIn, tokenOut, amountIn }),\n });\n}\n(function (getSellQuote) {\n /**\n * Defines a call to the `quoteSwapExactAmountIn` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { tokenIn, tokenOut, amountIn } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n args: [tokenIn, tokenOut, amountIn],\n functionName: 'quoteSwapExactAmountIn',\n });\n }\n Object.defineProperty(getSellQuote, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getSellQuote || (getSellQuote = {}));\n/**\n * Places a limit order on the orderbook.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.place(client, {\n * amount: parseUnits('100', 6),\n * tick: Tick.fromPrice('0.99'),\n * token: '0x20c...11',\n * type: 'buy',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function place(client, parameters) {\n return place.inner(writeContract, client, parameters);\n}\n(function (place) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { amount, token, type, tick, ...rest } = parameters;\n const call = place.call({ amount, token, type, tick });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n place.inner = inner;\n /**\n * Defines a call to the `place` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.place.call({\n * amount: parseUnits('100', 6),\n * tick: Tick.fromPrice('0.99'),\n * token: '0x20c0...beef',\n * type: 'buy',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { token, amount, type, tick } = args;\n const isBid = type === 'buy';\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'place',\n args: [token, amount, isBid, tick],\n });\n }\n Object.defineProperty(place, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `OrderPlaced` event from logs.\n *\n * @param logs - The logs.\n * @returns The `OrderPlaced` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.stablecoinDex,\n logs,\n eventName: 'OrderPlaced',\n strict: true,\n });\n if (!log)\n throw new Error('`OrderPlaced` event not found.');\n return log;\n }\n place.extractEvent = extractEvent;\n})(place || (place = {}));\n/**\n * Places a flip order that automatically flips when filled.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.placeFlip(client, {\n * amount: parseUnits('100', 6),\n * flipTick: Tick.fromPrice('1.01'),\n * tick: Tick.fromPrice('0.99'),\n * token: '0x20c...11',\n * type: 'buy',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function placeFlip(client, parameters) {\n return placeFlip.inner(writeContract, client, parameters);\n}\n(function (placeFlip) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { amount, flipTick, tick, token, type, ...rest } = parameters;\n const call = placeFlip.call({ amount, flipTick, tick, token, type });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n placeFlip.inner = inner;\n /**\n * Defines a call to the `placeFlip` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.placeFlip.call({\n * amount: parseUnits('100', 6),\n * flipTick: Tick.fromPrice('1.01'),\n * tick: Tick.fromPrice('0.99'),\n * token: '0x20c0...beef',\n * type: 'buy',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { token, amount, type, tick, flipTick } = args;\n const isBid = type === 'buy';\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'placeFlip',\n args: [token, amount, isBid, tick, flipTick],\n });\n }\n Object.defineProperty(placeFlip, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `OrderPlaced` event (with `isFlipOrder: true`) from logs.\n *\n * @param logs - The logs.\n * @returns The `OrderPlaced` event for a flip order.\n */\n function extractEvent(logs) {\n const parsedLogs = parseEventLogs({\n abi: Abis.stablecoinDex,\n logs,\n eventName: 'OrderPlaced',\n strict: true,\n });\n const log = parsedLogs.find((l) => l.args.isFlipOrder);\n if (!log)\n throw new Error('`OrderPlaced` event (flip order) not found.');\n return log;\n }\n placeFlip.extractEvent = extractEvent;\n})(placeFlip || (placeFlip = {}));\n/**\n * Places a flip order that automatically flips when filled.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.placeFlipSync(client, {\n * amount: parseUnits('100', 6),\n * flipTick: Tick.fromPrice('1.01'),\n * tick: Tick.fromPrice('0.99'),\n * token: '0x20c...11',\n * type: 'buy',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function placeFlipSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await placeFlip.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = placeFlip.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Places a limit order on the orderbook.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions, Tick } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.placeSync(client, {\n * amount: parseUnits('100', 6),\n * tick: Tick.fromPrice('0.99'),\n * token: '0x20c...11',\n * type: 'buy',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function placeSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await place.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = place.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Sells a specific amount of tokens.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.sell(client, {\n * amountIn: parseUnits('100', 6),\n * minAmountOut: parseUnits('95', 6),\n * tokenIn: '0x20c...11',\n * tokenOut: '0x20c...20',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function sell(client, parameters) {\n return sell.inner(writeContract, client, parameters);\n}\n(function (sell) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { tokenIn, tokenOut, amountIn, minAmountOut, ...rest } = parameters;\n const call = sell.call({ tokenIn, tokenOut, amountIn, minAmountOut });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n sell.inner = inner;\n /**\n * Defines a call to the `swapExactAmountIn` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.sell.call({\n * amountIn: parseUnits('100', 6),\n * minAmountOut: parseUnits('95', 6),\n * tokenIn: '0x20c0...beef',\n * tokenOut: '0x20c0...babe',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { tokenIn, tokenOut, amountIn, minAmountOut } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'swapExactAmountIn',\n args: [tokenIn, tokenOut, amountIn, minAmountOut],\n });\n }\n Object.defineProperty(sell, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(sell || (sell = {}));\n/**\n * Sells a specific amount of tokens.\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.sellSync(client, {\n * amountIn: parseUnits('100', 6),\n * minAmountOut: parseUnits('95', 6),\n * tokenIn: '0x20c...11',\n * tokenOut: '0x20c...20',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt.\n */\nexport async function sellSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await sell.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n return { receipt };\n}\n/**\n * Watches for flip order placed events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = Actions.dex.watchFlipOrderPlaced(client, {\n * onFlipOrderPlaced: (args, log) => {\n * console.log('Flip order placed:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchFlipOrderPlaced(client, parameters) {\n const { onFlipOrderPlaced, maker, token, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n eventName: 'OrderPlaced',\n args: {\n ...(maker !== undefined && { maker }),\n ...(token !== undefined && { token }),\n },\n onLogs: (logs) => {\n for (const log of logs) {\n if (log.args.isFlipOrder)\n onFlipOrderPlaced(log.args, log);\n }\n },\n strict: true,\n });\n}\n/**\n * Watches for order cancelled events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = Actions.dex.watchOrderCancelled(client, {\n * onOrderCancelled: (args, log) => {\n * console.log('Order cancelled:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchOrderCancelled(client, parameters) {\n const { onOrderCancelled, orderId, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n eventName: 'OrderCancelled',\n args: orderId !== undefined ? { orderId } : undefined,\n onLogs: (logs) => {\n for (const log of logs)\n onOrderCancelled(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for order filled events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = Actions.dex.watchOrderFilled(client, {\n * onOrderFilled: (args, log) => {\n * console.log('Order filled:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchOrderFilled(client, parameters) {\n const { onOrderFilled, maker, taker, orderId, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n eventName: 'OrderFilled',\n args: {\n ...(orderId !== undefined && { orderId }),\n ...(maker !== undefined && { maker }),\n ...(taker !== undefined && { taker }),\n },\n onLogs: (logs) => {\n for (const log of logs)\n onOrderFilled(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for order placed events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = Actions.dex.watchOrderPlaced(client, {\n * onOrderPlaced: (args, log) => {\n * console.log('Order placed:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchOrderPlaced(client, parameters) {\n const { onOrderPlaced, maker, token, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n eventName: 'OrderPlaced',\n args: {\n ...(maker !== undefined && { maker }),\n ...(token !== undefined && { token }),\n },\n onLogs: (logs) => {\n for (const log of logs)\n onOrderPlaced(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Withdraws tokens from the DEX to the caller's wallet.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.dex.withdraw(client, {\n * amount: 100n,\n * token: '0x20c...11',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function withdraw(client, parameters) {\n return withdraw.inner(writeContract, client, parameters);\n}\n(function (withdraw) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { token, amount, ...rest } = parameters;\n const call = withdraw.call({ token, amount });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n withdraw.inner = inner;\n /**\n * Defines a call to the `withdraw` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, parseUnits, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * Actions.dex.withdraw.call({\n * amount: parseUnits('100', 6),\n * token: '0x20c0...beef',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { token, amount } = args;\n return defineCall({\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n functionName: 'withdraw',\n args: [token, amount],\n });\n }\n Object.defineProperty(withdraw, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(withdraw || (withdraw = {}));\n/**\n * Withdraws tokens from the DEX to the caller's wallet.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.dex.withdrawSync(client, {\n * amount: 100n,\n * token: '0x20c...11',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt.\n */\nexport async function withdrawSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await withdraw.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n return { receipt };\n}\nfunction getPairKey(base, quote) {\n return Hash.keccak256(Hex.concat(base, quote));\n}\n/** Thrown when a sell would return less than `minAmountOut`. */\nexport class DexInsufficientOutputError extends TempoExecutionError {\n constructor(parameters) {\n const { amountIn, minAmountOut, quote, tokenIn, tokenOut } = parameters;\n super(parameters, {\n details: {\n 'token in': tokenIn,\n 'token out': tokenOut,\n 'amount in': amountIn,\n 'min amount out': minAmountOut,\n quote,\n },\n name: 'DexInsufficientOutputError',\n });\n /** Amount of `tokenIn` to sell. */\n Object.defineProperty(this, \"amountIn\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Minimum amount of `tokenOut` to receive. */\n Object.defineProperty(this, \"minAmountOut\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Current quote for `amountIn`, when available. */\n Object.defineProperty(this, \"quote\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token to sell. */\n Object.defineProperty(this, \"tokenIn\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token to buy. */\n Object.defineProperty(this, \"tokenOut\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amountIn = amountIn;\n this.minAmountOut = minAmountOut;\n this.quote = quote;\n this.tokenIn = tokenIn;\n this.tokenOut = tokenOut;\n }\n}\n/** Thrown when a buy would cost more than `maxAmountIn`. */\nexport class DexMaxInputExceededError extends TempoExecutionError {\n constructor(parameters) {\n const { amountOut, maxAmountIn, quote, tokenIn, tokenOut } = parameters;\n super(parameters, {\n details: {\n 'token in': tokenIn,\n 'token out': tokenOut,\n 'amount out': amountOut,\n 'max amount in': maxAmountIn,\n quote,\n },\n name: 'DexMaxInputExceededError',\n });\n /** Amount of `tokenOut` to buy. */\n Object.defineProperty(this, \"amountOut\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Maximum amount of `tokenIn` to spend. */\n Object.defineProperty(this, \"maxAmountIn\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Current cost of `amountOut`, when available. */\n Object.defineProperty(this, \"quote\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token to spend. */\n Object.defineProperty(this, \"tokenIn\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token to buy. */\n Object.defineProperty(this, \"tokenOut\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amountOut = amountOut;\n this.maxAmountIn = maxAmountIn;\n this.quote = quote;\n this.tokenIn = tokenIn;\n this.tokenOut = tokenOut;\n }\n}\n/** Thrown when the order book cannot fill a swap. */\nexport class DexInsufficientLiquidityError extends TempoExecutionError {\n constructor(parameters) {\n const { amountIn, amountOut, tokenIn, tokenOut } = parameters;\n super(parameters, {\n details: {\n 'token in': tokenIn,\n 'token out': tokenOut,\n 'amount in': amountIn,\n 'amount out': amountOut,\n },\n name: 'DexInsufficientLiquidityError',\n });\n /** Amount of `tokenIn` to sell, for sells. */\n Object.defineProperty(this, \"amountIn\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Amount of `tokenOut` to buy, for buys. */\n Object.defineProperty(this, \"amountOut\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token to spend. */\n Object.defineProperty(this, \"tokenIn\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token to buy. */\n Object.defineProperty(this, \"tokenOut\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amountIn = amountIn;\n this.amountOut = amountOut;\n this.tokenIn = tokenIn;\n this.tokenOut = tokenOut;\n }\n}\n/** Thrown when an order is smaller than the minimum order size. */\nexport class DexBelowMinimumOrderSizeError extends TempoExecutionError {\n constructor(parameters) {\n const [amount] = parameters.error.args;\n const { minimum } = parameters;\n super(parameters, {\n details: { amount, minimum },\n name: 'DexBelowMinimumOrderSizeError',\n shortMessage: `Order amount ${amount} is below the minimum${minimum === undefined ? '' : ` of ${minimum}`}.`,\n });\n /** Order amount. */\n Object.defineProperty(this, \"amount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Minimum order amount, when known. */\n Object.defineProperty(this, \"minimum\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amount = amount;\n this.minimum = minimum;\n }\n}\n/** Thrown when an order's tick or flip tick is outside the allowed range. */\nexport class DexTickOutOfBoundsError extends TempoExecutionError {\n constructor(parameters) {\n const [tick] = parameters.error.args;\n const { maxTick, minTick } = parameters;\n super(parameters, {\n details: {\n tick,\n range: minTick === undefined || maxTick === undefined\n ? undefined\n : `${minTick} to ${maxTick}`,\n },\n name: 'DexTickOutOfBoundsError',\n });\n /** Highest allowed tick, when known. */\n Object.defineProperty(this, \"maxTick\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Lowest allowed tick, when known. */\n Object.defineProperty(this, \"minTick\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Tick that is out of range. */\n Object.defineProperty(this, \"tick\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxTick = maxTick;\n this.minTick = minTick;\n this.tick = tick;\n }\n}\n/** Thrown when a flip order's flip tick is on the wrong side of its tick or off the tick spacing. */\nexport class DexInvalidFlipTickError extends TempoExecutionError {\n constructor(parameters) {\n const { flipTick, side, tick, tickSpacing } = parameters;\n super(parameters, {\n details: {\n side,\n tick,\n 'flip tick': flipTick,\n 'tick spacing': tickSpacing,\n },\n name: 'DexInvalidFlipTickError',\n shortMessage: side === 'buy'\n ? 'The flip tick of a buy order must be at or above its tick, and a multiple of the tick spacing.'\n : side === 'sell'\n ? 'The flip tick of a sell order must be at or below its tick, and a multiple of the tick spacing.'\n : undefined,\n });\n /** Flip tick. */\n Object.defineProperty(this, \"flipTick\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Order side. */\n Object.defineProperty(this, \"side\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Order tick. */\n Object.defineProperty(this, \"tick\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Tick spacing, when known. */\n Object.defineProperty(this, \"tickSpacing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.flipTick = flipTick;\n this.side = side;\n this.tick = tick;\n this.tickSpacing = tickSpacing;\n }\n}\n/** Thrown when an order does not exist or is already filled. */\nexport class DexOrderNotFoundError extends TempoExecutionError {\n constructor(parameters) {\n super(parameters, {\n details: { order: parameters.orderId },\n name: 'DexOrderNotFoundError',\n shortMessage: `Order ${parameters.orderId} does not exist or is already filled.`,\n });\n /** Order ID. */\n Object.defineProperty(this, \"orderId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.orderId = parameters.orderId;\n }\n}\n/** Thrown when cancelling a stale order whose maker is still authorized by the token's policy. */\nexport class DexOrderNotStaleError extends TempoExecutionError {\n constructor(parameters) {\n super(parameters, {\n details: { order: parameters.orderId },\n name: 'DexOrderNotStaleError',\n shortMessage: `Order ${parameters.orderId} is not stale: its maker is still authorized.`,\n });\n /** Order ID. */\n Object.defineProperty(this, \"orderId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.orderId = parameters.orderId;\n }\n}\n/** Thrown when no trading pair exists for a token. */\nexport class DexPairNotFoundError extends TempoExecutionError {\n constructor(parameters) {\n super(parameters, {\n details: { tokens: parameters.tokens.join(', ') || undefined },\n name: 'DexPairNotFoundError',\n });\n /** Tokens of the call. */\n Object.defineProperty(this, \"tokens\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.tokens = parameters.tokens;\n }\n}\n/** Thrown when withdrawing more than the account's exchange balance. */\nexport class DexInsufficientBalanceError extends TempoExecutionError {\n constructor(parameters) {\n const { amount, balance, token } = parameters;\n super(parameters, {\n details: { token, amount, balance },\n name: 'DexInsufficientBalanceError',\n shortMessage: `Insufficient exchange balance of token \"${token}\".`,\n });\n /** Amount to withdraw. */\n Object.defineProperty(this, \"amount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Exchange balance, when known. */\n Object.defineProperty(this, \"balance\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token address. */\n Object.defineProperty(this, \"token\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.amount = amount;\n this.balance = balance;\n this.token = token;\n }\n}\nconst exchange = {\n address: Addresses.stablecoinDex,\n abi: Abis.stablecoinDex,\n};\n/** The failed call, when it targets the exchange. */\nfunction getExchangeCall(context) {\n const { call } = context;\n return call && isAddressEqual(call.address, Addresses.stablecoinDex)\n ? call\n : undefined;\n}\n/** @internal */\nexport const errorResolvers = {\n 'BelowMinimumOrderSize(uint128)': async (context) => {\n if (!getExchangeCall(context) || !context.base.error.args)\n return undefined;\n const [minimum] = await context.read([\n { ...exchange, functionName: 'MIN_ORDER_AMOUNT' },\n ]);\n return new DexBelowMinimumOrderSizeError({\n ...context.base,\n minimum: minimum?.result,\n });\n },\n 'InsufficientBalance()': async (context) => {\n const call = getExchangeCall(context);\n const token = call?.arg('token');\n if (call?.functionName !== 'withdraw' || !token || !context.signer)\n return undefined;\n const [balance] = await context.read([\n {\n ...exchange,\n functionName: 'balanceOf',\n args: [context.signer.address, token],\n },\n ]);\n return new DexInsufficientBalanceError({\n ...context.base,\n amount: call.arg('amount'),\n balance: balance?.result,\n token,\n });\n },\n 'InsufficientLiquidity()': (context) => {\n const call = getExchangeCall(context);\n if (!call)\n return undefined;\n return new DexInsufficientLiquidityError({\n ...context.base,\n amountIn: call.arg('amountIn'),\n amountOut: call.arg('amountOut'),\n tokenIn: call.arg('tokenIn'),\n tokenOut: call.arg('tokenOut'),\n });\n },\n 'InsufficientOutput()': async (context) => {\n const call = getExchangeCall(context);\n if (!call)\n return undefined;\n const tokenIn = call.arg('tokenIn');\n const tokenOut = call.arg('tokenOut');\n const amountIn = call.arg('amountIn');\n const [quote] = await context.read([\n {\n ...exchange,\n functionName: 'quoteSwapExactAmountIn',\n args: [tokenIn, tokenOut, amountIn],\n },\n ]);\n return new DexInsufficientOutputError({\n ...context.base,\n amountIn,\n minAmountOut: call.arg('minAmountOut'),\n quote: quote?.result,\n tokenIn,\n tokenOut,\n });\n },\n 'InvalidFlipTick()': async (context) => {\n const call = getExchangeCall(context);\n if (!call)\n return undefined;\n const [tickSpacing] = await context.read([\n { ...exchange, functionName: 'TICK_SPACING' },\n ]);\n const isBid = call.arg('isBid');\n return new DexInvalidFlipTickError({\n ...context.base,\n flipTick: call.arg('flipTick'),\n side: isBid === undefined ? undefined : isBid ? 'buy' : 'sell',\n tick: call.arg('tick'),\n tickSpacing: tickSpacing?.result,\n });\n },\n 'MaxInputExceeded()': async (context) => {\n const call = getExchangeCall(context);\n if (!call)\n return undefined;\n const tokenIn = call.arg('tokenIn');\n const tokenOut = call.arg('tokenOut');\n const amountOut = call.arg('amountOut');\n const [quote] = await context.read([\n {\n ...exchange,\n functionName: 'quoteSwapExactAmountOut',\n args: [tokenIn, tokenOut, amountOut],\n },\n ]);\n return new DexMaxInputExceededError({\n ...context.base,\n amountOut,\n maxAmountIn: call.arg('maxAmountIn'),\n quote: quote?.result,\n tokenIn,\n tokenOut,\n });\n },\n 'OrderDoesNotExist()': (context) => {\n const orderId = getExchangeCall(context)?.arg('orderId');\n if (orderId === undefined)\n return undefined;\n return new DexOrderNotFoundError({ ...context.base, orderId });\n },\n 'OrderNotStale()': (context) => {\n const orderId = getExchangeCall(context)?.arg('orderId');\n if (orderId === undefined)\n return undefined;\n return new DexOrderNotStaleError({ ...context.base, orderId });\n },\n 'PairDoesNotExist()': (context) => {\n const call = getExchangeCall(context);\n if (!call)\n return undefined;\n const tokens = ['token', 'tokenIn', 'tokenOut', 'base'].flatMap((name) => {\n const token = call.arg(name);\n return token ? [token] : [];\n });\n return new DexPairNotFoundError({ ...context.base, tokens });\n },\n 'TickOutOfBounds(int16)': async (context) => {\n if (!getExchangeCall(context) || !context.base.error.args)\n return undefined;\n const [minTick, maxTick] = await context.read([\n { ...exchange, functionName: 'MIN_TICK' },\n { ...exchange, functionName: 'MAX_TICK' },\n ]);\n return new DexTickOutOfBoundsError({\n ...context.base,\n maxTick: maxTick?.result,\n minTick: minTick?.result,\n });\n },\n};\n//# sourceMappingURL=dex.js.map","import { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { readContract } from '../../actions/public/readContract.js';\nimport { watchContractEvent } from '../../actions/public/watchContractEvent.js';\nimport { writeContract } from '../../actions/wallet/writeContract.js';\nimport { writeContractSync } from '../../actions/wallet/writeContractSync.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport * as Abis from '../Abis.js';\nimport * as Addresses from '../Addresses.js';\nimport { TempoExecutionError } from '../errors.js';\nimport { withExecutionError } from '../internal/errors.js';\nimport { defineCall } from '../internal/utils.js';\nconst policyTypeMap = {\n whitelist: 0,\n blacklist: 1,\n};\n/**\n * Creates a new policy.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const { hash, policyId } = await Actions.policy.create(client, {\n * admin: '0x...',\n * type: 'whitelist',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash and policy ID.\n */\nexport async function create(client, parameters) {\n return create.inner(writeContract, client, parameters);\n}\n(function (create) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { account = client.account, addresses, chain = client.chain, type, ...rest } = parameters;\n if (!account)\n throw new Error('`account` is required');\n const admin = parseAccount(account).address;\n const call = create.call({ admin, type, addresses });\n return withExecutionError(action)(client, {\n ...rest,\n account,\n chain,\n ...call,\n });\n }\n create.inner = inner;\n /**\n * Defines a call to the `createPolicy` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.policy.create.call({\n * admin: '0xfeed...fede',\n * type: 'whitelist',\n * }),\n * actions.policy.create.call({\n * admin: '0xfeed...fede',\n * type: 'blacklist',\n * addresses: ['0x20c0...beef', '0x20c0...babe'],\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { admin, type, addresses } = args;\n const config = (() => {\n if (addresses)\n return {\n functionName: 'createPolicyWithAccounts',\n args: [admin, policyTypeMap[type], addresses],\n };\n return {\n functionName: 'createPolicy',\n args: [admin, policyTypeMap[type]],\n };\n })();\n return defineCall({\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n ...config,\n });\n }\n Object.defineProperty(create, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `PolicyCreated` event from logs.\n *\n * @param logs - The logs.\n * @returns The `PolicyCreated` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip403Registry,\n logs,\n eventName: 'PolicyCreated',\n strict: true,\n });\n if (!log)\n throw new Error('`PolicyCreated` event not found.');\n return log;\n }\n create.extractEvent = extractEvent;\n})(create || (create = {}));\n/**\n * Creates a new policy.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.policy.createSync(client, {\n * admin: '0x...',\n * type: 'whitelist',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function createSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await create.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = create.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Sets the admin for a policy.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.policy.setAdmin(client, {\n * policyId: 2n,\n * admin: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function setAdmin(client, parameters) {\n return setAdmin.inner(writeContract, client, parameters);\n}\n(function (setAdmin) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { policyId, admin, ...rest } = parameters;\n const call = setAdmin.call({ policyId, admin });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n setAdmin.inner = inner;\n /**\n * Defines a call to the `setPolicyAdmin` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.policy.setAdmin.call({\n * policyId: 2n,\n * admin: '0xfeed...fede',\n * }),\n * actions.policy.setAdmin.call({\n * policyId: 3n,\n * admin: '0xfeed...babe',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { policyId, admin } = args;\n return defineCall({\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n functionName: 'setPolicyAdmin',\n args: [policyId, admin],\n });\n }\n Object.defineProperty(setAdmin, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `PolicyAdminUpdated` event from logs.\n *\n * @param logs - The logs.\n * @returns The `PolicyAdminUpdated` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip403Registry,\n logs,\n eventName: 'PolicyAdminUpdated',\n strict: true,\n });\n if (!log)\n throw new Error('`PolicyAdminUpdated` event not found.');\n return log;\n }\n setAdmin.extractEvent = extractEvent;\n})(setAdmin || (setAdmin = {}));\n/**\n * Sets the admin for a policy.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.policy.setAdminSync(client, {\n * policyId: 2n,\n * admin: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function setAdminSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await setAdmin.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = setAdmin.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Modifies a policy whitelist.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.policy.modifyWhitelist(client, {\n * policyId: 2n,\n * account: '0x...',\n * allowed: true,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function modifyWhitelist(client, parameters) {\n return modifyWhitelist.inner(writeContract, client, parameters);\n}\n(function (modifyWhitelist) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { address: targetAccount, allowed, policyId, ...rest } = parameters;\n const call = modifyWhitelist.call({\n address: targetAccount,\n allowed,\n policyId,\n });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n modifyWhitelist.inner = inner;\n /**\n * Defines a call to the `modifyPolicyWhitelist` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.policy.modifyWhitelist.call({\n * policyId: 2n,\n * address: '0x20c0...beef',\n * allowed: true,\n * }),\n * actions.policy.modifyWhitelist.call({\n * policyId: 2n,\n * address: '0x20c0...babe',\n * allowed: false,\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { policyId, address, allowed } = args;\n return defineCall({\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n functionName: 'modifyPolicyWhitelist',\n args: [policyId, address, allowed],\n });\n }\n Object.defineProperty(modifyWhitelist, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `WhitelistUpdated` event from logs.\n *\n * @param logs - The logs.\n * @returns The `WhitelistUpdated` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip403Registry,\n logs,\n eventName: 'WhitelistUpdated',\n strict: true,\n });\n if (!log)\n throw new Error('`WhitelistUpdated` event not found.');\n return log;\n }\n modifyWhitelist.extractEvent = extractEvent;\n})(modifyWhitelist || (modifyWhitelist = {}));\n/**\n * Modifies a policy whitelist.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.policy.modifyWhitelistSync(client, {\n * policyId: 2n,\n * account: '0x...',\n * allowed: true,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function modifyWhitelistSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await modifyWhitelist.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = modifyWhitelist.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Modifies a policy blacklist.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.policy.modifyBlacklist(client, {\n * policyId: 2n,\n * account: '0x...',\n * restricted: true,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function modifyBlacklist(client, parameters) {\n return modifyBlacklist.inner(writeContract, client, parameters);\n}\n(function (modifyBlacklist) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { address: targetAccount, policyId, restricted, ...rest } = parameters;\n const call = modifyBlacklist.call({\n address: targetAccount,\n policyId,\n restricted,\n });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n modifyBlacklist.inner = inner;\n /**\n * Defines a call to the `modifyPolicyBlacklist` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.policy.modifyBlacklist.call({\n * policyId: 2n,\n * address: '0x20c0...beef',\n * restricted: true,\n * }),\n * actions.policy.modifyBlacklist.call({\n * policyId: 2n,\n * address: '0x20c0...babe',\n * restricted: false,\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { policyId, address, restricted } = args;\n return defineCall({\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n functionName: 'modifyPolicyBlacklist',\n args: [policyId, address, restricted],\n });\n }\n Object.defineProperty(modifyBlacklist, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n /**\n * Extracts the `BlacklistUpdated` event from logs.\n *\n * @param logs - The logs.\n * @returns The `BlacklistUpdated` event.\n */\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.tip403Registry,\n logs,\n eventName: 'BlacklistUpdated',\n strict: true,\n });\n if (!log)\n throw new Error('`BlacklistUpdated` event not found.');\n return log;\n }\n modifyBlacklist.extractEvent = extractEvent;\n})(modifyBlacklist || (modifyBlacklist = {}));\n/**\n * Modifies a policy blacklist.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.policy.modifyBlacklistSync(client, {\n * policyId: 2n,\n * account: '0x...',\n * restricted: true,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function modifyBlacklistSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await modifyBlacklist.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = modifyBlacklist.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Gets policy data.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const data = await Actions.policy.getData(client, {\n * policyId: 2n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The policy data.\n */\nexport async function getData(client, parameters) {\n const { policyId, ...rest } = parameters;\n const result = await withExecutionError(readContract)(client, {\n ...rest,\n ...getData.call({ policyId }),\n });\n return {\n admin: result[1],\n type: result[0] === 0 ? 'whitelist' : 'blacklist',\n };\n}\n(function (getData) {\n /**\n * Defines a call to the `policyData` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { policyId } = args;\n return defineCall({\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n args: [policyId],\n functionName: 'policyData',\n });\n }\n Object.defineProperty(getData, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getData || (getData = {}));\n/**\n * Checks if a user is authorized by a policy.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const authorized = await Actions.policy.isAuthorized(client, {\n * policyId: 2n,\n * user: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns Whether the user is authorized.\n */\nexport async function isAuthorized(client, parameters) {\n const { policyId, user, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...isAuthorized.call({ policyId, user }),\n });\n}\n(function (isAuthorized) {\n /**\n * Defines a call to the `isAuthorized` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { policyId, user } = args;\n return defineCall({\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n args: [policyId, user],\n functionName: 'isAuthorized',\n });\n }\n Object.defineProperty(isAuthorized, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(isAuthorized || (isAuthorized = {}));\n/**\n * Watches for policy creation events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.policy.watchCreate(client, {\n * onPolicyCreated: (args, log) => {\n * console.log('Policy created:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchCreate(client, parameters) {\n const { onPolicyCreated, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n eventName: 'PolicyCreated',\n onLogs: (logs) => {\n for (const log of logs)\n onPolicyCreated({\n ...log.args,\n type: log.args.policyType === 0 ? 'whitelist' : 'blacklist',\n }, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for policy admin update events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.policy.watchAdminUpdated(client, {\n * onAdminUpdated: (args, log) => {\n * console.log('Policy admin updated:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchAdminUpdated(client, parameters) {\n const { onAdminUpdated, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n eventName: 'PolicyAdminUpdated',\n onLogs: (logs) => {\n for (const log of logs)\n onAdminUpdated(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for whitelist update events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.policy.watchWhitelistUpdated(client, {\n * onWhitelistUpdated: (args, log) => {\n * console.log('Whitelist updated:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchWhitelistUpdated(client, parameters) {\n const { onWhitelistUpdated, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n eventName: 'WhitelistUpdated',\n onLogs: (logs) => {\n for (const log of logs)\n onWhitelistUpdated(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Watches for blacklist update events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.policy.watchBlacklistUpdated(client, {\n * onBlacklistUpdated: (args, log) => {\n * console.log('Blacklist updated:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchBlacklistUpdated(client, parameters) {\n const { onBlacklistUpdated, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.tip403Registry,\n abi: Abis.tip403Registry,\n eventName: 'BlacklistUpdated',\n onLogs: (logs) => {\n for (const log of logs)\n onBlacklistUpdated(log.args, log);\n },\n strict: true,\n });\n}\n/** Thrown when a transfer policy does not exist. */\nexport class PolicyNotFoundError extends TempoExecutionError {\n constructor(parameters) {\n const { policyId } = parameters;\n super(parameters, {\n details: { policy: policyId },\n name: 'PolicyNotFoundError',\n shortMessage: policyId === undefined\n ? undefined\n : `Transfer policy ${policyId} does not exist.`,\n });\n /** Policy ID, when known. */\n Object.defineProperty(this, \"policyId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.policyId = policyId;\n }\n}\n/** @internal */\nexport const errorResolvers = {\n 'PolicyNotFound()': ({ base, call }) => new PolicyNotFoundError({\n ...base,\n policyId: call?.arg('policyId') ?? call?.arg('newPolicyId'),\n }),\n};\n//# sourceMappingURL=policy.js.map","import { TokenId } from 'ox/tempo';\nimport { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { readContract } from '../../actions/public/readContract.js';\nimport { watchContractEvent } from '../../actions/public/watchContractEvent.js';\nimport { writeContract } from '../../actions/wallet/writeContract.js';\nimport { writeContractSync } from '../../actions/wallet/writeContractSync.js';\nimport { zeroAddress } from '../../constants/address.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport * as Abis from '../Abis.js';\nimport * as Addresses from '../Addresses.js';\nimport { FeeTokenNotTip20Error, FeeTokenNotUsdError, FeeTokenPausedError, InvalidFeeTokenError, TempoExecutionError, } from '../errors.js';\nimport { formatAmount, getFeeToken, withExecutionError, } from '../internal/errors.js';\nimport { defineCall } from '../internal/utils.js';\nimport * as tokenActions from './token.js';\nconst tip20AddressPrefix = '0x20c0';\n/**\n * Validates that a token can be used as a Tempo fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo,\n * transport: http(),\n * })\n *\n * const { address, metadata } = await Actions.fee.validateToken(client, {\n * token: '0x20c0000000000000000000000000000000000001',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The fee token address, ID, and metadata.\n */\nexport async function validateToken(client, parameters) {\n const { token, ...rest } = parameters;\n const token_ = String(token);\n const address = (() => {\n try {\n return TokenId.toAddress(token);\n }\n catch (cause) {\n throw new InvalidFeeTokenError({\n cause: cause,\n token: token_,\n });\n }\n })();\n if (!address.toLowerCase().startsWith(tip20AddressPrefix))\n throw new FeeTokenNotTip20Error({ token: address });\n const isPathUsd = address.toLowerCase() === Addresses.pathUsd.toLowerCase();\n if (!isPathUsd) {\n const isTip20 = await withExecutionError(readContract)(client, {\n ...rest,\n address: Addresses.tip20Factory,\n abi: Abis.tip20Factory,\n functionName: 'isTIP20',\n args: [address],\n }).catch((cause) => {\n throw new InvalidFeeTokenError({\n cause: cause,\n token: address,\n });\n });\n if (!isTip20)\n throw new FeeTokenNotTip20Error({ token: address });\n }\n const metadata = await tokenActions\n .getMetadata(client, {\n ...rest,\n token: address,\n })\n .catch((cause) => {\n throw new InvalidFeeTokenError({\n cause: cause,\n token: address,\n });\n });\n if (metadata.currency !== 'USD')\n throw new FeeTokenNotUsdError({\n currency: metadata.currency,\n token: address,\n });\n if (metadata.paused === true)\n throw new FeeTokenPausedError({ token: address });\n return {\n address,\n id: TokenId.fromAddress(address),\n metadata,\n };\n}\n/**\n * Gets the user's default fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const { address, id } = await Actions.fee.getUserToken(client)\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function getUserToken(client, ...parameters) {\n const { account: account_ = client.account, ...rest } = parameters[0] ?? {};\n if (!account_)\n throw new Error('account is required.');\n const account = parseAccount(account_);\n const address = await withExecutionError(readContract)(client, {\n ...rest,\n ...getUserToken.call({ account: account.address }),\n });\n if (address === zeroAddress)\n return null;\n return {\n address,\n id: TokenId.fromAddress(address),\n };\n}\n(function (getUserToken) {\n /**\n * Defines a call to the `userTokens` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { account } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n args: [account],\n functionName: 'userTokens',\n });\n }\n Object.defineProperty(getUserToken, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getUserToken || (getUserToken = {}));\n/**\n * Sets the user's default fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.fee.setUserToken(client, {\n * token: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function setUserToken(client, parameters) {\n return setUserToken.inner(writeContract, client, parameters);\n}\n(function (setUserToken) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { token, ...rest } = parameters;\n const call = setUserToken.call({ token });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n setUserToken.inner = inner;\n /**\n * Defines a call to the `setUserToken` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.fee.setUserToken.call({\n * token: '0x20c0...beef',\n * }),\n * actions.fee.setUserToken.call({\n * token: '0x20c0...babe',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { token } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n functionName: 'setUserToken',\n args: [TokenId.toAddress(token)],\n });\n }\n Object.defineProperty(setUserToken, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.feeManager,\n logs,\n eventName: 'UserTokenSet',\n strict: true,\n });\n if (!log)\n throw new Error('`UserTokenSet` event not found.');\n return log;\n }\n setUserToken.extractEvent = extractEvent;\n})(setUserToken || (setUserToken = {}));\n/**\n * Sets the user's default fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.fee.setUserTokenSync(client, {\n * token: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function setUserTokenSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await setUserToken.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = setUserToken.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Watches for user token set events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.fee.watchSetUserToken(client, {\n * onUserTokenSet: (args, log) => {\n * console.log('User token set:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchSetUserToken(client, parameters) {\n const { onUserTokenSet, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n eventName: 'UserTokenSet',\n onLogs: (logs) => {\n for (const log of logs)\n onUserTokenSet(log.args, log);\n },\n strict: true,\n });\n}\n/**\n * Gets the validator's preferred fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const { address, id } = await Actions.fee.getValidatorToken(client, {\n * validator: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The validator's preferred fee token, or null if not set.\n */\nexport async function getValidatorToken(client, parameters) {\n const { validator, ...rest } = parameters;\n const address = await withExecutionError(readContract)(client, {\n ...rest,\n ...getValidatorToken.call({ validator }),\n });\n if (address === zeroAddress)\n return null;\n return {\n address,\n id: TokenId.fromAddress(address),\n };\n}\n(function (getValidatorToken) {\n /**\n * Defines a call to the `validatorTokens` function.\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { validator } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n args: [validator],\n functionName: 'validatorTokens',\n });\n }\n Object.defineProperty(getValidatorToken, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getValidatorToken || (getValidatorToken = {}));\n/**\n * Sets the validator's preferred fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const hash = await Actions.fee.setValidatorToken(client, {\n * token: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction hash.\n */\nexport async function setValidatorToken(client, parameters) {\n return setValidatorToken.inner(writeContract, client, parameters);\n}\n(function (setValidatorToken) {\n /** @internal */\n async function inner(action, client, parameters) {\n const { token, ...rest } = parameters;\n const call = setValidatorToken.call({ token });\n return (await withExecutionError(action)(client, {\n ...rest,\n ...call,\n }));\n }\n setValidatorToken.inner = inner;\n /**\n * Defines a call to the `setValidatorToken` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls\n *\n * @example\n * ```ts\n * import { createClient, http, walletActions } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * }).extend(walletActions)\n *\n * const { result } = await client.sendCalls({\n * calls: [\n * actions.fee.setValidatorToken.call({\n * token: '0x20c0...beef',\n * }),\n * actions.fee.setValidatorToken.call({\n * token: '0x20c0...babe',\n * }),\n * ]\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { token } = args;\n return defineCall({\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n functionName: 'setValidatorToken',\n args: [TokenId.toAddress(token)],\n });\n }\n Object.defineProperty(setValidatorToken, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n function extractEvent(logs) {\n const [log] = parseEventLogs({\n abi: Abis.feeManager,\n logs,\n eventName: 'ValidatorTokenSet',\n strict: true,\n });\n if (!log)\n throw new Error('`ValidatorTokenSet` event not found.');\n return log;\n }\n setValidatorToken.extractEvent = extractEvent;\n})(setValidatorToken || (setValidatorToken = {}));\n/**\n * Sets the validator's preferred fee token.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n * import { privateKeyToAccount } from 'viem/accounts'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x...'),\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const result = await Actions.fee.setValidatorTokenSync(client, {\n * token: '0x...',\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The transaction receipt and event data.\n */\nexport async function setValidatorTokenSync(client, parameters) {\n const { throwOnReceiptRevert = true, ...rest } = parameters;\n const receipt = await setValidatorToken.inner(writeContractSync, client, {\n ...rest,\n throwOnReceiptRevert,\n });\n if (receipt.status === 'pending')\n return { receipt };\n const { args } = setValidatorToken.extractEvent(receipt.logs);\n return {\n ...args,\n receipt,\n };\n}\n/**\n * Watches for validator token set events.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' })\n * transport: http(),\n * })\n *\n * const unwatch = actions.fee.watchSetValidatorToken(client, {\n * onValidatorTokenSet: (args, log) => {\n * console.log('Validator token set:', args)\n * },\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns A function to unsubscribe from the event.\n */\nexport function watchSetValidatorToken(client, parameters) {\n const { onValidatorTokenSet, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n eventName: 'ValidatorTokenSet',\n onLogs: (logs) => {\n for (const log of logs)\n onValidatorTokenSet(log.args, log);\n },\n strict: true,\n });\n}\n/** Thrown when an account cannot pay transaction fees in its fee token. */\nexport class FeeInsufficientBalanceError extends TempoExecutionError {\n constructor(parameters) {\n const { balance, decimals, feeToken } = parameters;\n super(parameters, {\n details: {\n 'fee token': feeToken,\n balance: formatAmount(balance, decimals),\n },\n name: 'FeeInsufficientBalanceError',\n shortMessage: `Insufficient balance to pay fees${feeToken ? ` in token \"${feeToken}\"` : ''}.`,\n });\n /** Fee token balance, when known. */\n Object.defineProperty(this, \"balance\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Token decimals, when known. */\n Object.defineProperty(this, \"decimals\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Fee token, when known. */\n Object.defineProperty(this, \"feeToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.balance = balance;\n this.decimals = decimals;\n this.feeToken = feeToken;\n }\n}\n/** @internal */\nexport const errorResolvers = {\n 'InsufficientFeeTokenBalance()': async (context) => {\n const { feePayer } = context.parameters;\n // A local fee payer pays instead of the sender. External fee payers cannot be read.\n const payer = typeof feePayer === 'object'\n ? parseAccount(feePayer).address\n : feePayer\n ? undefined\n : context.signer?.address;\n if (!payer)\n return new FeeInsufficientBalanceError(context.base);\n const [userToken] = getFeeToken(context)\n ? []\n : await context.read([\n {\n address: Addresses.feeManager,\n abi: Abis.feeManager,\n functionName: 'userTokens',\n args: [payer],\n },\n ]);\n const feeToken = getFeeToken(context) ??\n (userToken?.result && userToken.result !== zeroAddress\n ? userToken.result\n : undefined);\n if (!feeToken)\n return new FeeInsufficientBalanceError(context.base);\n const [balance, decimals] = await context.read([\n {\n address: feeToken,\n abi: Abis.tip20,\n functionName: 'balanceOf',\n args: [payer],\n },\n { address: feeToken, abi: Abis.tip20, functionName: 'decimals' },\n ]);\n return new FeeInsufficientBalanceError({\n ...context.base,\n balance: balance?.result,\n decimals: decimals?.result,\n feeToken,\n });\n },\n};\n//# sourceMappingURL=fee.js.map","import { readContract } from '../../actions/public/readContract.js';\nimport { watchContractEvent } from '../../actions/public/watchContractEvent.js';\nimport * as Abis from '../Abis.js';\nimport * as Addresses from '../Addresses.js';\nimport { TempoExecutionError } from '../errors.js';\nimport { formatTime, withExecutionError, } from '../internal/errors.js';\nimport { defineCall } from '../internal/utils.js';\n/**\n * Gets the nonce for an account and nonce key.\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }),\n * transport: http(),\n * })\n *\n * const nonce = await Actions.nonce.getNonce(client, {\n * account: '0x...',\n * nonceKey: 1n,\n * })\n * ```\n *\n * @param client - Client.\n * @param parameters - Parameters.\n * @returns The nonce value.\n */\nexport async function getNonce(client, parameters) {\n const { account, nonceKey, ...rest } = parameters;\n return withExecutionError(readContract)(client, {\n ...rest,\n ...getNonce.call({ account, nonceKey }),\n });\n}\n(function (getNonce) {\n /**\n * Defines a call to the `getNonce` function.\n *\n * Can be passed as a parameter to:\n * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call\n * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call\n * - [`multicall`](https://viem.sh/docs/contract/multicall): execute multiple calls in parallel\n *\n * @example\n * ```ts\n * import { createClient, http } from 'viem'\n * import { tempo } from 'viem/chains'\n * import { Actions } from 'viem/tempo'\n *\n * const client = createClient({\n * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }),\n * transport: http(),\n * })\n *\n * const result = await client.multicall({\n * contracts: [\n * Actions.nonce.getNonce.call({ account: '0x...', nonceKey: 1n }),\n * Actions.nonce.getNonce.call({ account: '0x...', nonceKey: 2n }),\n * ],\n * })\n * ```\n *\n * @param args - Arguments.\n * @returns The call.\n */\n function call(args) {\n const { account, nonceKey } = args;\n return defineCall({\n address: Addresses.nonceManager,\n abi: Abis.nonce,\n args: [account, nonceKey],\n functionName: 'getNonce',\n });\n }\n Object.defineProperty(getNonce, \"call\", { configurable: true, enumerable: true, value: call, writable: true });\n})(getNonce || (getNonce = {}));\nexport function watchNonceIncremented(client, parameters) {\n const { onNonceIncremented, ...rest } = parameters;\n return watchContractEvent(client, {\n ...rest,\n address: Addresses.nonceManager,\n abi: Abis.nonce,\n eventName: 'NonceIncremented',\n onLogs: (logs) => {\n for (const log of logs)\n onNonceIncremented(log.args, log);\n },\n strict: true,\n });\n}\n/** Thrown when an expiring nonce transaction was already submitted. */\nexport class NonceReplayError extends TempoExecutionError {\n constructor(parameters) {\n super(parameters, {\n details: { 'valid before': formatTime(parameters.validBefore) },\n name: 'NonceReplayError',\n });\n /** Transaction expiry (Unix seconds), when known. */\n Object.defineProperty(this, \"validBefore\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.validBefore = parameters.validBefore;\n }\n}\n/** Thrown when an expiring nonce transaction's `validBefore` is in the past or too far ahead. */\nexport class NonceInvalidExpiryError extends TempoExecutionError {\n constructor(parameters) {\n const now = Math.floor(Date.now() / 1000);\n super(parameters, {\n details: {\n 'valid before': formatTime(parameters.validBefore),\n now: formatTime(now),\n },\n name: 'NonceInvalidExpiryError',\n });\n /** Current time (Unix seconds) when the error was handled. */\n Object.defineProperty(this, \"now\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /** Transaction expiry (Unix seconds), when known. */\n Object.defineProperty(this, \"validBefore\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.now = now;\n this.validBefore = parameters.validBefore;\n }\n}\n/** @internal */\nexport const errorResolvers = {\n 'ExpiringNonceReplay()': ({ base, parameters }) => new NonceReplayError({ ...base, validBefore: parameters.validBefore }),\n 'InvalidExpiringNonceExpiry()': ({ base, parameters }) => new NonceInvalidExpiryError({\n ...base,\n validBefore: parameters.validBefore,\n }),\n};\n//# sourceMappingURL=nonce.js.map","import { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { call } from '../../actions/public/call.js';\nimport { multicall } from '../../actions/public/multicall.js';\nimport { BaseError } from '../../errors/base.js';\nimport { TransactionReceiptRevertedError } from '../../errors/transaction.js';\nimport { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js';\nimport { formatAbiItem } from '../../utils/abi/formatAbiItem.js';\nimport { toFunctionSelector } from '../../utils/hash/toFunctionSelector.js';\nimport { errorResolvers as accessKeyResolvers } from '../actions/accessKey.js';\nimport { errorResolvers as ammResolvers } from '../actions/amm.js';\nimport { errorResolvers as channelResolvers } from '../actions/channel.js';\nimport { errorResolvers as dexResolvers } from '../actions/dex.js';\nimport { errorResolvers as feeResolvers } from '../actions/fee.js';\nimport { errorResolvers as nonceResolvers } from '../actions/nonce.js';\nimport { errorResolvers as policyResolvers } from '../actions/policy.js';\nimport { errorResolvers as tokenResolvers } from '../actions/token.js';\nimport * as ExecutionError from '../ExecutionError.js';\nimport { TempoExecutionError } from '../errors.js';\n/** Node messages that carry no revert data, mapped to the error they describe. */\nconst messages = [\n [/Access key expired: expiry \\d+ <= min allowed \\d+/, 'ExpiryInPast()'],\n];\nexport async function toExecutionError(cause, options) {\n if (!(cause instanceof BaseError))\n return cause;\n const { client, parameters } = options;\n const source = (await replay(cause, client, parameters)) ?? cause;\n const details = source.details ?? '';\n let error = ExecutionError.from(source);\n if (error.errorName === 'unknown') {\n const signature = messages.find(([pattern]) => pattern.test(details))?.[1];\n if (!signature)\n return cause;\n error = ExecutionError.from(toFunctionSelector(signature));\n }\n if (error.errorName === 'unknown')\n return cause;\n const signature = formatAbiItem(error.abiItem);\n // Solidity `Error(string)` and `Panic(uint256)` are not Tempo errors.\n if (!(signature in ExecutionError.messages))\n return cause;\n const hints = [\n ...(options.hints?.[error.errorName] ?? []),\n ...(ExecutionError.hints[signature] ?? []),\n ];\n const base = { cause, error, hints };\n const account_ = parameters.account ?? client.account;\n const account = account_ ? parseAccount(account_) : undefined;\n const context = {\n base,\n call: getCall(parameters),\n client,\n details,\n parameters,\n read: (contracts) => multicall(client, {\n allowFailure: true,\n contracts: contracts,\n deployless: true,\n }).catch(() => []),\n signer: account && {\n address: account.address,\n accessKey: account.source === 'accessKey' && 'accessKeyAddress' in account\n ? account.accessKeyAddress\n : undefined,\n },\n validation: !hasRevertData(source),\n };\n for (const resolvers of [\n accessKeyResolvers,\n ammResolvers,\n channelResolvers,\n dexResolvers,\n feeResolvers,\n nonceResolvers,\n policyResolvers,\n tokenResolvers,\n ]) {\n const result = await resolvers[signature]?.(context);\n if (result)\n return result;\n }\n return new TempoExecutionError(base);\n}\n/** Replays a call whose receipt reverted, to recover its revert data. */\nasync function replay(cause, client, parameters) {\n const reverted = cause.walk((error) => error instanceof TransactionReceiptRevertedError);\n const to = parameters.to ?? parameters.address;\n const data = parameters.data ??\n (parameters.abi && parameters.functionName\n ? encodeFunctionData({\n abi: parameters.abi,\n args: parameters.args,\n functionName: parameters.functionName,\n })\n : undefined);\n if (!reverted || !to || !data)\n return undefined;\n // ponytail: replays on the parent block, so earlier transactions in the same block are not applied.\n return call(client, {\n account: parameters.account ?? client.account,\n blockNumber: reverted.receipt.blockNumber - 1n,\n data,\n to,\n value: parameters.value,\n }).then(() => undefined, (error) => (error instanceof BaseError ? error : undefined));\n}\n/** Whether an error carries revert data, which only execution reverts have. */\nfunction hasRevertData(error) {\n return !!error.walk((error) => {\n const { data, raw } = error;\n const hex = typeof data === 'object' && data !== null\n ? data.data\n : (data ?? raw);\n return typeof hex === 'string' && hex.length >= 10;\n });\n}\nfunction getCall(parameters) {\n const { abi, address, args = [], functionName, } = parameters;\n if (!address || !functionName)\n return undefined;\n const item = abi?.find((item) => item.type === 'function' && item.name === functionName);\n const inputs = item?.type === 'function' ? item.inputs : [];\n return {\n address,\n args,\n functionName,\n arg: (name) => args[inputs.findIndex((input) => input.name === name)],\n };\n}\n//# sourceMappingURL=resolveError.js.map"],"ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),c=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,o)=>(o=n==null?{}:e(i(n)),l(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),d=e=>a.call(e,`module.exports`)?e[`module.exports`]:l(t({},`__esModule`,{value:!0}),e);export{u as a,d as i,o as n,c as r,s as t};