@metamask/snaps-rpc-methods 14.2.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 (432) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/endowments/assets.cjs +1 -1
  3. package/dist/endowments/assets.cjs.map +1 -1
  4. package/dist/endowments/assets.mjs +1 -1
  5. package/dist/endowments/assets.mjs.map +1 -1
  6. package/dist/endowments/cronjob.cjs +3 -8
  7. package/dist/endowments/cronjob.cjs.map +1 -1
  8. package/dist/endowments/cronjob.d.cts.map +1 -1
  9. package/dist/endowments/cronjob.d.mts.map +1 -1
  10. package/dist/endowments/cronjob.mjs +4 -9
  11. package/dist/endowments/cronjob.mjs.map +1 -1
  12. package/dist/endowments/home-page.cjs +6 -1
  13. package/dist/endowments/home-page.cjs.map +1 -1
  14. package/dist/endowments/home-page.d.cts +2 -1
  15. package/dist/endowments/home-page.d.cts.map +1 -1
  16. package/dist/endowments/home-page.d.mts +2 -1
  17. package/dist/endowments/home-page.d.mts.map +1 -1
  18. package/dist/endowments/home-page.mjs +6 -1
  19. package/dist/endowments/home-page.mjs.map +1 -1
  20. package/dist/endowments/index.d.cts +3 -0
  21. package/dist/endowments/index.d.cts.map +1 -1
  22. package/dist/endowments/index.d.mts +3 -0
  23. package/dist/endowments/index.d.mts.map +1 -1
  24. package/dist/endowments/keyring.cjs +2 -4
  25. package/dist/endowments/keyring.cjs.map +1 -1
  26. package/dist/endowments/keyring.d.cts +1 -1
  27. package/dist/endowments/keyring.d.cts.map +1 -1
  28. package/dist/endowments/keyring.d.mts +1 -1
  29. package/dist/endowments/keyring.d.mts.map +1 -1
  30. package/dist/endowments/keyring.mjs +2 -4
  31. package/dist/endowments/keyring.mjs.map +1 -1
  32. package/dist/endowments/lifecycle-hooks.cjs +6 -1
  33. package/dist/endowments/lifecycle-hooks.cjs.map +1 -1
  34. package/dist/endowments/lifecycle-hooks.d.cts +2 -1
  35. package/dist/endowments/lifecycle-hooks.d.cts.map +1 -1
  36. package/dist/endowments/lifecycle-hooks.d.mts +2 -1
  37. package/dist/endowments/lifecycle-hooks.d.mts.map +1 -1
  38. package/dist/endowments/lifecycle-hooks.mjs +6 -1
  39. package/dist/endowments/lifecycle-hooks.mjs.map +1 -1
  40. package/dist/endowments/rpc.cjs +2 -4
  41. package/dist/endowments/rpc.cjs.map +1 -1
  42. package/dist/endowments/rpc.d.cts +1 -1
  43. package/dist/endowments/rpc.d.cts.map +1 -1
  44. package/dist/endowments/rpc.d.mts +1 -1
  45. package/dist/endowments/rpc.d.mts.map +1 -1
  46. package/dist/endowments/rpc.mjs +2 -4
  47. package/dist/endowments/rpc.mjs.map +1 -1
  48. package/dist/endowments/settings-page.cjs +6 -1
  49. package/dist/endowments/settings-page.cjs.map +1 -1
  50. package/dist/endowments/settings-page.d.cts +2 -1
  51. package/dist/endowments/settings-page.d.cts.map +1 -1
  52. package/dist/endowments/settings-page.d.mts +2 -1
  53. package/dist/endowments/settings-page.d.mts.map +1 -1
  54. package/dist/endowments/settings-page.mjs +6 -1
  55. package/dist/endowments/settings-page.mjs.map +1 -1
  56. package/dist/endowments/signature-insight.cjs +6 -8
  57. package/dist/endowments/signature-insight.cjs.map +1 -1
  58. package/dist/endowments/signature-insight.d.cts.map +1 -1
  59. package/dist/endowments/signature-insight.d.mts.map +1 -1
  60. package/dist/endowments/signature-insight.mjs +6 -8
  61. package/dist/endowments/signature-insight.mjs.map +1 -1
  62. package/dist/endowments/transaction-insight.cjs +2 -7
  63. package/dist/endowments/transaction-insight.cjs.map +1 -1
  64. package/dist/endowments/transaction-insight.d.cts.map +1 -1
  65. package/dist/endowments/transaction-insight.d.mts.map +1 -1
  66. package/dist/endowments/transaction-insight.mjs +2 -7
  67. package/dist/endowments/transaction-insight.mjs.map +1 -1
  68. package/dist/middleware/index.cjs +3 -0
  69. package/dist/middleware/index.cjs.map +1 -1
  70. package/dist/middleware/index.d.cts +1 -0
  71. package/dist/middleware/index.d.cts.map +1 -1
  72. package/dist/middleware/index.d.mts +1 -0
  73. package/dist/middleware/index.d.mts.map +1 -1
  74. package/dist/middleware/index.mjs +1 -0
  75. package/dist/middleware/index.mjs.map +1 -1
  76. package/dist/middleware/wallet-snap-permission.cjs +32 -0
  77. package/dist/middleware/wallet-snap-permission.cjs.map +1 -0
  78. package/dist/middleware/wallet-snap-permission.d.cts +18 -0
  79. package/dist/middleware/wallet-snap-permission.d.cts.map +1 -0
  80. package/dist/middleware/wallet-snap-permission.d.mts +18 -0
  81. package/dist/middleware/wallet-snap-permission.d.mts.map +1 -0
  82. package/dist/middleware/wallet-snap-permission.mjs +28 -0
  83. package/dist/middleware/wallet-snap-permission.mjs.map +1 -0
  84. package/dist/permitted/cancelBackgroundEvent.cjs +20 -0
  85. package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
  86. package/dist/permitted/cancelBackgroundEvent.d.cts +43 -3
  87. package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
  88. package/dist/permitted/cancelBackgroundEvent.d.mts +43 -3
  89. package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
  90. package/dist/permitted/cancelBackgroundEvent.mjs +20 -0
  91. package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
  92. package/dist/permitted/clearState.cjs +13 -2
  93. package/dist/permitted/clearState.cjs.map +1 -1
  94. package/dist/permitted/clearState.d.cts +35 -3
  95. package/dist/permitted/clearState.d.cts.map +1 -1
  96. package/dist/permitted/clearState.d.mts +35 -3
  97. package/dist/permitted/clearState.d.mts.map +1 -1
  98. package/dist/permitted/clearState.mjs +13 -2
  99. package/dist/permitted/clearState.mjs.map +1 -1
  100. package/dist/permitted/closeWebSocket.cjs +19 -2
  101. package/dist/permitted/closeWebSocket.cjs.map +1 -1
  102. package/dist/permitted/closeWebSocket.d.cts +39 -4
  103. package/dist/permitted/closeWebSocket.d.cts.map +1 -1
  104. package/dist/permitted/closeWebSocket.d.mts +39 -4
  105. package/dist/permitted/closeWebSocket.d.mts.map +1 -1
  106. package/dist/permitted/closeWebSocket.mjs +19 -2
  107. package/dist/permitted/closeWebSocket.mjs.map +1 -1
  108. package/dist/permitted/createInterface.cjs +33 -2
  109. package/dist/permitted/createInterface.cjs.map +1 -1
  110. package/dist/permitted/createInterface.d.cts +68 -17
  111. package/dist/permitted/createInterface.d.cts.map +1 -1
  112. package/dist/permitted/createInterface.d.mts +68 -17
  113. package/dist/permitted/createInterface.d.mts.map +1 -1
  114. package/dist/permitted/createInterface.mjs +34 -3
  115. package/dist/permitted/createInterface.mjs.map +1 -1
  116. package/dist/permitted/endTrace.cjs +6 -2
  117. package/dist/permitted/endTrace.cjs.map +1 -1
  118. package/dist/permitted/endTrace.d.cts +28 -4
  119. package/dist/permitted/endTrace.d.cts.map +1 -1
  120. package/dist/permitted/endTrace.d.mts +28 -4
  121. package/dist/permitted/endTrace.d.mts.map +1 -1
  122. package/dist/permitted/endTrace.mjs +6 -2
  123. package/dist/permitted/endTrace.mjs.map +1 -1
  124. package/dist/permitted/getAllSnaps.cjs +4 -1
  125. package/dist/permitted/getAllSnaps.cjs.map +1 -1
  126. package/dist/permitted/getAllSnaps.d.cts +25 -3
  127. package/dist/permitted/getAllSnaps.d.cts.map +1 -1
  128. package/dist/permitted/getAllSnaps.d.mts +25 -3
  129. package/dist/permitted/getAllSnaps.d.mts.map +1 -1
  130. package/dist/permitted/getAllSnaps.mjs +4 -1
  131. package/dist/permitted/getAllSnaps.mjs.map +1 -1
  132. package/dist/permitted/getBackgroundEvents.cjs +24 -0
  133. package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
  134. package/dist/permitted/getBackgroundEvents.d.cts +48 -3
  135. package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
  136. package/dist/permitted/getBackgroundEvents.d.mts +48 -3
  137. package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
  138. package/dist/permitted/getBackgroundEvents.mjs +24 -0
  139. package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
  140. package/dist/permitted/getClientStatus.cjs +27 -2
  141. package/dist/permitted/getClientStatus.cjs.map +1 -1
  142. package/dist/permitted/getClientStatus.d.cts +50 -4
  143. package/dist/permitted/getClientStatus.d.cts.map +1 -1
  144. package/dist/permitted/getClientStatus.d.mts +50 -4
  145. package/dist/permitted/getClientStatus.d.mts.map +1 -1
  146. package/dist/permitted/getClientStatus.mjs +27 -2
  147. package/dist/permitted/getClientStatus.mjs.map +1 -1
  148. package/dist/permitted/getFile.cjs +28 -1
  149. package/dist/permitted/getFile.cjs.map +1 -1
  150. package/dist/permitted/getFile.d.cts +49 -3
  151. package/dist/permitted/getFile.d.cts.map +1 -1
  152. package/dist/permitted/getFile.d.mts +49 -3
  153. package/dist/permitted/getFile.d.mts.map +1 -1
  154. package/dist/permitted/getFile.mjs +28 -1
  155. package/dist/permitted/getFile.mjs.map +1 -1
  156. package/dist/permitted/getInterfaceContext.cjs +49 -3
  157. package/dist/permitted/getInterfaceContext.cjs.map +1 -1
  158. package/dist/permitted/getInterfaceContext.d.cts +65 -3
  159. package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
  160. package/dist/permitted/getInterfaceContext.d.mts +65 -3
  161. package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
  162. package/dist/permitted/getInterfaceContext.mjs +50 -4
  163. package/dist/permitted/getInterfaceContext.mjs.map +1 -1
  164. package/dist/permitted/getInterfaceState.cjs +27 -3
  165. package/dist/permitted/getInterfaceState.cjs.map +1 -1
  166. package/dist/permitted/getInterfaceState.d.cts +43 -3
  167. package/dist/permitted/getInterfaceState.d.cts.map +1 -1
  168. package/dist/permitted/getInterfaceState.d.mts +43 -3
  169. package/dist/permitted/getInterfaceState.d.mts.map +1 -1
  170. package/dist/permitted/getInterfaceState.mjs +28 -4
  171. package/dist/permitted/getInterfaceState.mjs.map +1 -1
  172. package/dist/permitted/getSnaps.cjs +21 -2
  173. package/dist/permitted/getSnaps.cjs.map +1 -1
  174. package/dist/permitted/getSnaps.d.cts +42 -4
  175. package/dist/permitted/getSnaps.d.cts.map +1 -1
  176. package/dist/permitted/getSnaps.d.mts +42 -4
  177. package/dist/permitted/getSnaps.d.mts.map +1 -1
  178. package/dist/permitted/getSnaps.mjs +21 -2
  179. package/dist/permitted/getSnaps.mjs.map +1 -1
  180. package/dist/permitted/getState.cjs +24 -2
  181. package/dist/permitted/getState.cjs.map +1 -1
  182. package/dist/permitted/getState.d.cts +46 -4
  183. package/dist/permitted/getState.d.cts.map +1 -1
  184. package/dist/permitted/getState.d.mts +46 -4
  185. package/dist/permitted/getState.d.mts.map +1 -1
  186. package/dist/permitted/getState.mjs +24 -2
  187. package/dist/permitted/getState.mjs.map +1 -1
  188. package/dist/permitted/getWebSockets.cjs +29 -2
  189. package/dist/permitted/getWebSockets.cjs.map +1 -1
  190. package/dist/permitted/getWebSockets.d.cts +50 -4
  191. package/dist/permitted/getWebSockets.d.cts.map +1 -1
  192. package/dist/permitted/getWebSockets.d.mts +50 -4
  193. package/dist/permitted/getWebSockets.d.mts.map +1 -1
  194. package/dist/permitted/getWebSockets.mjs +29 -2
  195. package/dist/permitted/getWebSockets.mjs.map +1 -1
  196. package/dist/permitted/handlers.cjs +0 -4
  197. package/dist/permitted/handlers.cjs.map +1 -1
  198. package/dist/permitted/handlers.d.cts +274 -56
  199. package/dist/permitted/handlers.d.cts.map +1 -1
  200. package/dist/permitted/handlers.d.mts +274 -56
  201. package/dist/permitted/handlers.d.mts.map +1 -1
  202. package/dist/permitted/handlers.mjs +0 -4
  203. package/dist/permitted/handlers.mjs.map +1 -1
  204. package/dist/permitted/index.cjs.map +1 -1
  205. package/dist/permitted/index.d.cts +1 -3
  206. package/dist/permitted/index.d.cts.map +1 -1
  207. package/dist/permitted/index.d.mts +1 -3
  208. package/dist/permitted/index.d.mts.map +1 -1
  209. package/dist/permitted/index.mjs.map +1 -1
  210. package/dist/permitted/invokeKeyring.cjs +8 -2
  211. package/dist/permitted/invokeKeyring.cjs.map +1 -1
  212. package/dist/permitted/invokeKeyring.d.cts +34 -4
  213. package/dist/permitted/invokeKeyring.d.cts.map +1 -1
  214. package/dist/permitted/invokeKeyring.d.mts +34 -4
  215. package/dist/permitted/invokeKeyring.d.mts.map +1 -1
  216. package/dist/permitted/invokeKeyring.mjs +8 -2
  217. package/dist/permitted/invokeKeyring.mjs.map +1 -1
  218. package/dist/permitted/invokeSnapSugar.cjs +25 -2
  219. package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
  220. package/dist/permitted/invokeSnapSugar.d.cts +30 -3
  221. package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
  222. package/dist/permitted/invokeSnapSugar.d.mts +30 -3
  223. package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
  224. package/dist/permitted/invokeSnapSugar.mjs +25 -2
  225. package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
  226. package/dist/permitted/listEntropySources.cjs +40 -1
  227. package/dist/permitted/listEntropySources.cjs.map +1 -1
  228. package/dist/permitted/listEntropySources.d.cts +64 -3
  229. package/dist/permitted/listEntropySources.d.cts.map +1 -1
  230. package/dist/permitted/listEntropySources.d.mts +64 -3
  231. package/dist/permitted/listEntropySources.d.mts.map +1 -1
  232. package/dist/permitted/listEntropySources.mjs +40 -1
  233. package/dist/permitted/listEntropySources.mjs.map +1 -1
  234. package/dist/permitted/openWebSocket.cjs +46 -2
  235. package/dist/permitted/openWebSocket.cjs.map +1 -1
  236. package/dist/permitted/openWebSocket.d.cts +66 -4
  237. package/dist/permitted/openWebSocket.d.cts.map +1 -1
  238. package/dist/permitted/openWebSocket.d.mts +66 -4
  239. package/dist/permitted/openWebSocket.d.mts.map +1 -1
  240. package/dist/permitted/openWebSocket.mjs +46 -2
  241. package/dist/permitted/openWebSocket.mjs.map +1 -1
  242. package/dist/permitted/requestSnaps.cjs +25 -2
  243. package/dist/permitted/requestSnaps.cjs.map +1 -1
  244. package/dist/permitted/requestSnaps.d.cts +51 -3
  245. package/dist/permitted/requestSnaps.d.cts.map +1 -1
  246. package/dist/permitted/requestSnaps.d.mts +51 -3
  247. package/dist/permitted/requestSnaps.d.mts.map +1 -1
  248. package/dist/permitted/requestSnaps.mjs +25 -2
  249. package/dist/permitted/requestSnaps.mjs.map +1 -1
  250. package/dist/permitted/resolveInterface.cjs +38 -2
  251. package/dist/permitted/resolveInterface.cjs.map +1 -1
  252. package/dist/permitted/resolveInterface.d.cts +55 -4
  253. package/dist/permitted/resolveInterface.d.cts.map +1 -1
  254. package/dist/permitted/resolveInterface.d.mts +55 -4
  255. package/dist/permitted/resolveInterface.d.mts.map +1 -1
  256. package/dist/permitted/resolveInterface.mjs +39 -3
  257. package/dist/permitted/resolveInterface.mjs.map +1 -1
  258. package/dist/permitted/scheduleBackgroundEvent.cjs +26 -0
  259. package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
  260. package/dist/permitted/scheduleBackgroundEvent.d.cts +49 -3
  261. package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
  262. package/dist/permitted/scheduleBackgroundEvent.d.mts +49 -3
  263. package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
  264. package/dist/permitted/scheduleBackgroundEvent.mjs +26 -0
  265. package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
  266. package/dist/permitted/sendWebSocketMessage.cjs +24 -2
  267. package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
  268. package/dist/permitted/sendWebSocketMessage.d.cts +44 -4
  269. package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
  270. package/dist/permitted/sendWebSocketMessage.d.mts +44 -4
  271. package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
  272. package/dist/permitted/sendWebSocketMessage.mjs +24 -2
  273. package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
  274. package/dist/permitted/setState.cjs +48 -2
  275. package/dist/permitted/setState.cjs.map +1 -1
  276. package/dist/permitted/setState.d.cts +72 -4
  277. package/dist/permitted/setState.d.cts.map +1 -1
  278. package/dist/permitted/setState.d.mts +72 -4
  279. package/dist/permitted/setState.d.mts.map +1 -1
  280. package/dist/permitted/setState.mjs +48 -2
  281. package/dist/permitted/setState.mjs.map +1 -1
  282. package/dist/permitted/startTrace.cjs +4 -1
  283. package/dist/permitted/startTrace.cjs.map +1 -1
  284. package/dist/permitted/startTrace.d.cts +26 -3
  285. package/dist/permitted/startTrace.d.cts.map +1 -1
  286. package/dist/permitted/startTrace.d.mts +26 -3
  287. package/dist/permitted/startTrace.d.mts.map +1 -1
  288. package/dist/permitted/startTrace.mjs +4 -1
  289. package/dist/permitted/startTrace.mjs.map +1 -1
  290. package/dist/permitted/trackError.cjs +4 -1
  291. package/dist/permitted/trackError.cjs.map +1 -1
  292. package/dist/permitted/trackError.d.cts +26 -3
  293. package/dist/permitted/trackError.d.cts.map +1 -1
  294. package/dist/permitted/trackError.d.mts +26 -3
  295. package/dist/permitted/trackError.d.mts.map +1 -1
  296. package/dist/permitted/trackError.mjs +4 -1
  297. package/dist/permitted/trackError.mjs.map +1 -1
  298. package/dist/permitted/trackEvent.cjs +4 -1
  299. package/dist/permitted/trackEvent.cjs.map +1 -1
  300. package/dist/permitted/trackEvent.d.cts +25 -4
  301. package/dist/permitted/trackEvent.d.cts.map +1 -1
  302. package/dist/permitted/trackEvent.d.mts +25 -4
  303. package/dist/permitted/trackEvent.d.mts.map +1 -1
  304. package/dist/permitted/trackEvent.mjs +4 -1
  305. package/dist/permitted/trackEvent.mjs.map +1 -1
  306. package/dist/permitted/updateInterface.cjs +47 -2
  307. package/dist/permitted/updateInterface.cjs.map +1 -1
  308. package/dist/permitted/updateInterface.d.cts +64 -3
  309. package/dist/permitted/updateInterface.d.cts.map +1 -1
  310. package/dist/permitted/updateInterface.d.mts +64 -3
  311. package/dist/permitted/updateInterface.d.mts.map +1 -1
  312. package/dist/permitted/updateInterface.mjs +48 -3
  313. package/dist/permitted/updateInterface.mjs.map +1 -1
  314. package/dist/restricted/caveats/snapIds.cjs.map +1 -1
  315. package/dist/restricted/caveats/snapIds.d.cts.map +1 -1
  316. package/dist/restricted/caveats/snapIds.d.mts.map +1 -1
  317. package/dist/restricted/caveats/snapIds.mjs.map +1 -1
  318. package/dist/restricted/dialog.cjs +49 -1
  319. package/dist/restricted/dialog.cjs.map +1 -1
  320. package/dist/restricted/dialog.d.cts +52 -2
  321. package/dist/restricted/dialog.d.cts.map +1 -1
  322. package/dist/restricted/dialog.d.mts +52 -2
  323. package/dist/restricted/dialog.d.mts.map +1 -1
  324. package/dist/restricted/dialog.mjs +49 -1
  325. package/dist/restricted/dialog.mjs.map +1 -1
  326. package/dist/restricted/getBip32Entropy.cjs +55 -0
  327. package/dist/restricted/getBip32Entropy.cjs.map +1 -1
  328. package/dist/restricted/getBip32Entropy.d.cts +55 -0
  329. package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
  330. package/dist/restricted/getBip32Entropy.d.mts +55 -0
  331. package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
  332. package/dist/restricted/getBip32Entropy.mjs +55 -0
  333. package/dist/restricted/getBip32Entropy.mjs.map +1 -1
  334. package/dist/restricted/getBip32PublicKey.cjs +36 -0
  335. package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
  336. package/dist/restricted/getBip32PublicKey.d.cts +36 -0
  337. package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
  338. package/dist/restricted/getBip32PublicKey.d.mts +36 -0
  339. package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
  340. package/dist/restricted/getBip32PublicKey.mjs +36 -0
  341. package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
  342. package/dist/restricted/getBip44Entropy.cjs +53 -0
  343. package/dist/restricted/getBip44Entropy.cjs.map +1 -1
  344. package/dist/restricted/getBip44Entropy.d.cts +53 -0
  345. package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
  346. package/dist/restricted/getBip44Entropy.d.mts +53 -0
  347. package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
  348. package/dist/restricted/getBip44Entropy.mjs +53 -0
  349. package/dist/restricted/getBip44Entropy.mjs.map +1 -1
  350. package/dist/restricted/getEntropy.cjs +35 -0
  351. package/dist/restricted/getEntropy.cjs.map +1 -1
  352. package/dist/restricted/getEntropy.d.cts +35 -0
  353. package/dist/restricted/getEntropy.d.cts.map +1 -1
  354. package/dist/restricted/getEntropy.d.mts +35 -0
  355. package/dist/restricted/getEntropy.d.mts.map +1 -1
  356. package/dist/restricted/getEntropy.mjs +35 -0
  357. package/dist/restricted/getEntropy.mjs.map +1 -1
  358. package/dist/restricted/getLocale.cjs +11 -0
  359. package/dist/restricted/getLocale.cjs.map +1 -1
  360. package/dist/restricted/getLocale.d.cts +11 -0
  361. package/dist/restricted/getLocale.d.cts.map +1 -1
  362. package/dist/restricted/getLocale.d.mts +11 -0
  363. package/dist/restricted/getLocale.d.mts.map +1 -1
  364. package/dist/restricted/getLocale.mjs +11 -0
  365. package/dist/restricted/getLocale.mjs.map +1 -1
  366. package/dist/restricted/getPreferences.cjs +24 -0
  367. package/dist/restricted/getPreferences.cjs.map +1 -1
  368. package/dist/restricted/getPreferences.d.cts +24 -0
  369. package/dist/restricted/getPreferences.d.cts.map +1 -1
  370. package/dist/restricted/getPreferences.d.mts +24 -0
  371. package/dist/restricted/getPreferences.d.mts.map +1 -1
  372. package/dist/restricted/getPreferences.mjs +24 -0
  373. package/dist/restricted/getPreferences.mjs.map +1 -1
  374. package/dist/restricted/index.d.cts +1 -1
  375. package/dist/restricted/index.d.mts +1 -1
  376. package/dist/restricted/invokeSnap.cjs +22 -0
  377. package/dist/restricted/invokeSnap.cjs.map +1 -1
  378. package/dist/restricted/invokeSnap.d.cts +24 -6
  379. package/dist/restricted/invokeSnap.d.cts.map +1 -1
  380. package/dist/restricted/invokeSnap.d.mts +24 -6
  381. package/dist/restricted/invokeSnap.d.mts.map +1 -1
  382. package/dist/restricted/invokeSnap.mjs +22 -0
  383. package/dist/restricted/invokeSnap.mjs.map +1 -1
  384. package/dist/restricted/manageAccounts.cjs +10 -0
  385. package/dist/restricted/manageAccounts.cjs.map +1 -1
  386. package/dist/restricted/manageAccounts.d.cts +10 -0
  387. package/dist/restricted/manageAccounts.d.cts.map +1 -1
  388. package/dist/restricted/manageAccounts.d.mts +10 -0
  389. package/dist/restricted/manageAccounts.d.mts.map +1 -1
  390. package/dist/restricted/manageAccounts.mjs +10 -0
  391. package/dist/restricted/manageAccounts.mjs.map +1 -1
  392. package/dist/restricted/manageState.cjs +42 -0
  393. package/dist/restricted/manageState.cjs.map +1 -1
  394. package/dist/restricted/manageState.d.cts +42 -0
  395. package/dist/restricted/manageState.d.cts.map +1 -1
  396. package/dist/restricted/manageState.d.mts +42 -0
  397. package/dist/restricted/manageState.d.mts.map +1 -1
  398. package/dist/restricted/manageState.mjs +42 -0
  399. package/dist/restricted/manageState.mjs.map +1 -1
  400. package/dist/restricted/notify.cjs +74 -0
  401. package/dist/restricted/notify.cjs.map +1 -1
  402. package/dist/restricted/notify.d.cts +74 -0
  403. package/dist/restricted/notify.d.cts.map +1 -1
  404. package/dist/restricted/notify.d.mts +74 -0
  405. package/dist/restricted/notify.d.mts.map +1 -1
  406. package/dist/restricted/notify.mjs +74 -0
  407. package/dist/restricted/notify.mjs.map +1 -1
  408. package/dist/utils.cjs +14 -1
  409. package/dist/utils.cjs.map +1 -1
  410. package/dist/utils.d.cts +6 -0
  411. package/dist/utils.d.cts.map +1 -1
  412. package/dist/utils.d.mts +6 -0
  413. package/dist/utils.d.mts.map +1 -1
  414. package/dist/utils.mjs +13 -0
  415. package/dist/utils.mjs.map +1 -1
  416. package/package.json +11 -7
  417. package/dist/permitted/experimentalProviderRequest.cjs +0 -152
  418. package/dist/permitted/experimentalProviderRequest.cjs.map +0 -1
  419. package/dist/permitted/experimentalProviderRequest.d.cts +0 -39
  420. package/dist/permitted/experimentalProviderRequest.d.cts.map +0 -1
  421. package/dist/permitted/experimentalProviderRequest.d.mts +0 -39
  422. package/dist/permitted/experimentalProviderRequest.d.mts.map +0 -1
  423. package/dist/permitted/experimentalProviderRequest.mjs +0 -149
  424. package/dist/permitted/experimentalProviderRequest.mjs.map +0 -1
  425. package/dist/permitted/getCurrencyRate.cjs +0 -63
  426. package/dist/permitted/getCurrencyRate.cjs.map +0 -1
  427. package/dist/permitted/getCurrencyRate.d.cts +0 -20
  428. package/dist/permitted/getCurrencyRate.d.cts.map +0 -1
  429. package/dist/permitted/getCurrencyRate.d.mts +0 -20
  430. package/dist/permitted/getCurrencyRate.d.mts.map +0 -1
  431. package/dist/permitted/getCurrencyRate.mjs +0 -60
  432. package/dist/permitted/getCurrencyRate.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getFile.d.cts","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAiB,4BAA4B;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAO3D,eAAO,MAAM,iBAAiB;;;;;;EAS5B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAC/C,OAAO,iBAAiB,EACxB,aAAa,CACd,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,sBAAsB,CACjD,YAAY,EACZ,qBAAqB,EACrB,MAAM,CAKP,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,CACX,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACnC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,KACxC,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"getFile.d.cts","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,4BAA4B;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,wBAAwB;AAG9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAElD,eAAO,MAAM,iBAAiB;;;;;;EAS5B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAC/C,OAAO,iBAAiB,EACxB,aAAa,CACd,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc;;;;CAIoD,CAAC;AAEhF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,CACX,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACnC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,KACxC,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAe,cAAc,CAC3B,GAAG,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAC1C,GAAG,EAAE,sBAAsB,CAAC,aAAa,CAAC,EAC1C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,WAAW,EAAE,EAAE,YAAY,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -1,6 +1,8 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
2
- import type { GetFileParams } from "@metamask/snaps-sdk";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
+ import type { GetFileParams, GetFileResult } 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
  export declare const GetFileArgsStruct: import("@metamask/superstruct").Struct<{
5
7
  path: string;
6
8
  encoding?: "base64" | "hex" | "utf8" | undefined;
@@ -9,8 +11,52 @@ export declare const GetFileArgsStruct: import("@metamask/superstruct").Struct<{
9
11
  encoding: import("@metamask/superstruct").Struct<"base64" | "hex" | "utf8" | undefined, null>;
10
12
  }>;
11
13
  export type InferredGetFileParams = InferMatching<typeof GetFileArgsStruct, GetFileParams>;
12
- export declare const getFileHandler: PermittedHandlerExport<GetFileHooks, InferredGetFileParams, string>;
14
+ /**
15
+ * Gets a static file's content in UTF-8, Base64, or hexadecimal.
16
+ *
17
+ * The file must be specified in [the Snap's manifest file](https://docs.metamask.io/snaps/features/static-files/).
18
+ *
19
+ * @example
20
+ * ```json name="Manifest"
21
+ * {
22
+ * "source": {
23
+ * "files": ["./files/my-file.bin"]
24
+ * }
25
+ * }
26
+ * ```
27
+ * ```ts name="Usage"
28
+ * const contents = await snap.request({
29
+ * method: 'snap_getFile',
30
+ * params: {
31
+ * path: './files/myfile.bin',
32
+ * encoding: 'hex',
33
+ * },
34
+ * })
35
+ *
36
+ * // '0x...'
37
+ * console.log(contents)
38
+ * ```
39
+ */
40
+ export declare const getFileHandler: {
41
+ methodNames: ["snap_getFile"];
42
+ implementation: typeof implementation;
43
+ hookNames: MethodHooksObject<GetFileHooks>;
44
+ };
13
45
  export type GetFileHooks = {
14
46
  getSnapFile: (path: InferredGetFileParams['path'], encoding: InferredGetFileParams['encoding']) => Promise<string>;
15
47
  };
48
+ /**
49
+ * The `snap_getFile` method implementation.
50
+ *
51
+ * @param req - The JSON-RPC request object.
52
+ * @param res - The JSON-RPC response object.
53
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
54
+ * function.
55
+ * @param end - The `json-rpc-engine` "end" callback.
56
+ * @param hooks - The RPC method hooks.
57
+ * @param hooks.getSnapFile - The function to load a static snap file.
58
+ * @returns Nothing.
59
+ */
60
+ declare function implementation(req: JsonRpcRequest<InferredGetFileParams>, res: PendingJsonRpcResponse<GetFileResult>, _next: unknown, end: JsonRpcEngineEndCallback, { getSnapFile }: GetFileHooks): Promise<void>;
61
+ export {};
16
62
  //# sourceMappingURL=getFile.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFile.d.mts","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAiB,4BAA4B;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAO3D,eAAO,MAAM,iBAAiB;;;;;;EAS5B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAC/C,OAAO,iBAAiB,EACxB,aAAa,CACd,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,sBAAsB,CACjD,YAAY,EACZ,qBAAqB,EACrB,MAAM,CAKP,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,CACX,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACnC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,KACxC,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"getFile.d.mts","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,4BAA4B;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,wBAAwB;AAG9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAElD,eAAO,MAAM,iBAAiB;;;;;;EAS5B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAC/C,OAAO,iBAAiB,EACxB,aAAa,CACd,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc;;;;CAIoD,CAAC;AAEhF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,CACX,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACnC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,KACxC,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAe,cAAc,CAC3B,GAAG,EAAE,cAAc,CAAC,qBAAqB,CAAC,EAC1C,GAAG,EAAE,sBAAsB,CAAC,aAAa,CAAC,EAC1C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,WAAW,EAAE,EAAE,YAAY,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -10,11 +10,38 @@ export const GetFileArgsStruct = object({
10
10
  enumValue(AuxiliaryFileEncoding.Utf8),
11
11
  ])),
12
12
  });
13
+ const methodName = 'snap_getFile';
13
14
  const hookNames = {
14
15
  getSnapFile: true,
15
16
  };
17
+ /**
18
+ * Gets a static file's content in UTF-8, Base64, or hexadecimal.
19
+ *
20
+ * The file must be specified in [the Snap's manifest file](https://docs.metamask.io/snaps/features/static-files/).
21
+ *
22
+ * @example
23
+ * ```json name="Manifest"
24
+ * {
25
+ * "source": {
26
+ * "files": ["./files/my-file.bin"]
27
+ * }
28
+ * }
29
+ * ```
30
+ * ```ts name="Usage"
31
+ * const contents = await snap.request({
32
+ * method: 'snap_getFile',
33
+ * params: {
34
+ * path: './files/myfile.bin',
35
+ * encoding: 'hex',
36
+ * },
37
+ * })
38
+ *
39
+ * // '0x...'
40
+ * console.log(contents)
41
+ * ```
42
+ */
16
43
  export const getFileHandler = {
17
- methodNames: ['snap_getFile'],
44
+ methodNames: [methodName],
18
45
  implementation,
19
46
  hookNames,
20
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getFile.mjs","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,4BAA4B;AAEvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B;AAExE,OAAO,EAAE,YAAY,EAAE,wBAAwB;AAI/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;IACtC,IAAI,EAAE,MAAM,EAAE;IACd,QAAQ,EAAE,QAAQ,CAChB,KAAK,CAAC;QACJ,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACvC,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC;QACpC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC;KACtC,CAAC,CACH;CACF,CAAC,CAAC;AAOH,MAAM,SAAS,GAAoC;IACjD,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAIvB;IACF,WAAW,EAAE,CAAC,cAAc,CAAC;IAC7B,cAAc;IACd,SAAS;CACV,CAAC;AASF;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,cAAc,CAC3B,GAA0C,EAC1C,GAA0C,EAC1C,KAAc,EACd,GAA6B,EAC7B,EAAE,WAAW,EAAgB;IAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,YAAY,CACV,MAAM,EACN,iBAAiB,EACjB,mCAAmC,EACnC,SAAS,CAAC,aAAa,CACxB,CAAC;IAEF,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,MAAM,WAAW,CAC5B,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,IAAI,qBAAqB,CAAC,MAAM,CAChD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { GetFileParams, GetFileResult } from '@metamask/snaps-sdk';\nimport { AuxiliaryFileEncoding, enumValue } from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { object, optional, string, union } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nexport const GetFileArgsStruct = object({\n path: string(),\n encoding: optional(\n union([\n enumValue(AuxiliaryFileEncoding.Base64),\n enumValue(AuxiliaryFileEncoding.Hex),\n enumValue(AuxiliaryFileEncoding.Utf8),\n ]),\n ),\n});\n\nexport type InferredGetFileParams = InferMatching<\n typeof GetFileArgsStruct,\n GetFileParams\n>;\n\nconst hookNames: MethodHooksObject<GetFileHooks> = {\n getSnapFile: true,\n};\n\nexport const getFileHandler: PermittedHandlerExport<\n GetFileHooks,\n InferredGetFileParams,\n string\n> = {\n methodNames: ['snap_getFile'],\n implementation,\n hookNames,\n};\n\nexport type GetFileHooks = {\n getSnapFile: (\n path: InferredGetFileParams['path'],\n encoding: InferredGetFileParams['encoding'],\n ) => Promise<string>;\n};\n\n/**\n * The `snap_getFile` 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.getSnapFile - The function to load a static snap file.\n * @returns Nothing.\n */\nasync function implementation(\n req: JsonRpcRequest<InferredGetFileParams>,\n res: PendingJsonRpcResponse<GetFileResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getSnapFile }: GetFileHooks,\n): Promise<void> {\n const { params } = req;\n\n assertStruct(\n params,\n GetFileArgsStruct,\n 'Invalid \"snap_getFile\" parameters',\n rpcErrors.invalidParams,\n );\n\n try {\n res.result = await getSnapFile(\n params.path,\n params.encoding ?? AuxiliaryFileEncoding.Base64,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
1
+ {"version":3,"file":"getFile.mjs","sourceRoot":"","sources":["../../src/permitted/getFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,4BAA4B;AAEvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B;AAExE,OAAO,EAAE,YAAY,EAAE,wBAAwB;AAI/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;IACtC,IAAI,EAAE,MAAM,EAAE;IACd,QAAQ,EAAE,QAAQ,CAChB,KAAK,CAAC;QACJ,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACvC,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC;QACpC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC;KACtC,CAAC,CACH;CACF,CAAC,CAAC;AAOH,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC,MAAM,SAAS,GAAoC;IACjD,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc;IACd,SAAS;CACoE,CAAC;AAShF;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,cAAc,CAC3B,GAA0C,EAC1C,GAA0C,EAC1C,KAAc,EACd,GAA6B,EAC7B,EAAE,WAAW,EAAgB;IAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,YAAY,CACV,MAAM,EACN,iBAAiB,EACjB,mCAAmC,EACnC,SAAS,CAAC,aAAa,CACxB,CAAC;IAEF,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,MAAM,WAAW,CAC5B,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,IAAI,qBAAqB,CAAC,MAAM,CAChD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { GetFileParams, GetFileResult } from '@metamask/snaps-sdk';\nimport { AuxiliaryFileEncoding, enumValue } from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { object, optional, string, union } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nexport const GetFileArgsStruct = object({\n path: string(),\n encoding: optional(\n union([\n enumValue(AuxiliaryFileEncoding.Base64),\n enumValue(AuxiliaryFileEncoding.Hex),\n enumValue(AuxiliaryFileEncoding.Utf8),\n ]),\n ),\n});\n\nexport type InferredGetFileParams = InferMatching<\n typeof GetFileArgsStruct,\n GetFileParams\n>;\n\nconst methodName = 'snap_getFile';\n\nconst hookNames: MethodHooksObject<GetFileHooks> = {\n getSnapFile: true,\n};\n\n/**\n * Gets a static file's content in UTF-8, Base64, or hexadecimal.\n *\n * The file must be specified in [the Snap's manifest file](https://docs.metamask.io/snaps/features/static-files/).\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"source\": {\n * \"files\": [\"./files/my-file.bin\"]\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const contents = await snap.request({\n * method: 'snap_getFile',\n * params: {\n * path: './files/myfile.bin',\n * encoding: 'hex',\n * },\n * })\n *\n * // '0x...'\n * console.log(contents)\n * ```\n */\nexport const getFileHandler = {\n methodNames: [methodName] as const,\n implementation,\n hookNames,\n} satisfies PermittedHandlerExport<GetFileHooks, InferredGetFileParams, string>;\n\nexport type GetFileHooks = {\n getSnapFile: (\n path: InferredGetFileParams['path'],\n encoding: InferredGetFileParams['encoding'],\n ) => Promise<string>;\n};\n\n/**\n * The `snap_getFile` 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.getSnapFile - The function to load a static snap file.\n * @returns Nothing.\n */\nasync function implementation(\n req: JsonRpcRequest<InferredGetFileParams>,\n res: PendingJsonRpcResponse<GetFileResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getSnapFile }: GetFileHooks,\n): Promise<void> {\n const { params } = req;\n\n assertStruct(\n params,\n GetFileArgsStruct,\n 'Invalid \"snap_getFile\" parameters',\n rpcErrors.invalidParams,\n );\n\n try {\n res.result = await getSnapFile(\n params.path,\n params.encoding ?? AuxiliaryFileEncoding.Base64,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
@@ -3,11 +3,50 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInterfaceContextHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const superstruct_1 = require("@metamask/superstruct");
6
+ const utils_1 = require("../utils.cjs");
7
+ const methodName = 'snap_getInterfaceContext';
6
8
  const hookNames = {
9
+ hasPermission: true,
7
10
  getInterfaceContext: true,
8
11
  };
12
+ /**
13
+ * Get the context of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)
14
+ * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
19
+ *
20
+ * const interfaceId = await snap.request({
21
+ * method: 'snap_createInterface',
22
+ * params: {
23
+ * ui: (
24
+ * <Box>
25
+ * <Heading>Hello, world!</Heading>
26
+ * <Text>Welcome to my Snap homepage!</Text>
27
+ * </Box>
28
+ * ),
29
+ * context: {
30
+ * key: 'value'
31
+ * }
32
+ * },
33
+ * })
34
+ *
35
+ * const context = await snap.request({
36
+ * method: 'snap_getInterfaceContext',
37
+ * params: {
38
+ * id: interfaceId,
39
+ * },
40
+ * })
41
+ *
42
+ * console.log(context)
43
+ * // {
44
+ * // key: 'value'
45
+ * // }
46
+ * ```
47
+ */
9
48
  exports.getInterfaceContextHandler = {
10
- methodNames: ['snap_getInterfaceContext'],
49
+ methodNames: [methodName],
11
50
  implementation: getInterfaceContextImplementation,
12
51
  hookNames,
13
52
  };
@@ -23,10 +62,17 @@ const GetInterfaceContextParametersStruct = (0, superstruct_1.object)({
23
62
  * function.
24
63
  * @param end - The `json-rpc-engine` "end" callback.
25
64
  * @param hooks - The RPC method hooks.
65
+ * @param hooks.hasPermission - The function to check if the Snap has a given
66
+ * permission.
26
67
  * @param hooks.getInterfaceContext - The function to get the interface context.
27
- * @returns Noting.
68
+ * @returns Nothing.
28
69
  */
29
- function getInterfaceContextImplementation(req, res, _next, end, { getInterfaceContext }) {
70
+ function getInterfaceContextImplementation(req, res, _next, end, { hasPermission, getInterfaceContext }) {
71
+ if (!utils_1.UI_PERMISSIONS.some(hasPermission)) {
72
+ return end(rpc_errors_1.providerErrors.unauthorized({
73
+ message: `This method can only be used if the Snap has one of the following permissions: ${utils_1.UI_PERMISSIONS.join(', ')}.`,
74
+ }));
75
+ }
30
76
  const { params } = req;
31
77
  try {
32
78
  const validatedParams = getValidatedParams(params);
@@ -1 +1 @@
1
- {"version":3,"file":"getInterfaceContext.cjs","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAQjD,uDAA4E;AAK5E,MAAM,SAAS,GAAsD;IACnE,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAUW,QAAA,0BAA0B,GAInC;IACF,WAAW,EAAE,CAAC,0BAA0B,CAAC;IACzC,cAAc,EAAE,iCAAiC;IACjD,SAAS;CACV,CAAC;AAEF,MAAM,mCAAmC,GAAG,IAAA,oBAAM,EAAC;IACjD,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,SAAS,iCAAiC,CACxC,GAAkD,EAClD,GAAsD,EACtD,KAAc,EACd,GAA6B,EAC7B,EAAE,mBAAmB,EAAkC;IAEvD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,GAAG,CAAC,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACvC,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,mCAAmC,CAAC,CAAC;IAC7D,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 { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n GetInterfaceContextParams,\n GetInterfaceContextResult,\n InterfaceContext,\n JsonRpcRequest,\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 type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<GetInterfaceContextMethodHooks> = {\n getInterfaceContext: true,\n};\n\nexport type GetInterfaceContextMethodHooks = {\n /**\n * @param id - The interface ID.\n * @returns The interface context.\n */\n getInterfaceContext: (id: string) => InterfaceContext | null;\n};\n\nexport const getInterfaceContextHandler: PermittedHandlerExport<\n GetInterfaceContextMethodHooks,\n GetInterfaceContextParameters,\n GetInterfaceContextResult\n> = {\n methodNames: ['snap_getInterfaceContext'],\n implementation: getInterfaceContextImplementation,\n hookNames,\n};\n\nconst GetInterfaceContextParametersStruct = object({\n id: string(),\n});\n\nexport type GetInterfaceContextParameters = InferMatching<\n typeof GetInterfaceContextParametersStruct,\n GetInterfaceContextParams\n>;\n\n/**\n * The `snap_getInterfaceContext` 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.getInterfaceContext - The function to get the interface context.\n * @returns Noting.\n */\nfunction getInterfaceContextImplementation(\n req: JsonRpcRequest<GetInterfaceContextParameters>,\n res: PendingJsonRpcResponse<GetInterfaceContextResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getInterfaceContext }: GetInterfaceContextMethodHooks,\n): void {\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n res.result = getInterfaceContext(id);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the getInterfaceContext method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated getInterfaceContext method parameter object.\n */\nfunction getValidatedParams(params: unknown): GetInterfaceContextParameters {\n try {\n return create(params, GetInterfaceContextParametersStruct);\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":"getInterfaceContext.cjs","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAQjE,uDAA4E;AAI5E,wCAA0C;AAE1C,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,SAAS,GAAsD;IACnE,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAgBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACU,QAAA,0BAA0B,GAAG;IACxC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,iCAAiC;IACjD,SAAS;CAKV,CAAC;AAEF,MAAM,mCAAmC,GAAG,IAAA,oBAAM,EAAC;IACjD,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,iCAAiC,CACxC,GAAkD,EAClD,GAAsD,EACtD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,mBAAmB,EAAkC;IAEtE,IAAI,CAAC,sBAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CACR,2BAAc,CAAC,YAAY,CAAC;YAC1B,OAAO,EAAE,kFAAkF,sBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACxH,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,GAAG,CAAC,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACvC,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,mCAAmC,CAAC,CAAC;IAC7D,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 GetInterfaceContextParams,\n GetInterfaceContextResult,\n InterfaceContext,\n JsonRpcRequest,\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 type { MethodHooksObject } from '../utils';\nimport { UI_PERMISSIONS } from '../utils';\n\nconst methodName = 'snap_getInterfaceContext';\n\nconst hookNames: MethodHooksObject<GetInterfaceContextMethodHooks> = {\n hasPermission: true,\n getInterfaceContext: true,\n};\n\nexport type GetInterfaceContextMethodHooks = {\n /**\n * @param permissionName - The name of the permission to check.\n * @returns Whether the Snap has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n\n /**\n * @param id - The interface ID.\n * @returns The interface context.\n */\n getInterfaceContext: (id: string) => InterfaceContext | null;\n};\n\n/**\n * Get the context of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)\n * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).\n *\n * @example\n * ```ts\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = await snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Hello, world!</Heading>\n * <Text>Welcome to my Snap homepage!</Text>\n * </Box>\n * ),\n * context: {\n * key: 'value'\n * }\n * },\n * })\n *\n * const context = await snap.request({\n * method: 'snap_getInterfaceContext',\n * params: {\n * id: interfaceId,\n * },\n * })\n *\n * console.log(context)\n * // {\n * // key: 'value'\n * // }\n * ```\n */\nexport const getInterfaceContextHandler = {\n methodNames: [methodName] as const,\n implementation: getInterfaceContextImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n GetInterfaceContextMethodHooks,\n GetInterfaceContextParameters,\n GetInterfaceContextResult\n>;\n\nconst GetInterfaceContextParametersStruct = object({\n id: string(),\n});\n\nexport type GetInterfaceContextParameters = InferMatching<\n typeof GetInterfaceContextParametersStruct,\n GetInterfaceContextParams\n>;\n\n/**\n * The `snap_getInterfaceContext` 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.hasPermission - The function to check if the Snap has a given\n * permission.\n * @param hooks.getInterfaceContext - The function to get the interface context.\n * @returns Nothing.\n */\nfunction getInterfaceContextImplementation(\n req: JsonRpcRequest<GetInterfaceContextParameters>,\n res: PendingJsonRpcResponse<GetInterfaceContextResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, getInterfaceContext }: GetInterfaceContextMethodHooks,\n): void {\n if (!UI_PERMISSIONS.some(hasPermission)) {\n return end(\n providerErrors.unauthorized({\n message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,\n }),\n );\n }\n\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n res.result = getInterfaceContext(id);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the getInterfaceContext method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated getInterfaceContext method parameter object.\n */\nfunction getValidatedParams(params: unknown): GetInterfaceContextParameters {\n try {\n return create(params, GetInterfaceContextParametersStruct);\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,19 +1,81 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
2
- import type { GetInterfaceContextParams, GetInterfaceContextResult, InterfaceContext } from "@metamask/snaps-sdk";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
+ import type { GetInterfaceContextParams, GetInterfaceContextResult, InterfaceContext, JsonRpcRequest } 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 GetInterfaceContextMethodHooks = {
7
+ /**
8
+ * @param permissionName - The name of the permission to check.
9
+ * @returns Whether the Snap has the permission.
10
+ */
11
+ hasPermission: (permissionName: string) => boolean;
5
12
  /**
6
13
  * @param id - The interface ID.
7
14
  * @returns The interface context.
8
15
  */
9
16
  getInterfaceContext: (id: string) => InterfaceContext | null;
10
17
  };
11
- export declare const getInterfaceContextHandler: PermittedHandlerExport<GetInterfaceContextMethodHooks, GetInterfaceContextParameters, GetInterfaceContextResult>;
18
+ /**
19
+ * Get the context of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)
20
+ * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
25
+ *
26
+ * const interfaceId = await snap.request({
27
+ * method: 'snap_createInterface',
28
+ * params: {
29
+ * ui: (
30
+ * <Box>
31
+ * <Heading>Hello, world!</Heading>
32
+ * <Text>Welcome to my Snap homepage!</Text>
33
+ * </Box>
34
+ * ),
35
+ * context: {
36
+ * key: 'value'
37
+ * }
38
+ * },
39
+ * })
40
+ *
41
+ * const context = await snap.request({
42
+ * method: 'snap_getInterfaceContext',
43
+ * params: {
44
+ * id: interfaceId,
45
+ * },
46
+ * })
47
+ *
48
+ * console.log(context)
49
+ * // {
50
+ * // key: 'value'
51
+ * // }
52
+ * ```
53
+ */
54
+ export declare const getInterfaceContextHandler: {
55
+ methodNames: ["snap_getInterfaceContext"];
56
+ implementation: typeof getInterfaceContextImplementation;
57
+ hookNames: MethodHooksObject<GetInterfaceContextMethodHooks>;
58
+ };
12
59
  declare const GetInterfaceContextParametersStruct: import("@metamask/superstruct").Struct<{
13
60
  id: string;
14
61
  }, {
15
62
  id: import("@metamask/superstruct").Struct<string, null>;
16
63
  }>;
17
64
  export type GetInterfaceContextParameters = InferMatching<typeof GetInterfaceContextParametersStruct, GetInterfaceContextParams>;
65
+ /**
66
+ * The `snap_getInterfaceContext` method implementation.
67
+ *
68
+ * @param req - The JSON-RPC request object.
69
+ * @param res - The JSON-RPC response object.
70
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
71
+ * function.
72
+ * @param end - The `json-rpc-engine` "end" callback.
73
+ * @param hooks - The RPC method hooks.
74
+ * @param hooks.hasPermission - The function to check if the Snap has a given
75
+ * permission.
76
+ * @param hooks.getInterfaceContext - The function to get the interface context.
77
+ * @returns Nothing.
78
+ */
79
+ declare function getInterfaceContextImplementation(req: JsonRpcRequest<GetInterfaceContextParameters>, res: PendingJsonRpcResponse<GetInterfaceContextResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, getInterfaceContext }: GetInterfaceContextMethodHooks): void;
18
80
  export {};
19
81
  //# sourceMappingURL=getInterfaceContext.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInterfaceContext.d.cts","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAEjB,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAU3D,MAAM,MAAM,8BAA8B,GAAG;IAC3C;;;OAGG;IACH,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;CAC9D,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAC7D,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,CAK1B,CAAC;AAEF,QAAA,MAAM,mCAAmC;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,aAAa,CACvD,OAAO,mCAAmC,EAC1C,yBAAyB,CAC1B,CAAC"}
1
+ {"version":3,"file":"getInterfaceContext.d.cts","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACf,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAUlD,MAAM,MAAM,8BAA8B,GAAG;IAC3C;;;OAGG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;OAGG;IACH,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;CAC9D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,0BAA0B;;;;CAQtC,CAAC;AAEF,QAAA,MAAM,mCAAmC;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,aAAa,CACvD,OAAO,mCAAmC,EAC1C,yBAAyB,CAC1B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,iCAAiC,CACxC,GAAG,EAAE,cAAc,CAAC,6BAA6B,CAAC,EAClD,GAAG,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EACtD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,8BAA8B,GACrE,IAAI,CAsBN"}
@@ -1,19 +1,81 @@
1
- import type { PermittedHandlerExport } from "@metamask/permission-controller";
2
- import type { GetInterfaceContextParams, GetInterfaceContextResult, InterfaceContext } from "@metamask/snaps-sdk";
1
+ import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
+ import type { GetInterfaceContextParams, GetInterfaceContextResult, InterfaceContext, JsonRpcRequest } 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 GetInterfaceContextMethodHooks = {
7
+ /**
8
+ * @param permissionName - The name of the permission to check.
9
+ * @returns Whether the Snap has the permission.
10
+ */
11
+ hasPermission: (permissionName: string) => boolean;
5
12
  /**
6
13
  * @param id - The interface ID.
7
14
  * @returns The interface context.
8
15
  */
9
16
  getInterfaceContext: (id: string) => InterfaceContext | null;
10
17
  };
11
- export declare const getInterfaceContextHandler: PermittedHandlerExport<GetInterfaceContextMethodHooks, GetInterfaceContextParameters, GetInterfaceContextResult>;
18
+ /**
19
+ * Get the context of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)
20
+ * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
25
+ *
26
+ * const interfaceId = await snap.request({
27
+ * method: 'snap_createInterface',
28
+ * params: {
29
+ * ui: (
30
+ * <Box>
31
+ * <Heading>Hello, world!</Heading>
32
+ * <Text>Welcome to my Snap homepage!</Text>
33
+ * </Box>
34
+ * ),
35
+ * context: {
36
+ * key: 'value'
37
+ * }
38
+ * },
39
+ * })
40
+ *
41
+ * const context = await snap.request({
42
+ * method: 'snap_getInterfaceContext',
43
+ * params: {
44
+ * id: interfaceId,
45
+ * },
46
+ * })
47
+ *
48
+ * console.log(context)
49
+ * // {
50
+ * // key: 'value'
51
+ * // }
52
+ * ```
53
+ */
54
+ export declare const getInterfaceContextHandler: {
55
+ methodNames: ["snap_getInterfaceContext"];
56
+ implementation: typeof getInterfaceContextImplementation;
57
+ hookNames: MethodHooksObject<GetInterfaceContextMethodHooks>;
58
+ };
12
59
  declare const GetInterfaceContextParametersStruct: import("@metamask/superstruct").Struct<{
13
60
  id: string;
14
61
  }, {
15
62
  id: import("@metamask/superstruct").Struct<string, null>;
16
63
  }>;
17
64
  export type GetInterfaceContextParameters = InferMatching<typeof GetInterfaceContextParametersStruct, GetInterfaceContextParams>;
65
+ /**
66
+ * The `snap_getInterfaceContext` method implementation.
67
+ *
68
+ * @param req - The JSON-RPC request object.
69
+ * @param res - The JSON-RPC response object.
70
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
71
+ * function.
72
+ * @param end - The `json-rpc-engine` "end" callback.
73
+ * @param hooks - The RPC method hooks.
74
+ * @param hooks.hasPermission - The function to check if the Snap has a given
75
+ * permission.
76
+ * @param hooks.getInterfaceContext - The function to get the interface context.
77
+ * @returns Nothing.
78
+ */
79
+ declare function getInterfaceContextImplementation(req: JsonRpcRequest<GetInterfaceContextParameters>, res: PendingJsonRpcResponse<GetInterfaceContextResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, getInterfaceContext }: GetInterfaceContextMethodHooks): void;
18
80
  export {};
19
81
  //# sourceMappingURL=getInterfaceContext.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInterfaceContext.d.mts","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAEjB,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAU3D,MAAM,MAAM,8BAA8B,GAAG;IAC3C;;;OAGG;IACH,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;CAC9D,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAC7D,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,CAK1B,CAAC;AAEF,QAAA,MAAM,mCAAmC;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,aAAa,CACvD,OAAO,mCAAmC,EAC1C,yBAAyB,CAC1B,CAAC"}
1
+ {"version":3,"file":"getInterfaceContext.d.mts","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACf,4BAA4B;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAUlD,MAAM,MAAM,8BAA8B,GAAG;IAC3C;;;OAGG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;OAGG;IACH,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;CAC9D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,0BAA0B;;;;CAQtC,CAAC;AAEF,QAAA,MAAM,mCAAmC;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,aAAa,CACvD,OAAO,mCAAmC,EAC1C,yBAAyB,CAC1B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,iCAAiC,CACxC,GAAG,EAAE,cAAc,CAAC,6BAA6B,CAAC,EAClD,GAAG,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EACtD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,8BAA8B,GACrE,IAAI,CAsBN"}
@@ -1,10 +1,49 @@
1
- import { rpcErrors } from "@metamask/rpc-errors";
1
+ import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
2
2
  import { StructError, create, object, string } from "@metamask/superstruct";
3
+ import { UI_PERMISSIONS } from "../utils.mjs";
4
+ const methodName = 'snap_getInterfaceContext';
3
5
  const hookNames = {
6
+ hasPermission: true,
4
7
  getInterfaceContext: true,
5
8
  };
9
+ /**
10
+ * Get the context of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)
11
+ * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
16
+ *
17
+ * const interfaceId = await snap.request({
18
+ * method: 'snap_createInterface',
19
+ * params: {
20
+ * ui: (
21
+ * <Box>
22
+ * <Heading>Hello, world!</Heading>
23
+ * <Text>Welcome to my Snap homepage!</Text>
24
+ * </Box>
25
+ * ),
26
+ * context: {
27
+ * key: 'value'
28
+ * }
29
+ * },
30
+ * })
31
+ *
32
+ * const context = await snap.request({
33
+ * method: 'snap_getInterfaceContext',
34
+ * params: {
35
+ * id: interfaceId,
36
+ * },
37
+ * })
38
+ *
39
+ * console.log(context)
40
+ * // {
41
+ * // key: 'value'
42
+ * // }
43
+ * ```
44
+ */
6
45
  export const getInterfaceContextHandler = {
7
- methodNames: ['snap_getInterfaceContext'],
46
+ methodNames: [methodName],
8
47
  implementation: getInterfaceContextImplementation,
9
48
  hookNames,
10
49
  };
@@ -20,10 +59,17 @@ const GetInterfaceContextParametersStruct = object({
20
59
  * function.
21
60
  * @param end - The `json-rpc-engine` "end" callback.
22
61
  * @param hooks - The RPC method hooks.
62
+ * @param hooks.hasPermission - The function to check if the Snap has a given
63
+ * permission.
23
64
  * @param hooks.getInterfaceContext - The function to get the interface context.
24
- * @returns Noting.
65
+ * @returns Nothing.
25
66
  */
26
- function getInterfaceContextImplementation(req, res, _next, end, { getInterfaceContext }) {
67
+ function getInterfaceContextImplementation(req, res, _next, end, { hasPermission, getInterfaceContext }) {
68
+ if (!UI_PERMISSIONS.some(hasPermission)) {
69
+ return end(providerErrors.unauthorized({
70
+ message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,
71
+ }));
72
+ }
27
73
  const { params } = req;
28
74
  try {
29
75
  const validatedParams = getValidatedParams(params);
@@ -1 +1 @@
1
- {"version":3,"file":"getInterfaceContext.mjs","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAQjD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B;AAK5E,MAAM,SAAS,GAAsD;IACnE,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAUF,MAAM,CAAC,MAAM,0BAA0B,GAInC;IACF,WAAW,EAAE,CAAC,0BAA0B,CAAC;IACzC,cAAc,EAAE,iCAAiC;IACjD,SAAS;CACV,CAAC;AAEF,MAAM,mCAAmC,GAAG,MAAM,CAAC;IACjD,EAAE,EAAE,MAAM,EAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,SAAS,iCAAiC,CACxC,GAAkD,EAClD,GAAsD,EACtD,KAAc,EACd,GAA6B,EAC7B,EAAE,mBAAmB,EAAkC;IAEvD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,GAAG,CAAC,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACvC,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,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;IAC7D,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 { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n GetInterfaceContextParams,\n GetInterfaceContextResult,\n InterfaceContext,\n JsonRpcRequest,\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 type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<GetInterfaceContextMethodHooks> = {\n getInterfaceContext: true,\n};\n\nexport type GetInterfaceContextMethodHooks = {\n /**\n * @param id - The interface ID.\n * @returns The interface context.\n */\n getInterfaceContext: (id: string) => InterfaceContext | null;\n};\n\nexport const getInterfaceContextHandler: PermittedHandlerExport<\n GetInterfaceContextMethodHooks,\n GetInterfaceContextParameters,\n GetInterfaceContextResult\n> = {\n methodNames: ['snap_getInterfaceContext'],\n implementation: getInterfaceContextImplementation,\n hookNames,\n};\n\nconst GetInterfaceContextParametersStruct = object({\n id: string(),\n});\n\nexport type GetInterfaceContextParameters = InferMatching<\n typeof GetInterfaceContextParametersStruct,\n GetInterfaceContextParams\n>;\n\n/**\n * The `snap_getInterfaceContext` 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.getInterfaceContext - The function to get the interface context.\n * @returns Noting.\n */\nfunction getInterfaceContextImplementation(\n req: JsonRpcRequest<GetInterfaceContextParameters>,\n res: PendingJsonRpcResponse<GetInterfaceContextResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getInterfaceContext }: GetInterfaceContextMethodHooks,\n): void {\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n res.result = getInterfaceContext(id);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the getInterfaceContext method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated getInterfaceContext method parameter object.\n */\nfunction getValidatedParams(params: unknown): GetInterfaceContextParameters {\n try {\n return create(params, GetInterfaceContextParametersStruct);\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":"getInterfaceContext.mjs","sourceRoot":"","sources":["../../src/permitted/getInterfaceContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAQjE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B;AAI5E,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAE1C,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,SAAS,GAAsD;IACnE,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAgBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,iCAAiC;IACjD,SAAS;CAKV,CAAC;AAEF,MAAM,mCAAmC,GAAG,MAAM,CAAC;IACjD,EAAE,EAAE,MAAM,EAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,iCAAiC,CACxC,GAAkD,EAClD,GAAsD,EACtD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,mBAAmB,EAAkC;IAEtE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CACR,cAAc,CAAC,YAAY,CAAC;YAC1B,OAAO,EAAE,kFAAkF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACxH,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,GAAG,CAAC,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACvC,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,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;IAC7D,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 GetInterfaceContextParams,\n GetInterfaceContextResult,\n InterfaceContext,\n JsonRpcRequest,\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 type { MethodHooksObject } from '../utils';\nimport { UI_PERMISSIONS } from '../utils';\n\nconst methodName = 'snap_getInterfaceContext';\n\nconst hookNames: MethodHooksObject<GetInterfaceContextMethodHooks> = {\n hasPermission: true,\n getInterfaceContext: true,\n};\n\nexport type GetInterfaceContextMethodHooks = {\n /**\n * @param permissionName - The name of the permission to check.\n * @returns Whether the Snap has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n\n /**\n * @param id - The interface ID.\n * @returns The interface context.\n */\n getInterfaceContext: (id: string) => InterfaceContext | null;\n};\n\n/**\n * Get the context of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)\n * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).\n *\n * @example\n * ```ts\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = await snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Hello, world!</Heading>\n * <Text>Welcome to my Snap homepage!</Text>\n * </Box>\n * ),\n * context: {\n * key: 'value'\n * }\n * },\n * })\n *\n * const context = await snap.request({\n * method: 'snap_getInterfaceContext',\n * params: {\n * id: interfaceId,\n * },\n * })\n *\n * console.log(context)\n * // {\n * // key: 'value'\n * // }\n * ```\n */\nexport const getInterfaceContextHandler = {\n methodNames: [methodName] as const,\n implementation: getInterfaceContextImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n GetInterfaceContextMethodHooks,\n GetInterfaceContextParameters,\n GetInterfaceContextResult\n>;\n\nconst GetInterfaceContextParametersStruct = object({\n id: string(),\n});\n\nexport type GetInterfaceContextParameters = InferMatching<\n typeof GetInterfaceContextParametersStruct,\n GetInterfaceContextParams\n>;\n\n/**\n * The `snap_getInterfaceContext` 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.hasPermission - The function to check if the Snap has a given\n * permission.\n * @param hooks.getInterfaceContext - The function to get the interface context.\n * @returns Nothing.\n */\nfunction getInterfaceContextImplementation(\n req: JsonRpcRequest<GetInterfaceContextParameters>,\n res: PendingJsonRpcResponse<GetInterfaceContextResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, getInterfaceContext }: GetInterfaceContextMethodHooks,\n): void {\n if (!UI_PERMISSIONS.some(hasPermission)) {\n return end(\n providerErrors.unauthorized({\n message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,\n }),\n );\n }\n\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n res.result = getInterfaceContext(id);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the getInterfaceContext method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated getInterfaceContext method parameter object.\n */\nfunction getValidatedParams(params: unknown): GetInterfaceContextParameters {\n try {\n return create(params, GetInterfaceContextParametersStruct);\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"]}
@@ -3,11 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInterfaceStateHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const superstruct_1 = require("@metamask/superstruct");
6
+ const utils_1 = require("../utils.cjs");
7
+ const methodName = 'snap_getInterfaceState';
6
8
  const hookNames = {
9
+ hasPermission: true,
7
10
  getInterfaceState: true,
8
11
  };
12
+ /**
13
+ * Get the form state of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)
14
+ * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const state = await snap.request({
19
+ * method: 'snap_getInterfaceState',
20
+ * params: {
21
+ * id: interfaceId,
22
+ * },
23
+ * });
24
+ * ```
25
+ */
9
26
  exports.getInterfaceStateHandler = {
10
- methodNames: ['snap_getInterfaceState'],
27
+ methodNames: [methodName],
11
28
  implementation: getGetInterfaceStateImplementation,
12
29
  hookNames,
13
30
  };
@@ -23,10 +40,17 @@ const GetInterfaceStateParametersStruct = (0, superstruct_1.object)({
23
40
  * function.
24
41
  * @param end - The `json-rpc-engine` "end" callback.
25
42
  * @param hooks - The RPC method hooks.
43
+ * @param hooks.hasPermission - The function to check if the Snap has a given
44
+ * permission.
26
45
  * @param hooks.getInterfaceState - The function to get the interface state.
27
- * @returns Noting.
46
+ * @returns Nothing.
28
47
  */
29
- function getGetInterfaceStateImplementation(req, res, _next, end, { getInterfaceState }) {
48
+ function getGetInterfaceStateImplementation(req, res, _next, end, { hasPermission, getInterfaceState }) {
49
+ if (!utils_1.UI_PERMISSIONS.some(hasPermission)) {
50
+ return end(rpc_errors_1.providerErrors.unauthorized({
51
+ message: `This method can only be used if the Snap has one of the following permissions: ${utils_1.UI_PERMISSIONS.join(', ')}.`,
52
+ }));
53
+ }
30
54
  const { params } = req;
31
55
  try {
32
56
  const validatedParams = getValidatedParams(params);
@@ -1 +1 @@
1
- {"version":3,"file":"getInterfaceState.cjs","sourceRoot":"","sources":["../../src/permitted/getInterfaceState.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAQjD,uDAA4E;AAK5E,MAAM,SAAS,GAAoD;IACjE,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAUW,QAAA,wBAAwB,GAIjC;IACF,WAAW,EAAE,CAAC,wBAAwB,CAAC;IACvC,cAAc,EAAE,kCAAkC;IAClD,SAAS;CACV,CAAC;AAEF,MAAM,iCAAiC,GAAG,IAAA,oBAAM,EAAC;IAC/C,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,SAAS,kCAAkC,CACzC,GAAgD,EAChD,GAAoD,EACpD,KAAc,EACd,GAA6B,EAC7B,EAAE,iBAAiB,EAAgC;IAEnD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACrC,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,iCAAiC,CAAC,CAAC;IAC3D,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 { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n GetInterfaceStateParams,\n GetInterfaceStateResult,\n InterfaceState,\n JsonRpcRequest,\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 type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<GetInterfaceStateMethodHooks> = {\n getInterfaceState: true,\n};\n\nexport type GetInterfaceStateMethodHooks = {\n /**\n * @param id - The interface ID.\n * @returns The interface state.\n */\n getInterfaceState: (id: string) => InterfaceState;\n};\n\nexport const getInterfaceStateHandler: PermittedHandlerExport<\n GetInterfaceStateMethodHooks,\n GetInterfaceStateParameters,\n GetInterfaceStateResult\n> = {\n methodNames: ['snap_getInterfaceState'],\n implementation: getGetInterfaceStateImplementation,\n hookNames,\n};\n\nconst GetInterfaceStateParametersStruct = object({\n id: string(),\n});\n\nexport type GetInterfaceStateParameters = InferMatching<\n typeof GetInterfaceStateParametersStruct,\n GetInterfaceStateParams\n>;\n\n/**\n * The `snap_getInterfaceState` 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.getInterfaceState - The function to get the interface state.\n * @returns Noting.\n */\nfunction getGetInterfaceStateImplementation(\n req: JsonRpcRequest<GetInterfaceStateParameters>,\n res: PendingJsonRpcResponse<GetInterfaceStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getInterfaceState }: GetInterfaceStateMethodHooks,\n): void {\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n res.result = getInterfaceState(id);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the getInterfaceState method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated getInterfaceState method parameter object.\n */\nfunction getValidatedParams(params: unknown): GetInterfaceStateParameters {\n try {\n return create(params, GetInterfaceStateParametersStruct);\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":"getInterfaceState.cjs","sourceRoot":"","sources":["../../src/permitted/getInterfaceState.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AAQjE,uDAA4E;AAI5E,wCAA0C;AAE1C,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAE5C,MAAM,SAAS,GAAoD;IACjE,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAgBF;;;;;;;;;;;;;GAaG;AACU,QAAA,wBAAwB,GAAG;IACtC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,kCAAkC;IAClD,SAAS;CAKV,CAAC;AAEF,MAAM,iCAAiC,GAAG,IAAA,oBAAM,EAAC;IAC/C,EAAE,EAAE,IAAA,oBAAM,GAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,kCAAkC,CACzC,GAAgD,EAChD,GAAoD,EACpD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,iBAAiB,EAAgC;IAElE,IAAI,CAAC,sBAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CACR,2BAAc,CAAC,YAAY,CAAC;YAC1B,OAAO,EAAE,kFAAkF,sBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACxH,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC;QAE/B,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACrC,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,iCAAiC,CAAC,CAAC;IAC3D,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 GetInterfaceStateParams,\n GetInterfaceStateResult,\n InterfaceState,\n JsonRpcRequest,\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 type { MethodHooksObject } from '../utils';\nimport { UI_PERMISSIONS } from '../utils';\n\nconst methodName = 'snap_getInterfaceState';\n\nconst hookNames: MethodHooksObject<GetInterfaceStateMethodHooks> = {\n hasPermission: true,\n getInterfaceState: true,\n};\n\nexport type GetInterfaceStateMethodHooks = {\n /**\n * @param permissionName - The name of the permission to check.\n * @returns Whether the Snap has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n\n /**\n * @param id - The interface ID.\n * @returns The interface state.\n */\n getInterfaceState: (id: string) => InterfaceState;\n};\n\n/**\n * Get the form state of an [interface](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/)\n * created by [`snap_createInterface`](https://docs.metamask.io/snaps/reference/snaps-api/snap_createinterface).\n *\n * @example\n * ```ts\n * const state = await snap.request({\n * method: 'snap_getInterfaceState',\n * params: {\n * id: interfaceId,\n * },\n * });\n * ```\n */\nexport const getInterfaceStateHandler = {\n methodNames: [methodName] as const,\n implementation: getGetInterfaceStateImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n GetInterfaceStateMethodHooks,\n GetInterfaceStateParameters,\n GetInterfaceStateResult\n>;\n\nconst GetInterfaceStateParametersStruct = object({\n id: string(),\n});\n\nexport type GetInterfaceStateParameters = InferMatching<\n typeof GetInterfaceStateParametersStruct,\n GetInterfaceStateParams\n>;\n\n/**\n * The `snap_getInterfaceState` 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.hasPermission - The function to check if the Snap has a given\n * permission.\n * @param hooks.getInterfaceState - The function to get the interface state.\n * @returns Nothing.\n */\nfunction getGetInterfaceStateImplementation(\n req: JsonRpcRequest<GetInterfaceStateParameters>,\n res: PendingJsonRpcResponse<GetInterfaceStateResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, getInterfaceState }: GetInterfaceStateMethodHooks,\n): void {\n if (!UI_PERMISSIONS.some(hasPermission)) {\n return end(\n providerErrors.unauthorized({\n message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,\n }),\n );\n }\n\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id } = validatedParams;\n\n res.result = getInterfaceState(id);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the getInterfaceState method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated getInterfaceState method parameter object.\n */\nfunction getValidatedParams(params: unknown): GetInterfaceStateParameters {\n try {\n return create(params, GetInterfaceStateParametersStruct);\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"]}