@metamask/snaps-rpc-methods 14.3.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/permitted/cancelBackgroundEvent.cjs +20 -0
  3. package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
  4. package/dist/permitted/cancelBackgroundEvent.d.cts +43 -3
  5. package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
  6. package/dist/permitted/cancelBackgroundEvent.d.mts +43 -3
  7. package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
  8. package/dist/permitted/cancelBackgroundEvent.mjs +20 -0
  9. package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
  10. package/dist/permitted/clearState.cjs +13 -2
  11. package/dist/permitted/clearState.cjs.map +1 -1
  12. package/dist/permitted/clearState.d.cts +35 -3
  13. package/dist/permitted/clearState.d.cts.map +1 -1
  14. package/dist/permitted/clearState.d.mts +35 -3
  15. package/dist/permitted/clearState.d.mts.map +1 -1
  16. package/dist/permitted/clearState.mjs +13 -2
  17. package/dist/permitted/clearState.mjs.map +1 -1
  18. package/dist/permitted/closeWebSocket.cjs +19 -2
  19. package/dist/permitted/closeWebSocket.cjs.map +1 -1
  20. package/dist/permitted/closeWebSocket.d.cts +39 -4
  21. package/dist/permitted/closeWebSocket.d.cts.map +1 -1
  22. package/dist/permitted/closeWebSocket.d.mts +39 -4
  23. package/dist/permitted/closeWebSocket.d.mts.map +1 -1
  24. package/dist/permitted/closeWebSocket.mjs +19 -2
  25. package/dist/permitted/closeWebSocket.mjs.map +1 -1
  26. package/dist/permitted/createInterface.cjs +33 -2
  27. package/dist/permitted/createInterface.cjs.map +1 -1
  28. package/dist/permitted/createInterface.d.cts +68 -17
  29. package/dist/permitted/createInterface.d.cts.map +1 -1
  30. package/dist/permitted/createInterface.d.mts +68 -17
  31. package/dist/permitted/createInterface.d.mts.map +1 -1
  32. package/dist/permitted/createInterface.mjs +34 -3
  33. package/dist/permitted/createInterface.mjs.map +1 -1
  34. package/dist/permitted/endTrace.cjs +6 -2
  35. package/dist/permitted/endTrace.cjs.map +1 -1
  36. package/dist/permitted/endTrace.d.cts +28 -4
  37. package/dist/permitted/endTrace.d.cts.map +1 -1
  38. package/dist/permitted/endTrace.d.mts +28 -4
  39. package/dist/permitted/endTrace.d.mts.map +1 -1
  40. package/dist/permitted/endTrace.mjs +6 -2
  41. package/dist/permitted/endTrace.mjs.map +1 -1
  42. package/dist/permitted/getAllSnaps.cjs +4 -1
  43. package/dist/permitted/getAllSnaps.cjs.map +1 -1
  44. package/dist/permitted/getAllSnaps.d.cts +25 -3
  45. package/dist/permitted/getAllSnaps.d.cts.map +1 -1
  46. package/dist/permitted/getAllSnaps.d.mts +25 -3
  47. package/dist/permitted/getAllSnaps.d.mts.map +1 -1
  48. package/dist/permitted/getAllSnaps.mjs +4 -1
  49. package/dist/permitted/getAllSnaps.mjs.map +1 -1
  50. package/dist/permitted/getBackgroundEvents.cjs +24 -0
  51. package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
  52. package/dist/permitted/getBackgroundEvents.d.cts +48 -3
  53. package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
  54. package/dist/permitted/getBackgroundEvents.d.mts +48 -3
  55. package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
  56. package/dist/permitted/getBackgroundEvents.mjs +24 -0
  57. package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
  58. package/dist/permitted/getClientStatus.cjs +27 -2
  59. package/dist/permitted/getClientStatus.cjs.map +1 -1
  60. package/dist/permitted/getClientStatus.d.cts +50 -4
  61. package/dist/permitted/getClientStatus.d.cts.map +1 -1
  62. package/dist/permitted/getClientStatus.d.mts +50 -4
  63. package/dist/permitted/getClientStatus.d.mts.map +1 -1
  64. package/dist/permitted/getClientStatus.mjs +27 -2
  65. package/dist/permitted/getClientStatus.mjs.map +1 -1
  66. package/dist/permitted/getFile.cjs +28 -1
  67. package/dist/permitted/getFile.cjs.map +1 -1
  68. package/dist/permitted/getFile.d.cts +49 -3
  69. package/dist/permitted/getFile.d.cts.map +1 -1
  70. package/dist/permitted/getFile.d.mts +49 -3
  71. package/dist/permitted/getFile.d.mts.map +1 -1
  72. package/dist/permitted/getFile.mjs +28 -1
  73. package/dist/permitted/getFile.mjs.map +1 -1
  74. package/dist/permitted/getInterfaceContext.cjs +49 -3
  75. package/dist/permitted/getInterfaceContext.cjs.map +1 -1
  76. package/dist/permitted/getInterfaceContext.d.cts +65 -3
  77. package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
  78. package/dist/permitted/getInterfaceContext.d.mts +65 -3
  79. package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
  80. package/dist/permitted/getInterfaceContext.mjs +50 -4
  81. package/dist/permitted/getInterfaceContext.mjs.map +1 -1
  82. package/dist/permitted/getInterfaceState.cjs +27 -3
  83. package/dist/permitted/getInterfaceState.cjs.map +1 -1
  84. package/dist/permitted/getInterfaceState.d.cts +43 -3
  85. package/dist/permitted/getInterfaceState.d.cts.map +1 -1
  86. package/dist/permitted/getInterfaceState.d.mts +43 -3
  87. package/dist/permitted/getInterfaceState.d.mts.map +1 -1
  88. package/dist/permitted/getInterfaceState.mjs +28 -4
  89. package/dist/permitted/getInterfaceState.mjs.map +1 -1
  90. package/dist/permitted/getSnaps.cjs +21 -2
  91. package/dist/permitted/getSnaps.cjs.map +1 -1
  92. package/dist/permitted/getSnaps.d.cts +42 -4
  93. package/dist/permitted/getSnaps.d.cts.map +1 -1
  94. package/dist/permitted/getSnaps.d.mts +42 -4
  95. package/dist/permitted/getSnaps.d.mts.map +1 -1
  96. package/dist/permitted/getSnaps.mjs +21 -2
  97. package/dist/permitted/getSnaps.mjs.map +1 -1
  98. package/dist/permitted/getState.cjs +24 -2
  99. package/dist/permitted/getState.cjs.map +1 -1
  100. package/dist/permitted/getState.d.cts +46 -4
  101. package/dist/permitted/getState.d.cts.map +1 -1
  102. package/dist/permitted/getState.d.mts +46 -4
  103. package/dist/permitted/getState.d.mts.map +1 -1
  104. package/dist/permitted/getState.mjs +24 -2
  105. package/dist/permitted/getState.mjs.map +1 -1
  106. package/dist/permitted/getWebSockets.cjs +29 -2
  107. package/dist/permitted/getWebSockets.cjs.map +1 -1
  108. package/dist/permitted/getWebSockets.d.cts +50 -4
  109. package/dist/permitted/getWebSockets.d.cts.map +1 -1
  110. package/dist/permitted/getWebSockets.d.mts +50 -4
  111. package/dist/permitted/getWebSockets.d.mts.map +1 -1
  112. package/dist/permitted/getWebSockets.mjs +29 -2
  113. package/dist/permitted/getWebSockets.mjs.map +1 -1
  114. package/dist/permitted/handlers.cjs +0 -4
  115. package/dist/permitted/handlers.cjs.map +1 -1
  116. package/dist/permitted/handlers.d.cts +274 -56
  117. package/dist/permitted/handlers.d.cts.map +1 -1
  118. package/dist/permitted/handlers.d.mts +274 -56
  119. package/dist/permitted/handlers.d.mts.map +1 -1
  120. package/dist/permitted/handlers.mjs +0 -4
  121. package/dist/permitted/handlers.mjs.map +1 -1
  122. package/dist/permitted/index.cjs.map +1 -1
  123. package/dist/permitted/index.d.cts +1 -3
  124. package/dist/permitted/index.d.cts.map +1 -1
  125. package/dist/permitted/index.d.mts +1 -3
  126. package/dist/permitted/index.d.mts.map +1 -1
  127. package/dist/permitted/index.mjs.map +1 -1
  128. package/dist/permitted/invokeKeyring.cjs +8 -2
  129. package/dist/permitted/invokeKeyring.cjs.map +1 -1
  130. package/dist/permitted/invokeKeyring.d.cts +34 -4
  131. package/dist/permitted/invokeKeyring.d.cts.map +1 -1
  132. package/dist/permitted/invokeKeyring.d.mts +34 -4
  133. package/dist/permitted/invokeKeyring.d.mts.map +1 -1
  134. package/dist/permitted/invokeKeyring.mjs +8 -2
  135. package/dist/permitted/invokeKeyring.mjs.map +1 -1
  136. package/dist/permitted/invokeSnapSugar.cjs +25 -2
  137. package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
  138. package/dist/permitted/invokeSnapSugar.d.cts +30 -3
  139. package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
  140. package/dist/permitted/invokeSnapSugar.d.mts +30 -3
  141. package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
  142. package/dist/permitted/invokeSnapSugar.mjs +25 -2
  143. package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
  144. package/dist/permitted/listEntropySources.cjs +40 -1
  145. package/dist/permitted/listEntropySources.cjs.map +1 -1
  146. package/dist/permitted/listEntropySources.d.cts +64 -3
  147. package/dist/permitted/listEntropySources.d.cts.map +1 -1
  148. package/dist/permitted/listEntropySources.d.mts +64 -3
  149. package/dist/permitted/listEntropySources.d.mts.map +1 -1
  150. package/dist/permitted/listEntropySources.mjs +40 -1
  151. package/dist/permitted/listEntropySources.mjs.map +1 -1
  152. package/dist/permitted/openWebSocket.cjs +46 -2
  153. package/dist/permitted/openWebSocket.cjs.map +1 -1
  154. package/dist/permitted/openWebSocket.d.cts +66 -4
  155. package/dist/permitted/openWebSocket.d.cts.map +1 -1
  156. package/dist/permitted/openWebSocket.d.mts +66 -4
  157. package/dist/permitted/openWebSocket.d.mts.map +1 -1
  158. package/dist/permitted/openWebSocket.mjs +46 -2
  159. package/dist/permitted/openWebSocket.mjs.map +1 -1
  160. package/dist/permitted/requestSnaps.cjs +25 -2
  161. package/dist/permitted/requestSnaps.cjs.map +1 -1
  162. package/dist/permitted/requestSnaps.d.cts +51 -3
  163. package/dist/permitted/requestSnaps.d.cts.map +1 -1
  164. package/dist/permitted/requestSnaps.d.mts +51 -3
  165. package/dist/permitted/requestSnaps.d.mts.map +1 -1
  166. package/dist/permitted/requestSnaps.mjs +25 -2
  167. package/dist/permitted/requestSnaps.mjs.map +1 -1
  168. package/dist/permitted/resolveInterface.cjs +38 -2
  169. package/dist/permitted/resolveInterface.cjs.map +1 -1
  170. package/dist/permitted/resolveInterface.d.cts +55 -4
  171. package/dist/permitted/resolveInterface.d.cts.map +1 -1
  172. package/dist/permitted/resolveInterface.d.mts +55 -4
  173. package/dist/permitted/resolveInterface.d.mts.map +1 -1
  174. package/dist/permitted/resolveInterface.mjs +39 -3
  175. package/dist/permitted/resolveInterface.mjs.map +1 -1
  176. package/dist/permitted/scheduleBackgroundEvent.cjs +26 -0
  177. package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
  178. package/dist/permitted/scheduleBackgroundEvent.d.cts +49 -3
  179. package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
  180. package/dist/permitted/scheduleBackgroundEvent.d.mts +49 -3
  181. package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
  182. package/dist/permitted/scheduleBackgroundEvent.mjs +26 -0
  183. package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
  184. package/dist/permitted/sendWebSocketMessage.cjs +24 -2
  185. package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
  186. package/dist/permitted/sendWebSocketMessage.d.cts +44 -4
  187. package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
  188. package/dist/permitted/sendWebSocketMessage.d.mts +44 -4
  189. package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
  190. package/dist/permitted/sendWebSocketMessage.mjs +24 -2
  191. package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
  192. package/dist/permitted/setState.cjs +48 -2
  193. package/dist/permitted/setState.cjs.map +1 -1
  194. package/dist/permitted/setState.d.cts +72 -4
  195. package/dist/permitted/setState.d.cts.map +1 -1
  196. package/dist/permitted/setState.d.mts +72 -4
  197. package/dist/permitted/setState.d.mts.map +1 -1
  198. package/dist/permitted/setState.mjs +48 -2
  199. package/dist/permitted/setState.mjs.map +1 -1
  200. package/dist/permitted/startTrace.cjs +4 -1
  201. package/dist/permitted/startTrace.cjs.map +1 -1
  202. package/dist/permitted/startTrace.d.cts +26 -3
  203. package/dist/permitted/startTrace.d.cts.map +1 -1
  204. package/dist/permitted/startTrace.d.mts +26 -3
  205. package/dist/permitted/startTrace.d.mts.map +1 -1
  206. package/dist/permitted/startTrace.mjs +4 -1
  207. package/dist/permitted/startTrace.mjs.map +1 -1
  208. package/dist/permitted/trackError.cjs +4 -1
  209. package/dist/permitted/trackError.cjs.map +1 -1
  210. package/dist/permitted/trackError.d.cts +26 -3
  211. package/dist/permitted/trackError.d.cts.map +1 -1
  212. package/dist/permitted/trackError.d.mts +26 -3
  213. package/dist/permitted/trackError.d.mts.map +1 -1
  214. package/dist/permitted/trackError.mjs +4 -1
  215. package/dist/permitted/trackError.mjs.map +1 -1
  216. package/dist/permitted/trackEvent.cjs +4 -1
  217. package/dist/permitted/trackEvent.cjs.map +1 -1
  218. package/dist/permitted/trackEvent.d.cts +25 -4
  219. package/dist/permitted/trackEvent.d.cts.map +1 -1
  220. package/dist/permitted/trackEvent.d.mts +25 -4
  221. package/dist/permitted/trackEvent.d.mts.map +1 -1
  222. package/dist/permitted/trackEvent.mjs +4 -1
  223. package/dist/permitted/trackEvent.mjs.map +1 -1
  224. package/dist/permitted/updateInterface.cjs +47 -2
  225. package/dist/permitted/updateInterface.cjs.map +1 -1
  226. package/dist/permitted/updateInterface.d.cts +64 -3
  227. package/dist/permitted/updateInterface.d.cts.map +1 -1
  228. package/dist/permitted/updateInterface.d.mts +64 -3
  229. package/dist/permitted/updateInterface.d.mts.map +1 -1
  230. package/dist/permitted/updateInterface.mjs +48 -3
  231. package/dist/permitted/updateInterface.mjs.map +1 -1
  232. package/dist/restricted/caveats/snapIds.cjs.map +1 -1
  233. package/dist/restricted/caveats/snapIds.d.cts.map +1 -1
  234. package/dist/restricted/caveats/snapIds.d.mts.map +1 -1
  235. package/dist/restricted/caveats/snapIds.mjs.map +1 -1
  236. package/dist/restricted/dialog.cjs +49 -1
  237. package/dist/restricted/dialog.cjs.map +1 -1
  238. package/dist/restricted/dialog.d.cts +52 -2
  239. package/dist/restricted/dialog.d.cts.map +1 -1
  240. package/dist/restricted/dialog.d.mts +52 -2
  241. package/dist/restricted/dialog.d.mts.map +1 -1
  242. package/dist/restricted/dialog.mjs +49 -1
  243. package/dist/restricted/dialog.mjs.map +1 -1
  244. package/dist/restricted/getBip32Entropy.cjs +55 -0
  245. package/dist/restricted/getBip32Entropy.cjs.map +1 -1
  246. package/dist/restricted/getBip32Entropy.d.cts +55 -0
  247. package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
  248. package/dist/restricted/getBip32Entropy.d.mts +55 -0
  249. package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
  250. package/dist/restricted/getBip32Entropy.mjs +55 -0
  251. package/dist/restricted/getBip32Entropy.mjs.map +1 -1
  252. package/dist/restricted/getBip32PublicKey.cjs +36 -0
  253. package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
  254. package/dist/restricted/getBip32PublicKey.d.cts +36 -0
  255. package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
  256. package/dist/restricted/getBip32PublicKey.d.mts +36 -0
  257. package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
  258. package/dist/restricted/getBip32PublicKey.mjs +36 -0
  259. package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
  260. package/dist/restricted/getBip44Entropy.cjs +53 -0
  261. package/dist/restricted/getBip44Entropy.cjs.map +1 -1
  262. package/dist/restricted/getBip44Entropy.d.cts +53 -0
  263. package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
  264. package/dist/restricted/getBip44Entropy.d.mts +53 -0
  265. package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
  266. package/dist/restricted/getBip44Entropy.mjs +53 -0
  267. package/dist/restricted/getBip44Entropy.mjs.map +1 -1
  268. package/dist/restricted/getEntropy.cjs +35 -0
  269. package/dist/restricted/getEntropy.cjs.map +1 -1
  270. package/dist/restricted/getEntropy.d.cts +35 -0
  271. package/dist/restricted/getEntropy.d.cts.map +1 -1
  272. package/dist/restricted/getEntropy.d.mts +35 -0
  273. package/dist/restricted/getEntropy.d.mts.map +1 -1
  274. package/dist/restricted/getEntropy.mjs +35 -0
  275. package/dist/restricted/getEntropy.mjs.map +1 -1
  276. package/dist/restricted/getLocale.cjs +11 -0
  277. package/dist/restricted/getLocale.cjs.map +1 -1
  278. package/dist/restricted/getLocale.d.cts +11 -0
  279. package/dist/restricted/getLocale.d.cts.map +1 -1
  280. package/dist/restricted/getLocale.d.mts +11 -0
  281. package/dist/restricted/getLocale.d.mts.map +1 -1
  282. package/dist/restricted/getLocale.mjs +11 -0
  283. package/dist/restricted/getLocale.mjs.map +1 -1
  284. package/dist/restricted/getPreferences.cjs +24 -0
  285. package/dist/restricted/getPreferences.cjs.map +1 -1
  286. package/dist/restricted/getPreferences.d.cts +24 -0
  287. package/dist/restricted/getPreferences.d.cts.map +1 -1
  288. package/dist/restricted/getPreferences.d.mts +24 -0
  289. package/dist/restricted/getPreferences.d.mts.map +1 -1
  290. package/dist/restricted/getPreferences.mjs +24 -0
  291. package/dist/restricted/getPreferences.mjs.map +1 -1
  292. package/dist/restricted/index.d.cts +1 -1
  293. package/dist/restricted/index.d.mts +1 -1
  294. package/dist/restricted/invokeSnap.cjs +22 -0
  295. package/dist/restricted/invokeSnap.cjs.map +1 -1
  296. package/dist/restricted/invokeSnap.d.cts +24 -6
  297. package/dist/restricted/invokeSnap.d.cts.map +1 -1
  298. package/dist/restricted/invokeSnap.d.mts +24 -6
  299. package/dist/restricted/invokeSnap.d.mts.map +1 -1
  300. package/dist/restricted/invokeSnap.mjs +22 -0
  301. package/dist/restricted/invokeSnap.mjs.map +1 -1
  302. package/dist/restricted/manageAccounts.cjs +10 -0
  303. package/dist/restricted/manageAccounts.cjs.map +1 -1
  304. package/dist/restricted/manageAccounts.d.cts +10 -0
  305. package/dist/restricted/manageAccounts.d.cts.map +1 -1
  306. package/dist/restricted/manageAccounts.d.mts +10 -0
  307. package/dist/restricted/manageAccounts.d.mts.map +1 -1
  308. package/dist/restricted/manageAccounts.mjs +10 -0
  309. package/dist/restricted/manageAccounts.mjs.map +1 -1
  310. package/dist/restricted/manageState.cjs +42 -0
  311. package/dist/restricted/manageState.cjs.map +1 -1
  312. package/dist/restricted/manageState.d.cts +42 -0
  313. package/dist/restricted/manageState.d.cts.map +1 -1
  314. package/dist/restricted/manageState.d.mts +42 -0
  315. package/dist/restricted/manageState.d.mts.map +1 -1
  316. package/dist/restricted/manageState.mjs +42 -0
  317. package/dist/restricted/manageState.mjs.map +1 -1
  318. package/dist/restricted/notify.cjs +74 -0
  319. package/dist/restricted/notify.cjs.map +1 -1
  320. package/dist/restricted/notify.d.cts +74 -0
  321. package/dist/restricted/notify.d.cts.map +1 -1
  322. package/dist/restricted/notify.d.mts +74 -0
  323. package/dist/restricted/notify.d.mts.map +1 -1
  324. package/dist/restricted/notify.mjs +74 -0
  325. package/dist/restricted/notify.mjs.map +1 -1
  326. package/dist/utils.cjs +14 -1
  327. package/dist/utils.cjs.map +1 -1
  328. package/dist/utils.d.cts +6 -0
  329. package/dist/utils.d.cts.map +1 -1
  330. package/dist/utils.d.mts +6 -0
  331. package/dist/utils.d.mts.map +1 -1
  332. package/dist/utils.mjs +13 -0
  333. package/dist/utils.mjs.map +1 -1
  334. package/package.json +11 -7
  335. package/dist/permitted/experimentalProviderRequest.cjs +0 -152
  336. package/dist/permitted/experimentalProviderRequest.cjs.map +0 -1
  337. package/dist/permitted/experimentalProviderRequest.d.cts +0 -39
  338. package/dist/permitted/experimentalProviderRequest.d.cts.map +0 -1
  339. package/dist/permitted/experimentalProviderRequest.d.mts +0 -39
  340. package/dist/permitted/experimentalProviderRequest.d.mts.map +0 -1
  341. package/dist/permitted/experimentalProviderRequest.mjs +0 -149
  342. package/dist/permitted/experimentalProviderRequest.mjs.map +0 -1
  343. package/dist/permitted/getCurrencyRate.cjs +0 -63
  344. package/dist/permitted/getCurrencyRate.cjs.map +0 -1
  345. package/dist/permitted/getCurrencyRate.d.cts +0 -20
  346. package/dist/permitted/getCurrencyRate.d.cts.map +0 -1
  347. package/dist/permitted/getCurrencyRate.d.mts +0 -20
  348. package/dist/permitted/getCurrencyRate.d.mts.map +0 -1
  349. package/dist/permitted/getCurrencyRate.mjs +0 -60
  350. package/dist/permitted/getCurrencyRate.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [15.0.0]
11
+
12
+ ### Changed
13
+
14
+ - Track whether interface has been displayed before allowing `snap_getInterfaceState` ([#3888](https://github.com/MetaMask/snaps/pull/3888))
15
+
16
+ ### Removed
17
+
18
+ - **BREAKING:** Remove `snap_getCurrencyRate` ([#3866](https://github.com/MetaMask/snaps/pull/3866))
19
+ - **BREAKING:** Remove `snap_experimentalProviderRequest` ([#3858](https://github.com/MetaMask/snaps/pull/3858))
20
+
21
+ ### Fixed
22
+
23
+ - Require any interface permission to use RPC methods ([#3864](https://github.com/MetaMask/snaps/pull/3864))
24
+
10
25
  ## [14.3.0]
11
26
 
12
27
  ### Added
@@ -567,7 +582,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
567
582
  - The version of the package no longer needs to match the version of all other
568
583
  MetaMask Snaps packages.
569
584
 
570
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@14.3.0...HEAD
585
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@15.0.0...HEAD
586
+ [15.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@14.3.0...@metamask/snaps-rpc-methods@15.0.0
571
587
  [14.3.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@14.2.0...@metamask/snaps-rpc-methods@14.3.0
572
588
  [14.2.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@14.1.1...@metamask/snaps-rpc-methods@14.2.0
573
589
  [14.1.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@14.1.0...@metamask/snaps-rpc-methods@14.1.1
@@ -9,6 +9,26 @@ const hookNames = {
9
9
  cancelBackgroundEvent: true,
10
10
  hasPermission: true,
11
11
  };
12
+ /**
13
+ * Cancel a background event created by
14
+ * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const id = await snap.request({
19
+ * method: 'snap_scheduleBackgroundEvent',
20
+ * params: {
21
+ * // ...
22
+ * },
23
+ * });
24
+ *
25
+ * // Later, when you want to cancel the background event:
26
+ * snap.request({
27
+ * method: 'snap_cancelBackgroundEvent',
28
+ * params: { id },
29
+ * });
30
+ * ```
31
+ */
12
32
  exports.cancelBackgroundEventHandler = {
13
33
  methodNames: [methodName],
14
34
  implementation: getCancelBackgroundEventImplementation,
@@ -1 +1 @@
1
- {"version":3,"file":"cancelBackgroundEvent.cjs","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAOjE,uDAA4E;AAG5E,wDAA+C;AAG/C,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,MAAM,SAAS,GAAwD;IACrE,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;CACpB,CAAC;AAOW,QAAA,4BAA4B,GAIrC;IACF,WAAW,EAAE,CAAC,UAAU,CAAC;IACzB,cAAc,EAAE,sCAAsC;IACtD,SAAS;CACV,CAAC;AAEF,MAAM,sCAAsC,GAAG,IAAA,oBAAM,EAAC;IACpD,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sCAAsC,CACnD,GAAoD,EACpD,GAAwD,EACxD,KAAc,EACd,GAA6B,EAC7B,EAAE,qBAAqB,EAAE,aAAa,EAAoC;IAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC,aAAa,CAAC,2BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CancelBackgroundEventParams,\n CancelBackgroundEventResult,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, string } from '@metamask/superstruct';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_cancelBackgroundEvent';\n\nconst hookNames: MethodHooksObject<CancelBackgroundEventMethodHooks> = {\n cancelBackgroundEvent: true,\n hasPermission: true,\n};\n\nexport type CancelBackgroundEventMethodHooks = {\n cancelBackgroundEvent: (id: string) => void;\n hasPermission: (permissionName: string) => boolean;\n};\n\nexport const cancelBackgroundEventHandler: PermittedHandlerExport<\n CancelBackgroundEventMethodHooks,\n CancelBackgroundEventParameters,\n CancelBackgroundEventResult\n> = {\n methodNames: [methodName],\n implementation: getCancelBackgroundEventImplementation,\n hookNames,\n};\n\nconst CancelBackgroundEventsParametersStruct = object({\n id: string(),\n});\n\nexport type CancelBackgroundEventParameters = InferMatching<\n typeof CancelBackgroundEventsParametersStruct,\n CancelBackgroundEventParams\n>;\n\n/**\n * The `snap_cancelBackgroundEvent` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.cancelBackgroundEvent - The function to cancel a background event.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.\n * @returns Nothing.\n */\nasync function getCancelBackgroundEventImplementation(\n req: JsonRpcRequest<CancelBackgroundEventParameters>,\n res: PendingJsonRpcResponse<CancelBackgroundEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { cancelBackgroundEvent, hasPermission }: CancelBackgroundEventMethodHooks,\n): Promise<void> {\n const { params } = req;\n\n if (!hasPermission(SnapEndowments.Cronjob)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n cancelBackgroundEvent(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the cancelBackgroundEvent method `params` and returns them cast to the correct type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated resolveInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CancelBackgroundEventParameters {\n try {\n return create(params, CancelBackgroundEventsParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
1
+ {"version":3,"file":"cancelBackgroundEvent.cjs","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAOjE,uDAA4E;AAG5E,wDAA+C;AAG/C,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,MAAM,SAAS,GAAwD;IACrE,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;CACpB,CAAC;AAOF;;;;;;;;;;;;;;;;;;;GAmBG;AACU,QAAA,4BAA4B,GAAG;IAC1C,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,sCAAsC;IACtD,SAAS;CAKV,CAAC;AAEF,MAAM,sCAAsC,GAAG,IAAA,oBAAM,EAAC;IACpD,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sCAAsC,CACnD,GAAoD,EACpD,GAAwD,EACxD,KAAc,EACd,GAA6B,EAC7B,EAAE,qBAAqB,EAAE,aAAa,EAAoC;IAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC,aAAa,CAAC,2BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CancelBackgroundEventParams,\n CancelBackgroundEventResult,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, string } from '@metamask/superstruct';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_cancelBackgroundEvent';\n\nconst hookNames: MethodHooksObject<CancelBackgroundEventMethodHooks> = {\n cancelBackgroundEvent: true,\n hasPermission: true,\n};\n\nexport type CancelBackgroundEventMethodHooks = {\n cancelBackgroundEvent: (id: string) => void;\n hasPermission: (permissionName: string) => boolean;\n};\n\n/**\n * Cancel a background event created by\n * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).\n *\n * @example\n * ```ts\n * const id = await snap.request({\n * method: 'snap_scheduleBackgroundEvent',\n * params: {\n * // ...\n * },\n * });\n *\n * // Later, when you want to cancel the background event:\n * snap.request({\n * method: 'snap_cancelBackgroundEvent',\n * params: { id },\n * });\n * ```\n */\nexport const cancelBackgroundEventHandler = {\n methodNames: [methodName] as const,\n implementation: getCancelBackgroundEventImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CancelBackgroundEventMethodHooks,\n CancelBackgroundEventParameters,\n CancelBackgroundEventResult\n>;\n\nconst CancelBackgroundEventsParametersStruct = object({\n id: string(),\n});\n\nexport type CancelBackgroundEventParameters = InferMatching<\n typeof CancelBackgroundEventsParametersStruct,\n CancelBackgroundEventParams\n>;\n\n/**\n * The `snap_cancelBackgroundEvent` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.cancelBackgroundEvent - The function to cancel a background event.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.\n * @returns Nothing.\n */\nasync function getCancelBackgroundEventImplementation(\n req: JsonRpcRequest<CancelBackgroundEventParameters>,\n res: PendingJsonRpcResponse<CancelBackgroundEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { cancelBackgroundEvent, hasPermission }: CancelBackgroundEventMethodHooks,\n): Promise<void> {\n const { params } = req;\n\n if (!hasPermission(SnapEndowments.Cronjob)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n cancelBackgroundEvent(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the cancelBackgroundEvent method `params` and returns them cast to the correct type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated resolveInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CancelBackgroundEventParameters {\n try {\n return create(params, CancelBackgroundEventsParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
@@ -1,16 +1,56 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
2
- import type { CancelBackgroundEventParams, CancelBackgroundEventResult } from "@metamask/snaps-sdk";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
+ import type { JsonRpcRequest, CancelBackgroundEventParams, CancelBackgroundEventResult } from "@metamask/snaps-sdk";
3
3
  import { type InferMatching } from "@metamask/snaps-utils";
4
+ import { type PendingJsonRpcResponse } from "@metamask/utils";
5
+ import type { MethodHooksObject } from "../utils.cjs";
4
6
  export type CancelBackgroundEventMethodHooks = {
5
7
  cancelBackgroundEvent: (id: string) => void;
6
8
  hasPermission: (permissionName: string) => boolean;
7
9
  };
8
- export declare const cancelBackgroundEventHandler: PermittedHandlerExport<CancelBackgroundEventMethodHooks, CancelBackgroundEventParameters, CancelBackgroundEventResult>;
10
+ /**
11
+ * Cancel a background event created by
12
+ * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const id = await snap.request({
17
+ * method: 'snap_scheduleBackgroundEvent',
18
+ * params: {
19
+ * // ...
20
+ * },
21
+ * });
22
+ *
23
+ * // Later, when you want to cancel the background event:
24
+ * snap.request({
25
+ * method: 'snap_cancelBackgroundEvent',
26
+ * params: { id },
27
+ * });
28
+ * ```
29
+ */
30
+ export declare const cancelBackgroundEventHandler: {
31
+ methodNames: ["snap_cancelBackgroundEvent"];
32
+ implementation: typeof getCancelBackgroundEventImplementation;
33
+ hookNames: MethodHooksObject<CancelBackgroundEventMethodHooks>;
34
+ };
9
35
  declare const CancelBackgroundEventsParametersStruct: import("@metamask/superstruct").Struct<{
10
36
  id: string;
11
37
  }, {
12
38
  id: import("@metamask/superstruct").Struct<string, null>;
13
39
  }>;
14
40
  export type CancelBackgroundEventParameters = InferMatching<typeof CancelBackgroundEventsParametersStruct, CancelBackgroundEventParams>;
41
+ /**
42
+ * The `snap_cancelBackgroundEvent` method implementation.
43
+ *
44
+ * @param req - The JSON-RPC request object.
45
+ * @param res - The JSON-RPC response object.
46
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
47
+ * function.
48
+ * @param end - The `json-rpc-engine` "end" callback.
49
+ * @param hooks - The RPC method hooks.
50
+ * @param hooks.cancelBackgroundEvent - The function to cancel a background event.
51
+ * @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.
52
+ * @returns Nothing.
53
+ */
54
+ declare function getCancelBackgroundEventImplementation(req: JsonRpcRequest<CancelBackgroundEventParameters>, res: PendingJsonRpcResponse<CancelBackgroundEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, { cancelBackgroundEvent, hasPermission }: CancelBackgroundEventMethodHooks): Promise<void>;
15
55
  export {};
16
56
  //# sourceMappingURL=cancelBackgroundEvent.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cancelBackgroundEvent.d.cts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAEV,2BAA2B,EAC3B,2BAA2B,EAC5B,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAc3D,MAAM,MAAM,gCAAgC,GAAG;IAC7C,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,sBAAsB,CAC/D,gCAAgC,EAChC,+BAA+B,EAC/B,2BAA2B,CAK5B,CAAC;AAEF,QAAA,MAAM,sCAAsC;;;;EAE1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,OAAO,sCAAsC,EAC7C,2BAA2B,CAC5B,CAAC"}
1
+ {"version":3,"file":"cancelBackgroundEvent.d.cts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC5B,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,EAAE,KAAK,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,4BAA4B;;;;CAQxC,CAAC;AAEF,QAAA,MAAM,sCAAsC;;;;EAE1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,OAAO,sCAAsC,EAC7C,2BAA2B,CAC5B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAe,sCAAsC,CACnD,GAAG,EAAE,cAAc,CAAC,+BAA+B,CAAC,EACpD,GAAG,EAAE,sBAAsB,CAAC,2BAA2B,CAAC,EACxD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,qBAAqB,EAAE,aAAa,EAAE,EAAE,gCAAgC,GACzE,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -1,16 +1,56 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
2
- import type { CancelBackgroundEventParams, CancelBackgroundEventResult } from "@metamask/snaps-sdk";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
+ import type { JsonRpcRequest, CancelBackgroundEventParams, CancelBackgroundEventResult } from "@metamask/snaps-sdk";
3
3
  import { type InferMatching } from "@metamask/snaps-utils";
4
+ import { type PendingJsonRpcResponse } from "@metamask/utils";
5
+ import type { MethodHooksObject } from "../utils.mjs";
4
6
  export type CancelBackgroundEventMethodHooks = {
5
7
  cancelBackgroundEvent: (id: string) => void;
6
8
  hasPermission: (permissionName: string) => boolean;
7
9
  };
8
- export declare const cancelBackgroundEventHandler: PermittedHandlerExport<CancelBackgroundEventMethodHooks, CancelBackgroundEventParameters, CancelBackgroundEventResult>;
10
+ /**
11
+ * Cancel a background event created by
12
+ * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const id = await snap.request({
17
+ * method: 'snap_scheduleBackgroundEvent',
18
+ * params: {
19
+ * // ...
20
+ * },
21
+ * });
22
+ *
23
+ * // Later, when you want to cancel the background event:
24
+ * snap.request({
25
+ * method: 'snap_cancelBackgroundEvent',
26
+ * params: { id },
27
+ * });
28
+ * ```
29
+ */
30
+ export declare const cancelBackgroundEventHandler: {
31
+ methodNames: ["snap_cancelBackgroundEvent"];
32
+ implementation: typeof getCancelBackgroundEventImplementation;
33
+ hookNames: MethodHooksObject<CancelBackgroundEventMethodHooks>;
34
+ };
9
35
  declare const CancelBackgroundEventsParametersStruct: import("@metamask/superstruct").Struct<{
10
36
  id: string;
11
37
  }, {
12
38
  id: import("@metamask/superstruct").Struct<string, null>;
13
39
  }>;
14
40
  export type CancelBackgroundEventParameters = InferMatching<typeof CancelBackgroundEventsParametersStruct, CancelBackgroundEventParams>;
41
+ /**
42
+ * The `snap_cancelBackgroundEvent` method implementation.
43
+ *
44
+ * @param req - The JSON-RPC request object.
45
+ * @param res - The JSON-RPC response object.
46
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
47
+ * function.
48
+ * @param end - The `json-rpc-engine` "end" callback.
49
+ * @param hooks - The RPC method hooks.
50
+ * @param hooks.cancelBackgroundEvent - The function to cancel a background event.
51
+ * @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.
52
+ * @returns Nothing.
53
+ */
54
+ declare function getCancelBackgroundEventImplementation(req: JsonRpcRequest<CancelBackgroundEventParameters>, res: PendingJsonRpcResponse<CancelBackgroundEventResult>, _next: unknown, end: JsonRpcEngineEndCallback, { cancelBackgroundEvent, hasPermission }: CancelBackgroundEventMethodHooks): Promise<void>;
15
55
  export {};
16
56
  //# sourceMappingURL=cancelBackgroundEvent.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cancelBackgroundEvent.d.mts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAEV,2BAA2B,EAC3B,2BAA2B,EAC5B,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAc3D,MAAM,MAAM,gCAAgC,GAAG;IAC7C,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,sBAAsB,CAC/D,gCAAgC,EAChC,+BAA+B,EAC/B,2BAA2B,CAK5B,CAAC;AAEF,QAAA,MAAM,sCAAsC;;;;EAE1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,OAAO,sCAAsC,EAC7C,2BAA2B,CAC5B,CAAC"}
1
+ {"version":3,"file":"cancelBackgroundEvent.d.mts","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC5B,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,EAAE,KAAK,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,4BAA4B;;;;CAQxC,CAAC;AAEF,QAAA,MAAM,sCAAsC;;;;EAE1C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,OAAO,sCAAsC,EAC7C,2BAA2B,CAC5B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,iBAAe,sCAAsC,CACnD,GAAG,EAAE,cAAc,CAAC,+BAA+B,CAAC,EACpD,GAAG,EAAE,sBAAsB,CAAC,2BAA2B,CAAC,EACxD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,qBAAqB,EAAE,aAAa,EAAE,EAAE,gCAAgC,GACzE,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -6,6 +6,26 @@ const hookNames = {
6
6
  cancelBackgroundEvent: true,
7
7
  hasPermission: true,
8
8
  };
9
+ /**
10
+ * Cancel a background event created by
11
+ * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const id = await snap.request({
16
+ * method: 'snap_scheduleBackgroundEvent',
17
+ * params: {
18
+ * // ...
19
+ * },
20
+ * });
21
+ *
22
+ * // Later, when you want to cancel the background event:
23
+ * snap.request({
24
+ * method: 'snap_cancelBackgroundEvent',
25
+ * params: { id },
26
+ * });
27
+ * ```
28
+ */
9
29
  export const cancelBackgroundEventHandler = {
10
30
  methodNames: [methodName],
11
31
  implementation: getCancelBackgroundEventImplementation,
@@ -1 +1 @@
1
- {"version":3,"file":"cancelBackgroundEvent.mjs","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAOjE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B;AAG5E,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAG/C,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,MAAM,SAAS,GAAwD;IACrE,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;CACpB,CAAC;AAOF,MAAM,CAAC,MAAM,4BAA4B,GAIrC;IACF,WAAW,EAAE,CAAC,UAAU,CAAC;IACzB,cAAc,EAAE,sCAAsC;IACtD,SAAS;CACV,CAAC;AAEF,MAAM,sCAAsC,GAAG,MAAM,CAAC;IACpD,EAAE,EAAE,MAAM,EAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sCAAsC,CACnD,GAAoD,EACpD,GAAwD,EACxD,KAAc,EACd,GAA6B,EAC7B,EAAE,qBAAqB,EAAE,aAAa,EAAoC;IAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CancelBackgroundEventParams,\n CancelBackgroundEventResult,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, string } from '@metamask/superstruct';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_cancelBackgroundEvent';\n\nconst hookNames: MethodHooksObject<CancelBackgroundEventMethodHooks> = {\n cancelBackgroundEvent: true,\n hasPermission: true,\n};\n\nexport type CancelBackgroundEventMethodHooks = {\n cancelBackgroundEvent: (id: string) => void;\n hasPermission: (permissionName: string) => boolean;\n};\n\nexport const cancelBackgroundEventHandler: PermittedHandlerExport<\n CancelBackgroundEventMethodHooks,\n CancelBackgroundEventParameters,\n CancelBackgroundEventResult\n> = {\n methodNames: [methodName],\n implementation: getCancelBackgroundEventImplementation,\n hookNames,\n};\n\nconst CancelBackgroundEventsParametersStruct = object({\n id: string(),\n});\n\nexport type CancelBackgroundEventParameters = InferMatching<\n typeof CancelBackgroundEventsParametersStruct,\n CancelBackgroundEventParams\n>;\n\n/**\n * The `snap_cancelBackgroundEvent` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.cancelBackgroundEvent - The function to cancel a background event.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.\n * @returns Nothing.\n */\nasync function getCancelBackgroundEventImplementation(\n req: JsonRpcRequest<CancelBackgroundEventParameters>,\n res: PendingJsonRpcResponse<CancelBackgroundEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { cancelBackgroundEvent, hasPermission }: CancelBackgroundEventMethodHooks,\n): Promise<void> {\n const { params } = req;\n\n if (!hasPermission(SnapEndowments.Cronjob)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n cancelBackgroundEvent(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the cancelBackgroundEvent method `params` and returns them cast to the correct type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated resolveInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CancelBackgroundEventParameters {\n try {\n return create(params, CancelBackgroundEventsParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
1
+ {"version":3,"file":"cancelBackgroundEvent.mjs","sourceRoot":"","sources":["../../src/permitted/cancelBackgroundEvent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAOjE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B;AAG5E,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAG/C,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,MAAM,SAAS,GAAwD;IACrE,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;CACpB,CAAC;AAOF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,sCAAsC;IACtD,SAAS;CAKV,CAAC;AAEF,MAAM,sCAAsC,GAAG,MAAM,CAAC;IACpD,EAAE,EAAE,MAAM,EAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sCAAsC,CACnD,GAAoD,EACpD,GAAwD,EACxD,KAAc,EACd,GAA6B,EAC7B,EAAE,qBAAqB,EAAE,aAAa,EAAoC;IAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CancelBackgroundEventParams,\n CancelBackgroundEventResult,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, string } from '@metamask/superstruct';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_cancelBackgroundEvent';\n\nconst hookNames: MethodHooksObject<CancelBackgroundEventMethodHooks> = {\n cancelBackgroundEvent: true,\n hasPermission: true,\n};\n\nexport type CancelBackgroundEventMethodHooks = {\n cancelBackgroundEvent: (id: string) => void;\n hasPermission: (permissionName: string) => boolean;\n};\n\n/**\n * Cancel a background event created by\n * [`snap_scheduleBackgroundEvent`](https://docs.metamask.io/snaps/reference/snaps-api/snap_schedulebackgroundevent).\n *\n * @example\n * ```ts\n * const id = await snap.request({\n * method: 'snap_scheduleBackgroundEvent',\n * params: {\n * // ...\n * },\n * });\n *\n * // Later, when you want to cancel the background event:\n * snap.request({\n * method: 'snap_cancelBackgroundEvent',\n * params: { id },\n * });\n * ```\n */\nexport const cancelBackgroundEventHandler = {\n methodNames: [methodName] as const,\n implementation: getCancelBackgroundEventImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CancelBackgroundEventMethodHooks,\n CancelBackgroundEventParameters,\n CancelBackgroundEventResult\n>;\n\nconst CancelBackgroundEventsParametersStruct = object({\n id: string(),\n});\n\nexport type CancelBackgroundEventParameters = InferMatching<\n typeof CancelBackgroundEventsParametersStruct,\n CancelBackgroundEventParams\n>;\n\n/**\n * The `snap_cancelBackgroundEvent` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.cancelBackgroundEvent - The function to cancel a background event.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:cronjob` permission.\n * @returns Nothing.\n */\nasync function getCancelBackgroundEventImplementation(\n req: JsonRpcRequest<CancelBackgroundEventParameters>,\n res: PendingJsonRpcResponse<CancelBackgroundEventResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { cancelBackgroundEvent, hasPermission }: CancelBackgroundEventMethodHooks,\n): Promise<void> {\n const { params } = req;\n\n if (!hasPermission(SnapEndowments.Cronjob)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n cancelBackgroundEvent(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the cancelBackgroundEvent method `params` and returns them cast to the correct type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated resolveInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CancelBackgroundEventParameters {\n try {\n return create(params, CancelBackgroundEventsParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
@@ -4,15 +4,26 @@ exports.clearStateHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const superstruct_1 = require("@metamask/superstruct");
6
6
  const manageState_1 = require("../restricted/manageState.cjs");
7
+ const methodName = 'snap_clearState';
7
8
  const hookNames = {
8
9
  clearSnapState: true,
9
10
  hasPermission: true,
10
11
  };
11
12
  /**
12
- * `snap_clearState` clears the state of the Snap.
13
+ * Clear the entire state of the Snap.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * await snap.request({
18
+ * method: 'snap_clearState',
19
+ * params: {
20
+ * encrypted: true, // Optional, defaults to true
21
+ * },
22
+ * });
23
+ * ```
13
24
  */
14
25
  exports.clearStateHandler = {
15
- methodNames: ['snap_clearState'],
26
+ methodNames: [methodName],
16
27
  implementation: clearStateImplementation,
17
28
  hookNames,
18
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"clearState.cjs","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAGjE,uDAM+B;AAG/B,+DAA+D;AAG/D,MAAM,SAAS,GAAuC;IACpD,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;GAEG;AACU,QAAA,iBAAiB,GAI1B;IACF,WAAW,EAAE,CAAC,iBAAiB,CAAC;IAChC,cAAc,EAAE,wBAAwB;IACxC,SAAS;CACV,CAAC;AAiBF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,SAAS,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC/B,CAAC,CAAC;AAOH;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,cAAc,EAAE,aAAa,EAAmB;IAElD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC,aAAa,CAAC,gCAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC;QAE7C,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { ClearStateParams, ClearStateResult } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n create,\n object,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\n\nimport { manageStateBuilder } from '../restricted/manageState';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<ClearStateHooks> = {\n clearSnapState: true,\n hasPermission: true,\n};\n\n/**\n * `snap_clearState` clears the state of the Snap.\n */\nexport const clearStateHandler: PermittedHandlerExport<\n ClearStateHooks,\n ClearStateParameters,\n ClearStateResult\n> = {\n methodNames: ['snap_clearState'],\n implementation: clearStateImplementation,\n hookNames,\n};\n\nexport type ClearStateHooks = {\n /**\n * A function that clears the state of the requesting Snap.\n */\n clearSnapState: (encrypted: boolean) => void;\n\n /**\n * Check if the requesting origin has a given permission.\n *\n * @param permissionName - The name of the permission to check.\n * @returns Whether the origin has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n};\n\nconst ClearStateParametersStruct = object({\n encrypted: optional(boolean()),\n});\n\nexport type ClearStateParameters = InferMatching<\n typeof ClearStateParametersStruct,\n ClearStateParams\n>;\n\n/**\n * The `snap_clearState` method implementation.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.clearSnapState - A function that clears the state of the\n * requesting Snap.\n * @param hooks.hasPermission - Check whether a given origin has a given\n * permission.\n * @returns Nothing.\n */\nasync function clearStateImplementation(\n request: JsonRpcRequest<ClearStateParameters>,\n response: PendingJsonRpcResponse<ClearStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { clearSnapState, hasPermission }: ClearStateHooks,\n): Promise<void> {\n const { params } = request;\n\n if (!hasPermission(manageStateBuilder.targetName)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n const { encrypted = true } = validatedParams;\n\n clearSnapState(encrypted);\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters of the `snap_clearState` method.\n *\n * @param params - The parameters to validate.\n * @returns The validated parameters.\n */\nfunction getValidatedParams(params?: unknown) {\n try {\n return create(params, ClearStateParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
1
+ {"version":3,"file":"clearState.cjs","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAGjE,uDAM+B;AAG/B,+DAA+D;AAG/D,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,SAAS,GAAuC;IACpD,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACU,QAAA,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,wBAAwB;IACxC,SAAS;CAKV,CAAC;AAiBF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,SAAS,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;CAC/B,CAAC,CAAC;AAOH;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,cAAc,EAAE,aAAa,EAAmB;IAElD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC,aAAa,CAAC,gCAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC;QAE7C,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { ClearStateParams, ClearStateResult } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n create,\n object,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\n\nimport { manageStateBuilder } from '../restricted/manageState';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_clearState';\n\nconst hookNames: MethodHooksObject<ClearStateHooks> = {\n clearSnapState: true,\n hasPermission: true,\n};\n\n/**\n * Clear the entire state of the Snap.\n *\n * @example\n * ```ts\n * await snap.request({\n * method: 'snap_clearState',\n * params: {\n * encrypted: true, // Optional, defaults to true\n * },\n * });\n * ```\n */\nexport const clearStateHandler = {\n methodNames: [methodName] as const,\n implementation: clearStateImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n ClearStateHooks,\n ClearStateParameters,\n ClearStateResult\n>;\n\nexport type ClearStateHooks = {\n /**\n * A function that clears the state of the requesting Snap.\n */\n clearSnapState: (encrypted: boolean) => void;\n\n /**\n * Check if the requesting origin has a given permission.\n *\n * @param permissionName - The name of the permission to check.\n * @returns Whether the origin has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n};\n\nconst ClearStateParametersStruct = object({\n encrypted: optional(boolean()),\n});\n\nexport type ClearStateParameters = InferMatching<\n typeof ClearStateParametersStruct,\n ClearStateParams\n>;\n\n/**\n * The `snap_clearState` method implementation.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.clearSnapState - A function that clears the state of the\n * requesting Snap.\n * @param hooks.hasPermission - Check whether a given origin has a given\n * permission.\n * @returns Nothing.\n */\nasync function clearStateImplementation(\n request: JsonRpcRequest<ClearStateParameters>,\n response: PendingJsonRpcResponse<ClearStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { clearSnapState, hasPermission }: ClearStateHooks,\n): Promise<void> {\n const { params } = request;\n\n if (!hasPermission(manageStateBuilder.targetName)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n const { encrypted = true } = validatedParams;\n\n clearSnapState(encrypted);\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters of the `snap_clearState` method.\n *\n * @param params - The parameters to validate.\n * @returns The validated parameters.\n */\nfunction getValidatedParams(params?: unknown) {\n try {\n return create(params, ClearStateParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
@@ -1,10 +1,26 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
2
  import type { ClearStateParams, ClearStateResult } from "@metamask/snaps-sdk";
3
3
  import { type InferMatching } from "@metamask/snaps-utils";
4
+ import type { PendingJsonRpcResponse, JsonRpcRequest } from "@metamask/utils";
5
+ import type { MethodHooksObject } from "../utils.cjs";
4
6
  /**
5
- * `snap_clearState` clears the state of the Snap.
7
+ * Clear the entire state of the Snap.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * await snap.request({
12
+ * method: 'snap_clearState',
13
+ * params: {
14
+ * encrypted: true, // Optional, defaults to true
15
+ * },
16
+ * });
17
+ * ```
6
18
  */
7
- export declare const clearStateHandler: PermittedHandlerExport<ClearStateHooks, ClearStateParameters, ClearStateResult>;
19
+ export declare const clearStateHandler: {
20
+ methodNames: ["snap_clearState"];
21
+ implementation: typeof clearStateImplementation;
22
+ hookNames: MethodHooksObject<ClearStateHooks>;
23
+ };
8
24
  export type ClearStateHooks = {
9
25
  /**
10
26
  * A function that clears the state of the requesting Snap.
@@ -24,5 +40,21 @@ declare const ClearStateParametersStruct: import("@metamask/superstruct").Struct
24
40
  encrypted: import("@metamask/superstruct").Struct<boolean | undefined, null>;
25
41
  }>;
26
42
  export type ClearStateParameters = InferMatching<typeof ClearStateParametersStruct, ClearStateParams>;
43
+ /**
44
+ * The `snap_clearState` method implementation.
45
+ *
46
+ * @param request - The JSON-RPC request object.
47
+ * @param response - The JSON-RPC response object.
48
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
49
+ * function.
50
+ * @param end - The `json-rpc-engine` "end" callback.
51
+ * @param hooks - The RPC method hooks.
52
+ * @param hooks.clearSnapState - A function that clears the state of the
53
+ * requesting Snap.
54
+ * @param hooks.hasPermission - Check whether a given origin has a given
55
+ * permission.
56
+ * @returns Nothing.
57
+ */
58
+ declare function clearStateImplementation(request: JsonRpcRequest<ClearStateParameters>, response: PendingJsonRpcResponse<ClearStateResult>, _next: unknown, end: JsonRpcEngineEndCallback, { clearSnapState, hasPermission }: ClearStateHooks): Promise<void>;
27
59
  export {};
28
60
  //# sourceMappingURL=clearState.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clearState.d.cts","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAkB3D;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CACpD,eAAe,EACf,oBAAoB,EACpB,gBAAgB,CAKjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC"}
1
+ {"version":3,"file":"clearState.d.cts","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAQ3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,wBAAwB;AAG9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,iBAAe,wBAAwB,CACrC,OAAO,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,eAAe,GACjD,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -1,10 +1,26 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
2
  import type { ClearStateParams, ClearStateResult } from "@metamask/snaps-sdk";
3
3
  import { type InferMatching } from "@metamask/snaps-utils";
4
+ import type { PendingJsonRpcResponse, JsonRpcRequest } from "@metamask/utils";
5
+ import type { MethodHooksObject } from "../utils.mjs";
4
6
  /**
5
- * `snap_clearState` clears the state of the Snap.
7
+ * Clear the entire state of the Snap.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * await snap.request({
12
+ * method: 'snap_clearState',
13
+ * params: {
14
+ * encrypted: true, // Optional, defaults to true
15
+ * },
16
+ * });
17
+ * ```
6
18
  */
7
- export declare const clearStateHandler: PermittedHandlerExport<ClearStateHooks, ClearStateParameters, ClearStateResult>;
19
+ export declare const clearStateHandler: {
20
+ methodNames: ["snap_clearState"];
21
+ implementation: typeof clearStateImplementation;
22
+ hookNames: MethodHooksObject<ClearStateHooks>;
23
+ };
8
24
  export type ClearStateHooks = {
9
25
  /**
10
26
  * A function that clears the state of the requesting Snap.
@@ -24,5 +40,21 @@ declare const ClearStateParametersStruct: import("@metamask/superstruct").Struct
24
40
  encrypted: import("@metamask/superstruct").Struct<boolean | undefined, null>;
25
41
  }>;
26
42
  export type ClearStateParameters = InferMatching<typeof ClearStateParametersStruct, ClearStateParams>;
43
+ /**
44
+ * The `snap_clearState` method implementation.
45
+ *
46
+ * @param request - The JSON-RPC request object.
47
+ * @param response - The JSON-RPC response object.
48
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
49
+ * function.
50
+ * @param end - The `json-rpc-engine` "end" callback.
51
+ * @param hooks - The RPC method hooks.
52
+ * @param hooks.clearSnapState - A function that clears the state of the
53
+ * requesting Snap.
54
+ * @param hooks.hasPermission - Check whether a given origin has a given
55
+ * permission.
56
+ * @returns Nothing.
57
+ */
58
+ declare function clearStateImplementation(request: JsonRpcRequest<ClearStateParameters>, response: PendingJsonRpcResponse<ClearStateResult>, _next: unknown, end: JsonRpcEngineEndCallback, { clearSnapState, hasPermission }: ClearStateHooks): Promise<void>;
27
59
  export {};
28
60
  //# sourceMappingURL=clearState.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clearState.d.mts","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAkB3D;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CACpD,eAAe,EACf,oBAAoB,EACpB,gBAAgB,CAKjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC"}
1
+ {"version":3,"file":"clearState.d.mts","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAQ3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,wBAAwB;AAG9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB;;;;CAQ7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,iBAAe,wBAAwB,CACrC,OAAO,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,eAAe,GACjD,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -1,15 +1,26 @@
1
1
  import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
2
2
  import { boolean, create, object, optional, StructError } from "@metamask/superstruct";
3
3
  import { manageStateBuilder } from "../restricted/manageState.mjs";
4
+ const methodName = 'snap_clearState';
4
5
  const hookNames = {
5
6
  clearSnapState: true,
6
7
  hasPermission: true,
7
8
  };
8
9
  /**
9
- * `snap_clearState` clears the state of the Snap.
10
+ * Clear the entire state of the Snap.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * await snap.request({
15
+ * method: 'snap_clearState',
16
+ * params: {
17
+ * encrypted: true, // Optional, defaults to true
18
+ * },
19
+ * });
20
+ * ```
10
21
  */
11
22
  export const clearStateHandler = {
12
- methodNames: ['snap_clearState'],
23
+ methodNames: [methodName],
13
24
  implementation: clearStateImplementation,
14
25
  hookNames,
15
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"clearState.mjs","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAGjE,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EACZ,8BAA8B;AAG/B,OAAO,EAAE,kBAAkB,EAAE,sCAAkC;AAG/D,MAAM,SAAS,GAAuC;IACpD,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAI1B;IACF,WAAW,EAAE,CAAC,iBAAiB,CAAC;IAChC,cAAc,EAAE,wBAAwB;IACxC,SAAS;CACV,CAAC;AAiBF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;CAC/B,CAAC,CAAC;AAOH;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,cAAc,EAAE,aAAa,EAAmB;IAElD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC;QAE7C,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { ClearStateParams, ClearStateResult } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n create,\n object,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\n\nimport { manageStateBuilder } from '../restricted/manageState';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<ClearStateHooks> = {\n clearSnapState: true,\n hasPermission: true,\n};\n\n/**\n * `snap_clearState` clears the state of the Snap.\n */\nexport const clearStateHandler: PermittedHandlerExport<\n ClearStateHooks,\n ClearStateParameters,\n ClearStateResult\n> = {\n methodNames: ['snap_clearState'],\n implementation: clearStateImplementation,\n hookNames,\n};\n\nexport type ClearStateHooks = {\n /**\n * A function that clears the state of the requesting Snap.\n */\n clearSnapState: (encrypted: boolean) => void;\n\n /**\n * Check if the requesting origin has a given permission.\n *\n * @param permissionName - The name of the permission to check.\n * @returns Whether the origin has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n};\n\nconst ClearStateParametersStruct = object({\n encrypted: optional(boolean()),\n});\n\nexport type ClearStateParameters = InferMatching<\n typeof ClearStateParametersStruct,\n ClearStateParams\n>;\n\n/**\n * The `snap_clearState` method implementation.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.clearSnapState - A function that clears the state of the\n * requesting Snap.\n * @param hooks.hasPermission - Check whether a given origin has a given\n * permission.\n * @returns Nothing.\n */\nasync function clearStateImplementation(\n request: JsonRpcRequest<ClearStateParameters>,\n response: PendingJsonRpcResponse<ClearStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { clearSnapState, hasPermission }: ClearStateHooks,\n): Promise<void> {\n const { params } = request;\n\n if (!hasPermission(manageStateBuilder.targetName)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n const { encrypted = true } = validatedParams;\n\n clearSnapState(encrypted);\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters of the `snap_clearState` method.\n *\n * @param params - The parameters to validate.\n * @returns The validated parameters.\n */\nfunction getValidatedParams(params?: unknown) {\n try {\n return create(params, ClearStateParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
1
+ {"version":3,"file":"clearState.mjs","sourceRoot":"","sources":["../../src/permitted/clearState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAGjE,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EACZ,8BAA8B;AAG/B,OAAO,EAAE,kBAAkB,EAAE,sCAAkC;AAG/D,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,SAAS,GAAuC;IACpD,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,wBAAwB;IACxC,SAAS;CAKV,CAAC;AAiBF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;CAC/B,CAAC,CAAC;AAOH;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,cAAc,EAAE,aAAa,EAAmB;IAElD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC;QAE7C,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { ClearStateParams, ClearStateResult } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport {\n boolean,\n create,\n object,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\n\nimport { manageStateBuilder } from '../restricted/manageState';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_clearState';\n\nconst hookNames: MethodHooksObject<ClearStateHooks> = {\n clearSnapState: true,\n hasPermission: true,\n};\n\n/**\n * Clear the entire state of the Snap.\n *\n * @example\n * ```ts\n * await snap.request({\n * method: 'snap_clearState',\n * params: {\n * encrypted: true, // Optional, defaults to true\n * },\n * });\n * ```\n */\nexport const clearStateHandler = {\n methodNames: [methodName] as const,\n implementation: clearStateImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n ClearStateHooks,\n ClearStateParameters,\n ClearStateResult\n>;\n\nexport type ClearStateHooks = {\n /**\n * A function that clears the state of the requesting Snap.\n */\n clearSnapState: (encrypted: boolean) => void;\n\n /**\n * Check if the requesting origin has a given permission.\n *\n * @param permissionName - The name of the permission to check.\n * @returns Whether the origin has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n};\n\nconst ClearStateParametersStruct = object({\n encrypted: optional(boolean()),\n});\n\nexport type ClearStateParameters = InferMatching<\n typeof ClearStateParametersStruct,\n ClearStateParams\n>;\n\n/**\n * The `snap_clearState` method implementation.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.clearSnapState - A function that clears the state of the\n * requesting Snap.\n * @param hooks.hasPermission - Check whether a given origin has a given\n * permission.\n * @returns Nothing.\n */\nasync function clearStateImplementation(\n request: JsonRpcRequest<ClearStateParameters>,\n response: PendingJsonRpcResponse<ClearStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { clearSnapState, hasPermission }: ClearStateHooks,\n): Promise<void> {\n const { params } = request;\n\n if (!hasPermission(manageStateBuilder.targetName)) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const validatedParams = getValidatedParams(params);\n const { encrypted = true } = validatedParams;\n\n clearSnapState(encrypted);\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters of the `snap_clearState` method.\n *\n * @param params - The parameters to validate.\n * @returns The validated parameters.\n */\nfunction getValidatedParams(params?: unknown) {\n try {\n return create(params, ClearStateParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
@@ -4,6 +4,7 @@ exports.closeWebSocketHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const superstruct_1 = require("@metamask/superstruct");
6
6
  const endowments_1 = require("../endowments/index.cjs");
7
+ const methodName = 'snap_closeWebSocket';
7
8
  const hookNames = {
8
9
  hasPermission: true,
9
10
  closeWebSocket: true,
@@ -12,10 +13,26 @@ const CloseWebSocketParametersStruct = (0, superstruct_1.object)({
12
13
  id: (0, superstruct_1.string)(),
13
14
  });
14
15
  /**
15
- * Handler for the `snap_closeWebSocket` method.
16
+ * Closes a WebSocket connection that was previously opened with
17
+ * [`snap_openWebSocket`](https://docs.metamask.io/snaps/reference/snaps-api/snap_openwebsocket).
18
+ *
19
+ * @example
20
+ * ```json name="Manifest"
21
+ * {
22
+ * "initialPermissions": {
23
+ * "endowment:network-access": {}
24
+ * }
25
+ * }
26
+ * ```
27
+ * ```ts name="Usage"
28
+ * await snap.request({
29
+ * method: 'snap_closeWebSocket',
30
+ * params: { id: 'websocket-1' },
31
+ * });
32
+ * ```
16
33
  */
17
34
  exports.closeWebSocketHandler = {
18
- methodNames: ['snap_closeWebSocket'],
35
+ methodNames: [methodName],
19
36
  implementation: closeWebSocketImplementation,
20
37
  hookNames,
21
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"closeWebSocket.cjs","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAOjE,uDAA4E;AAG5E,wDAA+C;AAG/C,MAAM,SAAS,GAAiD;IAC9D,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;CACrB,CAAC;AAOF,MAAM,8BAA8B,GAAG,IAAA,oBAAM,EAAC;IAC5C,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;GAEG;AACU,QAAA,qBAAqB,GAI9B;IACF,WAAW,EAAE,CAAC,qBAAqB,CAAC;IACpC,cAAc,EAAE,4BAA4B;IAC5C,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CACnC,GAA6C,EAC7C,GAAiD,EACjD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,cAAc,EAA6B;IAE5D,IAAI,CAAC,aAAa,CAAC,2BAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,cAAc,CAAC,EAAE,CAAC,CAAC;QACnB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CloseWebSocketParams,\n CloseWebSocketResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { create, object, string, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<CloseWebSocketMethodHooks> = {\n hasPermission: true,\n closeWebSocket: true,\n};\n\nexport type CloseWebSocketMethodHooks = {\n hasPermission: (permissionName: string) => boolean;\n closeWebSocket: (id: string) => void;\n};\n\nconst CloseWebSocketParametersStruct = object({\n id: string(),\n});\n\nexport type CloseWebSocketParameters = InferMatching<\n typeof CloseWebSocketParametersStruct,\n CloseWebSocketParams\n>;\n\n/**\n * Handler for the `snap_closeWebSocket` method.\n */\nexport const closeWebSocketHandler: PermittedHandlerExport<\n CloseWebSocketMethodHooks,\n CloseWebSocketParams,\n CloseWebSocketResult\n> = {\n methodNames: ['snap_closeWebSocket'],\n implementation: closeWebSocketImplementation,\n hookNames,\n};\n\n/**\n * The `snap_closeWebSocket` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.\n * @param hooks.closeWebSocket - The function to close a WebSocket.\n * @returns Nothing.\n */\nfunction closeWebSocketImplementation(\n req: JsonRpcRequest<CloseWebSocketParameters>,\n res: PendingJsonRpcResponse<CloseWebSocketResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, closeWebSocket }: CloseWebSocketMethodHooks,\n): void {\n if (!hasPermission(SnapEndowments.NetworkAccess)) {\n return end(providerErrors.unauthorized());\n }\n\n const { params } = req;\n\n try {\n const { id } = getValidatedParams(params);\n closeWebSocket(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_closeWebSocket method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): CloseWebSocketParameters {\n try {\n return create(params, CloseWebSocketParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
1
+ {"version":3,"file":"closeWebSocket.cjs","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAOjE,uDAA4E;AAG5E,wDAA+C;AAG/C,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,MAAM,SAAS,GAAiD;IAC9D,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;CACrB,CAAC;AAOF,MAAM,8BAA8B,GAAG,IAAA,oBAAM,EAAC;IAC5C,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,qBAAqB,GAAG;IACnC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,4BAA4B;IAC5C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CACnC,GAA6C,EAC7C,GAAiD,EACjD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,cAAc,EAA6B;IAE5D,IAAI,CAAC,aAAa,CAAC,2BAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,cAAc,CAAC,EAAE,CAAC,CAAC;QACnB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CloseWebSocketParams,\n CloseWebSocketResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { create, object, string, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_closeWebSocket';\n\nconst hookNames: MethodHooksObject<CloseWebSocketMethodHooks> = {\n hasPermission: true,\n closeWebSocket: true,\n};\n\nexport type CloseWebSocketMethodHooks = {\n hasPermission: (permissionName: string) => boolean;\n closeWebSocket: (id: string) => void;\n};\n\nconst CloseWebSocketParametersStruct = object({\n id: string(),\n});\n\nexport type CloseWebSocketParameters = InferMatching<\n typeof CloseWebSocketParametersStruct,\n CloseWebSocketParams\n>;\n\n/**\n * Closes a WebSocket connection that was previously opened with\n * [`snap_openWebSocket`](https://docs.metamask.io/snaps/reference/snaps-api/snap_openwebsocket).\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * await snap.request({\n * method: 'snap_closeWebSocket',\n * params: { id: 'websocket-1' },\n * });\n * ```\n */\nexport const closeWebSocketHandler = {\n methodNames: [methodName] as const,\n implementation: closeWebSocketImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CloseWebSocketMethodHooks,\n CloseWebSocketParams,\n CloseWebSocketResult\n>;\n\n/**\n * The `snap_closeWebSocket` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.\n * @param hooks.closeWebSocket - The function to close a WebSocket.\n * @returns Nothing.\n */\nfunction closeWebSocketImplementation(\n req: JsonRpcRequest<CloseWebSocketParameters>,\n res: PendingJsonRpcResponse<CloseWebSocketResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, closeWebSocket }: CloseWebSocketMethodHooks,\n): void {\n if (!hasPermission(SnapEndowments.NetworkAccess)) {\n return end(providerErrors.unauthorized());\n }\n\n const { params } = req;\n\n try {\n const { id } = getValidatedParams(params);\n closeWebSocket(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_closeWebSocket method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): CloseWebSocketParameters {\n try {\n return create(params, CloseWebSocketParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}