@metamask/snaps-rpc-methods 15.1.1 → 16.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 (344) hide show
  1. package/CHANGELOG.md +27 -4
  2. package/dist/index.cjs +1 -4
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +1 -2
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +1 -2
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +1 -2
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/permissions.cjs +18 -8
  11. package/dist/permissions.cjs.map +1 -1
  12. package/dist/permissions.d.cts +3 -2
  13. package/dist/permissions.d.cts.map +1 -1
  14. package/dist/permissions.d.mts +3 -2
  15. package/dist/permissions.d.mts.map +1 -1
  16. package/dist/permissions.mjs +17 -7
  17. package/dist/permissions.mjs.map +1 -1
  18. package/dist/permitted/cancelBackgroundEvent.cjs +10 -14
  19. package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
  20. package/dist/permitted/cancelBackgroundEvent.d.cts +9 -12
  21. package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
  22. package/dist/permitted/cancelBackgroundEvent.d.mts +9 -12
  23. package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
  24. package/dist/permitted/cancelBackgroundEvent.mjs +10 -14
  25. package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
  26. package/dist/permitted/clearState.cjs +10 -16
  27. package/dist/permitted/clearState.cjs.map +1 -1
  28. package/dist/permitted/clearState.d.cts +9 -23
  29. package/dist/permitted/clearState.d.cts.map +1 -1
  30. package/dist/permitted/clearState.d.mts +9 -23
  31. package/dist/permitted/clearState.d.mts.map +1 -1
  32. package/dist/permitted/clearState.mjs +10 -16
  33. package/dist/permitted/clearState.mjs.map +1 -1
  34. package/dist/permitted/closeWebSocket.cjs +7 -14
  35. package/dist/permitted/closeWebSocket.cjs.map +1 -1
  36. package/dist/permitted/closeWebSocket.d.cts +9 -12
  37. package/dist/permitted/closeWebSocket.d.cts.map +1 -1
  38. package/dist/permitted/closeWebSocket.d.mts +9 -12
  39. package/dist/permitted/closeWebSocket.d.mts.map +1 -1
  40. package/dist/permitted/closeWebSocket.mjs +7 -14
  41. package/dist/permitted/closeWebSocket.mjs.map +1 -1
  42. package/dist/permitted/createInterface.cjs +11 -15
  43. package/dist/permitted/createInterface.cjs.map +1 -1
  44. package/dist/permitted/createInterface.d.cts +23 -37
  45. package/dist/permitted/createInterface.d.cts.map +1 -1
  46. package/dist/permitted/createInterface.d.mts +23 -37
  47. package/dist/permitted/createInterface.d.mts.map +1 -1
  48. package/dist/permitted/createInterface.mjs +11 -15
  49. package/dist/permitted/createInterface.mjs.map +1 -1
  50. package/dist/permitted/endTrace.cjs +4 -6
  51. package/dist/permitted/endTrace.cjs.map +1 -1
  52. package/dist/permitted/endTrace.d.cts +8 -11
  53. package/dist/permitted/endTrace.d.cts.map +1 -1
  54. package/dist/permitted/endTrace.d.mts +8 -11
  55. package/dist/permitted/endTrace.d.mts.map +1 -1
  56. package/dist/permitted/endTrace.mjs +4 -6
  57. package/dist/permitted/endTrace.mjs.map +1 -1
  58. package/dist/permitted/getAllSnaps.cjs +5 -11
  59. package/dist/permitted/getAllSnaps.cjs.map +1 -1
  60. package/dist/permitted/getAllSnaps.d.cts +10 -14
  61. package/dist/permitted/getAllSnaps.d.cts.map +1 -1
  62. package/dist/permitted/getAllSnaps.d.mts +10 -14
  63. package/dist/permitted/getAllSnaps.d.mts.map +1 -1
  64. package/dist/permitted/getAllSnaps.mjs +5 -11
  65. package/dist/permitted/getAllSnaps.mjs.map +1 -1
  66. package/dist/permitted/getBackgroundEvents.cjs +8 -15
  67. package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
  68. package/dist/permitted/getBackgroundEvents.d.cts +10 -13
  69. package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
  70. package/dist/permitted/getBackgroundEvents.d.mts +10 -13
  71. package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
  72. package/dist/permitted/getBackgroundEvents.mjs +8 -15
  73. package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
  74. package/dist/permitted/getClientStatus.cjs +5 -6
  75. package/dist/permitted/getClientStatus.cjs.map +1 -1
  76. package/dist/permitted/getClientStatus.d.cts +17 -18
  77. package/dist/permitted/getClientStatus.d.cts.map +1 -1
  78. package/dist/permitted/getClientStatus.d.mts +17 -18
  79. package/dist/permitted/getClientStatus.d.mts.map +1 -1
  80. package/dist/permitted/getClientStatus.mjs +5 -6
  81. package/dist/permitted/getClientStatus.mjs.map +1 -1
  82. package/dist/permitted/getFile.cjs +7 -11
  83. package/dist/permitted/getFile.cjs.map +1 -1
  84. package/dist/permitted/getFile.d.cts +8 -10
  85. package/dist/permitted/getFile.d.cts.map +1 -1
  86. package/dist/permitted/getFile.d.mts +8 -10
  87. package/dist/permitted/getFile.d.mts.map +1 -1
  88. package/dist/permitted/getFile.mjs +7 -11
  89. package/dist/permitted/getFile.mjs.map +1 -1
  90. package/dist/permitted/getInterfaceContext.cjs +12 -15
  91. package/dist/permitted/getInterfaceContext.cjs.map +1 -1
  92. package/dist/permitted/getInterfaceContext.d.cts +9 -21
  93. package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
  94. package/dist/permitted/getInterfaceContext.d.mts +9 -21
  95. package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
  96. package/dist/permitted/getInterfaceContext.mjs +12 -15
  97. package/dist/permitted/getInterfaceContext.mjs.map +1 -1
  98. package/dist/permitted/getInterfaceState.cjs +11 -15
  99. package/dist/permitted/getInterfaceState.cjs.map +1 -1
  100. package/dist/permitted/getInterfaceState.d.cts +9 -21
  101. package/dist/permitted/getInterfaceState.d.cts.map +1 -1
  102. package/dist/permitted/getInterfaceState.d.mts +9 -21
  103. package/dist/permitted/getInterfaceState.d.mts.map +1 -1
  104. package/dist/permitted/getInterfaceState.mjs +11 -15
  105. package/dist/permitted/getInterfaceState.mjs.map +1 -1
  106. package/dist/permitted/getSnaps.cjs +6 -12
  107. package/dist/permitted/getSnaps.cjs.map +1 -1
  108. package/dist/permitted/getSnaps.d.cts +11 -14
  109. package/dist/permitted/getSnaps.d.cts.map +1 -1
  110. package/dist/permitted/getSnaps.d.mts +11 -14
  111. package/dist/permitted/getSnaps.d.mts.map +1 -1
  112. package/dist/permitted/getSnaps.mjs +6 -12
  113. package/dist/permitted/getSnaps.mjs.map +1 -1
  114. package/dist/permitted/getState.cjs +9 -11
  115. package/dist/permitted/getState.cjs.map +1 -1
  116. package/dist/permitted/getState.d.cts +17 -28
  117. package/dist/permitted/getState.d.cts.map +1 -1
  118. package/dist/permitted/getState.d.mts +17 -28
  119. package/dist/permitted/getState.d.mts.map +1 -1
  120. package/dist/permitted/getState.mjs +9 -11
  121. package/dist/permitted/getState.mjs.map +1 -1
  122. package/dist/permitted/getWebSockets.cjs +11 -14
  123. package/dist/permitted/getWebSockets.cjs.map +1 -1
  124. package/dist/permitted/getWebSockets.d.cts +10 -13
  125. package/dist/permitted/getWebSockets.d.cts.map +1 -1
  126. package/dist/permitted/getWebSockets.d.mts +10 -13
  127. package/dist/permitted/getWebSockets.d.mts.map +1 -1
  128. package/dist/permitted/getWebSockets.mjs +11 -14
  129. package/dist/permitted/getWebSockets.mjs.map +1 -1
  130. package/dist/permitted/index.cjs +0 -1
  131. package/dist/permitted/index.cjs.map +1 -1
  132. package/dist/permitted/index.d.cts +29 -25
  133. package/dist/permitted/index.d.cts.map +1 -1
  134. package/dist/permitted/index.d.mts +29 -25
  135. package/dist/permitted/index.d.mts.map +1 -1
  136. package/dist/permitted/index.mjs +0 -1
  137. package/dist/permitted/index.mjs.map +1 -1
  138. package/dist/permitted/invokeKeyring.cjs +12 -13
  139. package/dist/permitted/invokeKeyring.cjs.map +1 -1
  140. package/dist/permitted/invokeKeyring.d.cts +17 -16
  141. package/dist/permitted/invokeKeyring.d.cts.map +1 -1
  142. package/dist/permitted/invokeKeyring.d.mts +17 -16
  143. package/dist/permitted/invokeKeyring.d.mts.map +1 -1
  144. package/dist/permitted/invokeKeyring.mjs +12 -13
  145. package/dist/permitted/invokeKeyring.mjs.map +1 -1
  146. package/dist/permitted/invokeSnapSugar.cjs +6 -10
  147. package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
  148. package/dist/permitted/invokeSnapSugar.d.cts +9 -12
  149. package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
  150. package/dist/permitted/invokeSnapSugar.d.mts +9 -12
  151. package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
  152. package/dist/permitted/invokeSnapSugar.mjs +6 -10
  153. package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
  154. package/dist/permitted/listEntropySources.cjs +28 -12
  155. package/dist/permitted/listEntropySources.cjs.map +1 -1
  156. package/dist/permitted/listEntropySources.d.cts +12 -23
  157. package/dist/permitted/listEntropySources.d.cts.map +1 -1
  158. package/dist/permitted/listEntropySources.d.mts +12 -23
  159. package/dist/permitted/listEntropySources.d.mts.map +1 -1
  160. package/dist/permitted/listEntropySources.mjs +28 -12
  161. package/dist/permitted/listEntropySources.mjs.map +1 -1
  162. package/dist/permitted/middleware.cjs +70 -20
  163. package/dist/permitted/middleware.cjs.map +1 -1
  164. package/dist/permitted/middleware.d.cts +5 -2
  165. package/dist/permitted/middleware.d.cts.map +1 -1
  166. package/dist/permitted/middleware.d.mts +5 -2
  167. package/dist/permitted/middleware.d.mts.map +1 -1
  168. package/dist/permitted/middleware.mjs +70 -20
  169. package/dist/permitted/middleware.mjs.map +1 -1
  170. package/dist/permitted/openWebSocket.cjs +7 -14
  171. package/dist/permitted/openWebSocket.cjs.map +1 -1
  172. package/dist/permitted/openWebSocket.d.cts +9 -12
  173. package/dist/permitted/openWebSocket.d.cts.map +1 -1
  174. package/dist/permitted/openWebSocket.d.mts +9 -12
  175. package/dist/permitted/openWebSocket.d.mts.map +1 -1
  176. package/dist/permitted/openWebSocket.mjs +7 -14
  177. package/dist/permitted/openWebSocket.mjs.map +1 -1
  178. package/dist/permitted/requestSnaps.cjs +14 -19
  179. package/dist/permitted/requestSnaps.cjs.map +1 -1
  180. package/dist/permitted/requestSnaps.d.cts +9 -36
  181. package/dist/permitted/requestSnaps.d.cts.map +1 -1
  182. package/dist/permitted/requestSnaps.d.mts +9 -36
  183. package/dist/permitted/requestSnaps.d.mts.map +1 -1
  184. package/dist/permitted/requestSnaps.mjs +15 -20
  185. package/dist/permitted/requestSnaps.mjs.map +1 -1
  186. package/dist/permitted/resolveInterface.cjs +11 -15
  187. package/dist/permitted/resolveInterface.cjs.map +1 -1
  188. package/dist/permitted/resolveInterface.d.cts +12 -24
  189. package/dist/permitted/resolveInterface.d.cts.map +1 -1
  190. package/dist/permitted/resolveInterface.d.mts +12 -24
  191. package/dist/permitted/resolveInterface.d.mts.map +1 -1
  192. package/dist/permitted/resolveInterface.mjs +11 -15
  193. package/dist/permitted/resolveInterface.mjs.map +1 -1
  194. package/dist/permitted/scheduleBackgroundEvent.cjs +11 -14
  195. package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
  196. package/dist/permitted/scheduleBackgroundEvent.d.cts +10 -17
  197. package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
  198. package/dist/permitted/scheduleBackgroundEvent.d.mts +10 -17
  199. package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
  200. package/dist/permitted/scheduleBackgroundEvent.mjs +11 -14
  201. package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
  202. package/dist/permitted/sendWebSocketMessage.cjs +10 -14
  203. package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
  204. package/dist/permitted/sendWebSocketMessage.d.cts +9 -12
  205. package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
  206. package/dist/permitted/sendWebSocketMessage.d.mts +9 -12
  207. package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
  208. package/dist/permitted/sendWebSocketMessage.mjs +10 -14
  209. package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
  210. package/dist/permitted/setState.cjs +18 -21
  211. package/dist/permitted/setState.cjs.map +1 -1
  212. package/dist/permitted/setState.d.cts +18 -45
  213. package/dist/permitted/setState.d.cts.map +1 -1
  214. package/dist/permitted/setState.d.mts +18 -45
  215. package/dist/permitted/setState.d.mts.map +1 -1
  216. package/dist/permitted/setState.mjs +18 -21
  217. package/dist/permitted/setState.mjs.map +1 -1
  218. package/dist/permitted/startTrace.cjs +4 -6
  219. package/dist/permitted/startTrace.cjs.map +1 -1
  220. package/dist/permitted/startTrace.d.cts +8 -11
  221. package/dist/permitted/startTrace.d.cts.map +1 -1
  222. package/dist/permitted/startTrace.d.mts +8 -11
  223. package/dist/permitted/startTrace.d.mts.map +1 -1
  224. package/dist/permitted/startTrace.mjs +4 -6
  225. package/dist/permitted/startTrace.mjs.map +1 -1
  226. package/dist/permitted/trackError.cjs +4 -6
  227. package/dist/permitted/trackError.cjs.map +1 -1
  228. package/dist/permitted/trackError.d.cts +8 -11
  229. package/dist/permitted/trackError.d.cts.map +1 -1
  230. package/dist/permitted/trackError.d.mts +8 -11
  231. package/dist/permitted/trackError.d.mts.map +1 -1
  232. package/dist/permitted/trackError.mjs +4 -6
  233. package/dist/permitted/trackError.mjs.map +1 -1
  234. package/dist/permitted/trackEvent.cjs +4 -6
  235. package/dist/permitted/trackEvent.cjs.map +1 -1
  236. package/dist/permitted/trackEvent.d.cts +8 -11
  237. package/dist/permitted/trackEvent.d.cts.map +1 -1
  238. package/dist/permitted/trackEvent.d.mts +8 -11
  239. package/dist/permitted/trackEvent.d.mts.map +1 -1
  240. package/dist/permitted/trackEvent.mjs +4 -6
  241. package/dist/permitted/trackEvent.mjs.map +1 -1
  242. package/dist/permitted/updateInterface.cjs +11 -15
  243. package/dist/permitted/updateInterface.cjs.map +1 -1
  244. package/dist/permitted/updateInterface.d.cts +9 -22
  245. package/dist/permitted/updateInterface.d.cts.map +1 -1
  246. package/dist/permitted/updateInterface.d.mts +9 -22
  247. package/dist/permitted/updateInterface.d.mts.map +1 -1
  248. package/dist/permitted/updateInterface.mjs +11 -15
  249. package/dist/permitted/updateInterface.mjs.map +1 -1
  250. package/dist/restricted/dialog.cjs +23 -30
  251. package/dist/restricted/dialog.cjs.map +1 -1
  252. package/dist/restricted/dialog.d.cts +10 -58
  253. package/dist/restricted/dialog.d.cts.map +1 -1
  254. package/dist/restricted/dialog.d.mts +10 -58
  255. package/dist/restricted/dialog.d.mts.map +1 -1
  256. package/dist/restricted/dialog.mjs +23 -30
  257. package/dist/restricted/dialog.mjs.map +1 -1
  258. package/dist/restricted/getBip32Entropy.cjs +15 -12
  259. package/dist/restricted/getBip32Entropy.cjs.map +1 -1
  260. package/dist/restricted/getBip32Entropy.d.cts +11 -24
  261. package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
  262. package/dist/restricted/getBip32Entropy.d.mts +11 -24
  263. package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
  264. package/dist/restricted/getBip32Entropy.mjs +16 -13
  265. package/dist/restricted/getBip32Entropy.mjs.map +1 -1
  266. package/dist/restricted/getBip32PublicKey.cjs +15 -12
  267. package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
  268. package/dist/restricted/getBip32PublicKey.d.cts +11 -24
  269. package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
  270. package/dist/restricted/getBip32PublicKey.d.mts +11 -24
  271. package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
  272. package/dist/restricted/getBip32PublicKey.mjs +16 -13
  273. package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
  274. package/dist/restricted/getBip44Entropy.cjs +14 -10
  275. package/dist/restricted/getBip44Entropy.cjs.map +1 -1
  276. package/dist/restricted/getBip44Entropy.d.cts +11 -15
  277. package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
  278. package/dist/restricted/getBip44Entropy.d.mts +11 -15
  279. package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
  280. package/dist/restricted/getBip44Entropy.mjs +15 -11
  281. package/dist/restricted/getBip44Entropy.mjs.map +1 -1
  282. package/dist/restricted/getEntropy.cjs +10 -10
  283. package/dist/restricted/getEntropy.cjs.map +1 -1
  284. package/dist/restricted/getEntropy.d.cts +11 -15
  285. package/dist/restricted/getEntropy.d.cts.map +1 -1
  286. package/dist/restricted/getEntropy.d.mts +11 -15
  287. package/dist/restricted/getEntropy.d.mts.map +1 -1
  288. package/dist/restricted/getEntropy.mjs +11 -11
  289. package/dist/restricted/getEntropy.mjs.map +1 -1
  290. package/dist/restricted/index.cjs.map +1 -1
  291. package/dist/restricted/index.d.cts +20 -160
  292. package/dist/restricted/index.d.cts.map +1 -1
  293. package/dist/restricted/index.d.mts +20 -160
  294. package/dist/restricted/index.d.mts.map +1 -1
  295. package/dist/restricted/index.mjs.map +1 -1
  296. package/dist/restricted/invokeSnap.cjs +11 -12
  297. package/dist/restricted/invokeSnap.cjs.map +1 -1
  298. package/dist/restricted/invokeSnap.d.cts +9 -13
  299. package/dist/restricted/invokeSnap.d.cts.map +1 -1
  300. package/dist/restricted/invokeSnap.d.mts +9 -13
  301. package/dist/restricted/invokeSnap.d.mts.map +1 -1
  302. package/dist/restricted/invokeSnap.mjs +11 -12
  303. package/dist/restricted/invokeSnap.mjs.map +1 -1
  304. package/dist/restricted/manageState.cjs +21 -20
  305. package/dist/restricted/manageState.cjs.map +1 -1
  306. package/dist/restricted/manageState.d.cts +12 -34
  307. package/dist/restricted/manageState.d.cts.map +1 -1
  308. package/dist/restricted/manageState.d.mts +12 -34
  309. package/dist/restricted/manageState.d.mts.map +1 -1
  310. package/dist/restricted/manageState.mjs +21 -20
  311. package/dist/restricted/manageState.mjs.map +1 -1
  312. package/dist/restricted/notify.cjs +31 -24
  313. package/dist/restricted/notify.cjs.map +1 -1
  314. package/dist/restricted/notify.d.cts +16 -25
  315. package/dist/restricted/notify.d.cts.map +1 -1
  316. package/dist/restricted/notify.d.mts +16 -25
  317. package/dist/restricted/notify.d.mts.map +1 -1
  318. package/dist/restricted/notify.mjs +32 -25
  319. package/dist/restricted/notify.mjs.map +1 -1
  320. package/dist/types.cjs +3 -0
  321. package/dist/types.cjs.map +1 -0
  322. package/dist/types.d.cts +155 -0
  323. package/dist/types.d.cts.map +1 -0
  324. package/dist/types.d.mts +155 -0
  325. package/dist/types.d.mts.map +1 -0
  326. package/dist/types.mjs +2 -0
  327. package/dist/types.mjs.map +1 -0
  328. package/dist/utils.cjs +78 -24
  329. package/dist/utils.cjs.map +1 -1
  330. package/dist/utils.d.cts +21 -13
  331. package/dist/utils.d.cts.map +1 -1
  332. package/dist/utils.d.mts +21 -13
  333. package/dist/utils.d.mts.map +1 -1
  334. package/dist/utils.mjs +75 -22
  335. package/dist/utils.mjs.map +1 -1
  336. package/package.json +6 -6
  337. package/dist/permitted/handlers.cjs +0 -63
  338. package/dist/permitted/handlers.cjs.map +0 -1
  339. package/dist/permitted/handlers.d.cts +0 -299
  340. package/dist/permitted/handlers.d.cts.map +0 -1
  341. package/dist/permitted/handlers.d.mts +0 -299
  342. package/dist/permitted/handlers.d.mts.map +0 -1
  343. package/dist/permitted/handlers.mjs +0 -60
  344. package/dist/permitted/handlers.mjs.map +0 -1
@@ -5,11 +5,6 @@ const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const snaps_sdk_1 = require("@metamask/snaps-sdk");
6
6
  const superstruct_1 = require("@metamask/superstruct");
7
7
  const utils_1 = require("../utils.cjs");
8
- const methodName = 'snap_createInterface';
9
- const hookNames = {
10
- hasPermission: true,
11
- createInterface: true,
12
- };
13
8
  /**
14
9
  * Create the interactive interface for use in the
15
10
  * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
@@ -32,9 +27,11 @@ const hookNames = {
32
27
  * ```
33
28
  */
34
29
  exports.createInterfaceHandler = {
35
- methodNames: [methodName],
36
30
  implementation: getCreateInterfaceImplementation,
37
- hookNames,
31
+ actionNames: [
32
+ 'PermissionController:hasPermission',
33
+ 'SnapInterfaceController:createInterface',
34
+ ],
38
35
  };
39
36
  const CreateInterfaceParametersStruct = (0, superstruct_1.object)({
40
37
  ui: snaps_sdk_1.ComponentOrElementStruct,
@@ -48,23 +45,22 @@ const CreateInterfaceParametersStruct = (0, superstruct_1.object)({
48
45
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this
49
46
  * function.
50
47
  * @param end - The `json-rpc-engine` "end" callback.
51
- * @param hooks - The RPC method hooks.
52
- * @param hooks.hasPermission - The function to check if the Snap has a given
53
- * permission.
54
- * @param hooks.createInterface - The function to create the interface.
48
+ * @param _hooks - The RPC method hooks. Not used by this function.
49
+ * @param messenger - The messenger used to call controller actions.
55
50
  * @returns Nothing.
56
51
  */
57
- function getCreateInterfaceImplementation(req, res, _next, end, { hasPermission, createInterface }) {
58
- if (!utils_1.UI_PERMISSIONS.some(hasPermission)) {
52
+ function getCreateInterfaceImplementation(req, res, _next, end, _hooks, messenger) {
53
+ const { params, origin } = req;
54
+ const isPermitted = utils_1.UI_PERMISSIONS.some((permission) => messenger.call('PermissionController:hasPermission', origin, permission));
55
+ if (!isPermitted) {
59
56
  return end(rpc_errors_1.providerErrors.unauthorized({
60
57
  message: `This method can only be used if the Snap has one of the following permissions: ${utils_1.UI_PERMISSIONS.join(', ')}.`,
61
58
  }));
62
59
  }
63
- const { params } = req;
64
60
  try {
65
61
  const validatedParams = getValidatedParams(params);
66
62
  const { ui, context } = validatedParams;
67
- res.result = createInterface(ui, context);
63
+ res.result = messenger.call('SnapInterfaceController:createInterface', origin, ui, context);
68
64
  }
69
65
  catch (error) {
70
66
  return end(error);
@@ -1 +1 @@
1
- {"version":3,"file":"createInterface.cjs","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AASjE,mDAG6B;AAE7B,uDAA8E;AAI9E,wCAA0C;AAE1C,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,SAAS,GAAkD;IAC/D,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;CACtB,CAAC;AAsBF;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,sBAAsB,GAAG;IACpC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,gCAAgC;IAChD,SAAS;CAKV,CAAC;AAEF,MAAM,+BAA+B,GAAG,IAAA,oBAAM,EAAC;IAC7C,EAAE,EAAE,oCAAwB;IAC5B,OAAO,EAAE,IAAA,sBAAQ,EAAC,kCAAsB,CAAC;CAC1C,CAAC,CAAC;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,gCAAgC,CACvC,GAA8C,EAC9C,GAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,eAAe,EAA8B;IAE9D,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,OAAO,EAAE,GAAG,eAAe,CAAC;QAExC,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,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,+BAA+B,CAAC,CAAC;IACzD,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 CreateInterfaceParams,\n CreateInterfaceResult,\n JsonRpcRequest,\n ComponentOrElement,\n InterfaceContext,\n ContentType,\n} from '@metamask/snaps-sdk';\nimport {\n ComponentOrElementStruct,\n InterfaceContextStruct,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, optional } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\nimport { UI_PERMISSIONS } from '../utils';\n\nconst methodName = 'snap_createInterface';\n\nconst hookNames: MethodHooksObject<CreateInterfaceMethodHooks> = {\n hasPermission: true,\n createInterface: true,\n};\n\nexport type CreateInterfaceMethodHooks = {\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 ui - The UI components.\n * @param context - An optional interface context object.\n * @param contentType - The optional content type.\n * @returns The unique identifier of the interface.\n */\n createInterface: (\n ui: ComponentOrElement,\n context?: InterfaceContext,\n contentType?: ContentType,\n ) => string;\n};\n\n/**\n * Create the interactive interface for use in the\n * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).\n *\n * @example\n * ```tsx\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Example Interface</Heading>\n * <Text>This is an example interface created by \"snap_createInterface\".</Text>\n * </Box>\n * ),\n * },\n * });\n * ```\n */\nexport const createInterfaceHandler = {\n methodNames: [methodName] as const,\n implementation: getCreateInterfaceImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CreateInterfaceMethodHooks,\n CreateInterfaceParameters,\n CreateInterfaceResult\n>;\n\nconst CreateInterfaceParametersStruct = object({\n ui: ComponentOrElementStruct,\n context: optional(InterfaceContextStruct),\n});\n\nexport type CreateInterfaceParameters = InferMatching<\n typeof CreateInterfaceParametersStruct,\n CreateInterfaceParams\n>;\n\n/**\n * The `snap_createInterface` 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.createInterface - The function to create the interface.\n * @returns Nothing.\n */\nfunction getCreateInterfaceImplementation(\n req: JsonRpcRequest<CreateInterfaceParameters>,\n res: PendingJsonRpcResponse<CreateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, createInterface }: CreateInterfaceMethodHooks,\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 { ui, context } = validatedParams;\n\n res.result = createInterface(ui, context);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the createInterface 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 createInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CreateInterfaceParameters {\n try {\n return create(params, CreateInterfaceParametersStruct);\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":"createInterface.cjs","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":";;;AAMA,qDAAiE;AAKjE,mDAG6B;AAE7B,uDAA8E;AAO9E,wCAA0C;AAM1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,sBAAsB,GAAG;IACpC,cAAc,EAAE,gCAAgC;IAChD,WAAW,EAAE;QACX,oCAAoC;QACpC,yCAAyC;KAC1C;CAOF,CAAC;AAEF,MAAM,+BAA+B,GAAG,IAAA,oBAAM,EAAC;IAC7C,EAAE,EAAE,oCAAwB;IAC5B,OAAO,EAAE,IAAA,sBAAQ,EAAC,kCAAsB,CAAC;CAC1C,CAAC,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,SAAS,gCAAgC,CACvC,GAAwD,EACxD,GAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAA0D;IAE1D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE/B,MAAM,WAAW,GAAG,sBAAc,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACrD,SAAS,CAAC,IAAI,CAAC,oCAAoC,EAAE,MAAM,EAAE,UAAU,CAAC,CACzE,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,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,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAExC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CACzB,yCAAyC,EACzC,MAAM,EACN,EAAE,EACF,OAAO,CACR,CAAC;IACJ,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,+BAA+B,CAAC,CAAC;IACzD,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 {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n CreateInterfaceParams,\n CreateInterfaceResult,\n} from '@metamask/snaps-sdk';\nimport {\n ComponentOrElementStruct,\n InterfaceContextStruct,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, optional } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapInterfaceControllerCreateInterfaceAction,\n} from '../types';\nimport { UI_PERMISSIONS } from '../utils';\n\nexport type CreateInterfaceMethodActions =\n | PermissionControllerHasPermissionAction\n | SnapInterfaceControllerCreateInterfaceAction;\n\n/**\n * Create the interactive interface for use in the\n * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).\n *\n * @example\n * ```tsx\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Example Interface</Heading>\n * <Text>This is an example interface created by \"snap_createInterface\".</Text>\n * </Box>\n * ),\n * },\n * });\n * ```\n */\nexport const createInterfaceHandler = {\n implementation: getCreateInterfaceImplementation,\n actionNames: [\n 'PermissionController:hasPermission',\n 'SnapInterfaceController:createInterface',\n ],\n} satisfies MethodHandler<\n never,\n CreateInterfaceMethodActions,\n CreateInterfaceParameters,\n CreateInterfaceResult,\n { origin: string }\n>;\n\nconst CreateInterfaceParametersStruct = object({\n ui: ComponentOrElementStruct,\n context: optional(InterfaceContextStruct),\n});\n\nexport type CreateInterfaceParameters = InferMatching<\n typeof CreateInterfaceParametersStruct,\n CreateInterfaceParams\n>;\n\n/**\n * The `snap_createInterface` 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. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getCreateInterfaceImplementation(\n req: JsonRpcRequestWithOrigin<CreateInterfaceParameters>,\n res: PendingJsonRpcResponse<CreateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, CreateInterfaceMethodActions>,\n): void {\n const { params, origin } = req;\n\n const isPermitted = UI_PERMISSIONS.some((permission) =>\n messenger.call('PermissionController:hasPermission', origin, permission),\n );\n\n if (!isPermitted) {\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 try {\n const validatedParams = getValidatedParams(params);\n\n const { ui, context } = validatedParams;\n\n res.result = messenger.call(\n 'SnapInterfaceController:createInterface',\n origin,\n ui,\n context,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the createInterface 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 createInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CreateInterfaceParameters {\n try {\n return create(params, CreateInterfaceParametersStruct);\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,22 +1,11 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { CreateInterfaceParams, CreateInterfaceResult, JsonRpcRequest, ComponentOrElement, InterfaceContext, ContentType } from "@metamask/snaps-sdk";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
4
+ import type { CreateInterfaceParams, CreateInterfaceResult } from "@metamask/snaps-sdk";
3
5
  import { type InferMatching } from "@metamask/snaps-utils";
4
6
  import type { PendingJsonRpcResponse } from "@metamask/utils";
5
- import type { MethodHooksObject } from "../utils.cjs";
6
- export type CreateInterfaceMethodHooks = {
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;
12
- /**
13
- * @param ui - The UI components.
14
- * @param context - An optional interface context object.
15
- * @param contentType - The optional content type.
16
- * @returns The unique identifier of the interface.
17
- */
18
- createInterface: (ui: ComponentOrElement, context?: InterfaceContext, contentType?: ContentType) => string;
19
- };
7
+ import type { JsonRpcRequestWithOrigin, SnapInterfaceControllerCreateInterfaceAction } from "../types.cjs";
8
+ export type CreateInterfaceMethodActions = PermissionControllerHasPermissionAction | SnapInterfaceControllerCreateInterfaceAction;
20
9
  /**
21
10
  * Create the interactive interface for use in the
22
11
  * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
@@ -39,9 +28,8 @@ export type CreateInterfaceMethodHooks = {
39
28
  * ```
40
29
  */
41
30
  export declare const createInterfaceHandler: {
42
- methodNames: ["snap_createInterface"];
43
31
  implementation: typeof getCreateInterfaceImplementation;
44
- hookNames: MethodHooksObject<CreateInterfaceMethodHooks>;
32
+ actionNames: ("SnapInterfaceController:createInterface" | "PermissionController:hasPermission")[];
45
33
  };
46
34
  declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").Struct<{
47
35
  ui: import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DateTimePickerProps, "DateTimePicker"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CollapsibleSectionProps, "CollapsibleSection"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | {
@@ -90,6 +78,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
90
78
  error?: string | undefined;
91
79
  } | {
92
80
  value: string;
81
+ /**
82
+ * Validate the createInterface method `params` and returns them cast to the correct
83
+ * type. Throws if validation fails.
84
+ *
85
+ * @param params - The unvalidated params object from the method request.
86
+ * @returns The validated createInterface method parameter object.
87
+ */
93
88
  type: import("@metamask/snaps-sdk").NodeType.Button;
94
89
  variant?: "primary" | "secondary" | undefined;
95
90
  name?: string | undefined;
@@ -98,13 +93,6 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
98
93
  type: import("@metamask/snaps-sdk").NodeType.Form;
99
94
  name: string;
100
95
  children: ({
101
- /**
102
- * Validate the createInterface method `params` and returns them cast to the correct
103
- * type. Throws if validation fails.
104
- *
105
- * @param params - The unvalidated params object from the method request.
106
- * @returns The validated createInterface method parameter object.
107
- */
108
96
  type: import("@metamask/snaps-sdk").NodeType.Input;
109
97
  name: string;
110
98
  value?: string | undefined;
@@ -186,6 +174,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
186
174
  error?: string | undefined;
187
175
  } | {
188
176
  value: string;
177
+ /**
178
+ * Validate the createInterface method `params` and returns them cast to the correct
179
+ * type. Throws if validation fails.
180
+ *
181
+ * @param params - The unvalidated params object from the method request.
182
+ * @returns The validated createInterface method parameter object.
183
+ */
189
184
  type: import("@metamask/snaps-sdk").NodeType.Button;
190
185
  variant?: "primary" | "secondary" | undefined;
191
186
  name?: string | undefined;
@@ -194,13 +189,6 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
194
189
  type: import("@metamask/snaps-sdk").NodeType.Form;
195
190
  name: string;
196
191
  children: ({
197
- /**
198
- * Validate the createInterface method `params` and returns them cast to the correct
199
- * type. Throws if validation fails.
200
- *
201
- * @param params - The unvalidated params object from the method request.
202
- * @returns The validated createInterface method parameter object.
203
- */
204
192
  type: import("@metamask/snaps-sdk").NodeType.Input;
205
193
  name: string;
206
194
  value?: string | undefined;
@@ -245,12 +233,10 @@ export type CreateInterfaceParameters = InferMatching<typeof CreateInterfacePara
245
233
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this
246
234
  * function.
247
235
  * @param end - The `json-rpc-engine` "end" callback.
248
- * @param hooks - The RPC method hooks.
249
- * @param hooks.hasPermission - The function to check if the Snap has a given
250
- * permission.
251
- * @param hooks.createInterface - The function to create the interface.
236
+ * @param _hooks - The RPC method hooks. Not used by this function.
237
+ * @param messenger - The messenger used to call controller actions.
252
238
  * @returns Nothing.
253
239
  */
254
- declare function getCreateInterfaceImplementation(req: JsonRpcRequest<CreateInterfaceParameters>, res: PendingJsonRpcResponse<CreateInterfaceResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, createInterface }: CreateInterfaceMethodHooks): void;
240
+ declare function getCreateInterfaceImplementation(req: JsonRpcRequestWithOrigin<CreateInterfaceParameters>, res: PendingJsonRpcResponse<CreateInterfaceResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, CreateInterfaceMethodActions>): void;
255
241
  export {};
256
242
  //# sourceMappingURL=createInterface.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createInterface.d.cts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACZ,4BAA4B;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAUlD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;;;OAKG;IACH,eAAe,EAAE,CACf,EAAE,EAAE,kBAAkB,EACtB,OAAO,CAAC,EAAE,gBAAgB,EAC1B,WAAW,CAAC,EAAE,WAAW,KACtB,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB;;;;CAQlC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsDrC;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YANH;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAzDD,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,OAAO,+BAA+B,EACtC,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,gCAAgC,CACvC,GAAG,EAAE,cAAc,CAAC,yBAAyB,CAAC,EAC9C,GAAG,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,0BAA0B,GAC7D,IAAI,CAsBN"}
1
+ {"version":3,"file":"createInterface.d.cts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACtB,4BAA4B;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EACV,wBAAwB,EACxB,4CAA4C,EAC7C,qBAAiB;AAGlB,MAAM,MAAM,4BAA4B,GACpC,uCAAuC,GACvC,4CAA4C,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB;;;CAYlC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8DrC;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QANH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAjED,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,OAAO,+BAA+B,EACtC,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAS,gCAAgC,CACvC,GAAG,EAAE,wBAAwB,CAAC,yBAAyB,CAAC,EACxD,GAAG,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,4BAA4B,CAAC,GACzD,IAAI,CA+BN"}
@@ -1,22 +1,11 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { CreateInterfaceParams, CreateInterfaceResult, JsonRpcRequest, ComponentOrElement, InterfaceContext, ContentType } from "@metamask/snaps-sdk";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
4
+ import type { CreateInterfaceParams, CreateInterfaceResult } from "@metamask/snaps-sdk";
3
5
  import { type InferMatching } from "@metamask/snaps-utils";
4
6
  import type { PendingJsonRpcResponse } from "@metamask/utils";
5
- import type { MethodHooksObject } from "../utils.mjs";
6
- export type CreateInterfaceMethodHooks = {
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;
12
- /**
13
- * @param ui - The UI components.
14
- * @param context - An optional interface context object.
15
- * @param contentType - The optional content type.
16
- * @returns The unique identifier of the interface.
17
- */
18
- createInterface: (ui: ComponentOrElement, context?: InterfaceContext, contentType?: ContentType) => string;
19
- };
7
+ import type { JsonRpcRequestWithOrigin, SnapInterfaceControllerCreateInterfaceAction } from "../types.mjs";
8
+ export type CreateInterfaceMethodActions = PermissionControllerHasPermissionAction | SnapInterfaceControllerCreateInterfaceAction;
20
9
  /**
21
10
  * Create the interactive interface for use in the
22
11
  * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
@@ -39,9 +28,8 @@ export type CreateInterfaceMethodHooks = {
39
28
  * ```
40
29
  */
41
30
  export declare const createInterfaceHandler: {
42
- methodNames: ["snap_createInterface"];
43
31
  implementation: typeof getCreateInterfaceImplementation;
44
- hookNames: MethodHooksObject<CreateInterfaceMethodHooks>;
32
+ actionNames: ("SnapInterfaceController:createInterface" | "PermissionController:hasPermission")[];
45
33
  };
46
34
  declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").Struct<{
47
35
  ui: import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DateTimePickerProps, "DateTimePicker"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CollapsibleSectionProps, "CollapsibleSection"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | {
@@ -90,6 +78,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
90
78
  error?: string | undefined;
91
79
  } | {
92
80
  value: string;
81
+ /**
82
+ * Validate the createInterface method `params` and returns them cast to the correct
83
+ * type. Throws if validation fails.
84
+ *
85
+ * @param params - The unvalidated params object from the method request.
86
+ * @returns The validated createInterface method parameter object.
87
+ */
93
88
  type: import("@metamask/snaps-sdk").NodeType.Button;
94
89
  variant?: "primary" | "secondary" | undefined;
95
90
  name?: string | undefined;
@@ -98,13 +93,6 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
98
93
  type: import("@metamask/snaps-sdk").NodeType.Form;
99
94
  name: string;
100
95
  children: ({
101
- /**
102
- * Validate the createInterface method `params` and returns them cast to the correct
103
- * type. Throws if validation fails.
104
- *
105
- * @param params - The unvalidated params object from the method request.
106
- * @returns The validated createInterface method parameter object.
107
- */
108
96
  type: import("@metamask/snaps-sdk").NodeType.Input;
109
97
  name: string;
110
98
  value?: string | undefined;
@@ -186,6 +174,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
186
174
  error?: string | undefined;
187
175
  } | {
188
176
  value: string;
177
+ /**
178
+ * Validate the createInterface method `params` and returns them cast to the correct
179
+ * type. Throws if validation fails.
180
+ *
181
+ * @param params - The unvalidated params object from the method request.
182
+ * @returns The validated createInterface method parameter object.
183
+ */
189
184
  type: import("@metamask/snaps-sdk").NodeType.Button;
190
185
  variant?: "primary" | "secondary" | undefined;
191
186
  name?: string | undefined;
@@ -194,13 +189,6 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
194
189
  type: import("@metamask/snaps-sdk").NodeType.Form;
195
190
  name: string;
196
191
  children: ({
197
- /**
198
- * Validate the createInterface method `params` and returns them cast to the correct
199
- * type. Throws if validation fails.
200
- *
201
- * @param params - The unvalidated params object from the method request.
202
- * @returns The validated createInterface method parameter object.
203
- */
204
192
  type: import("@metamask/snaps-sdk").NodeType.Input;
205
193
  name: string;
206
194
  value?: string | undefined;
@@ -245,12 +233,10 @@ export type CreateInterfaceParameters = InferMatching<typeof CreateInterfacePara
245
233
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this
246
234
  * function.
247
235
  * @param end - The `json-rpc-engine` "end" callback.
248
- * @param hooks - The RPC method hooks.
249
- * @param hooks.hasPermission - The function to check if the Snap has a given
250
- * permission.
251
- * @param hooks.createInterface - The function to create the interface.
236
+ * @param _hooks - The RPC method hooks. Not used by this function.
237
+ * @param messenger - The messenger used to call controller actions.
252
238
  * @returns Nothing.
253
239
  */
254
- declare function getCreateInterfaceImplementation(req: JsonRpcRequest<CreateInterfaceParameters>, res: PendingJsonRpcResponse<CreateInterfaceResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, createInterface }: CreateInterfaceMethodHooks): void;
240
+ declare function getCreateInterfaceImplementation(req: JsonRpcRequestWithOrigin<CreateInterfaceParameters>, res: PendingJsonRpcResponse<CreateInterfaceResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, CreateInterfaceMethodActions>): void;
255
241
  export {};
256
242
  //# sourceMappingURL=createInterface.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createInterface.d.mts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACZ,4BAA4B;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAUlD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;;;OAKG;IACH,eAAe,EAAE,CACf,EAAE,EAAE,kBAAkB,EACtB,OAAO,CAAC,EAAE,gBAAgB,EAC1B,WAAW,CAAC,EAAE,WAAW,KACtB,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB;;;;CAQlC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsDrC;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YANH;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAzDD,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,OAAO,+BAA+B,EACtC,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,gCAAgC,CACvC,GAAG,EAAE,cAAc,CAAC,yBAAyB,CAAC,EAC9C,GAAG,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,0BAA0B,GAC7D,IAAI,CAsBN"}
1
+ {"version":3,"file":"createInterface.d.mts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACtB,4BAA4B;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EACV,wBAAwB,EACxB,4CAA4C,EAC7C,qBAAiB;AAGlB,MAAM,MAAM,4BAA4B,GACpC,uCAAuC,GACvC,4CAA4C,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB;;;CAYlC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8DrC;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QANH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAjED,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,OAAO,+BAA+B,EACtC,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAS,gCAAgC,CACvC,GAAG,EAAE,wBAAwB,CAAC,yBAAyB,CAAC,EACxD,GAAG,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,4BAA4B,CAAC,GACzD,IAAI,CA+BN"}
@@ -2,11 +2,6 @@ import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
2
2
  import { ComponentOrElementStruct, InterfaceContextStruct } from "@metamask/snaps-sdk";
3
3
  import { StructError, create, object, optional } from "@metamask/superstruct";
4
4
  import { UI_PERMISSIONS } from "../utils.mjs";
5
- const methodName = 'snap_createInterface';
6
- const hookNames = {
7
- hasPermission: true,
8
- createInterface: true,
9
- };
10
5
  /**
11
6
  * Create the interactive interface for use in the
12
7
  * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
@@ -29,9 +24,11 @@ const hookNames = {
29
24
  * ```
30
25
  */
31
26
  export const createInterfaceHandler = {
32
- methodNames: [methodName],
33
27
  implementation: getCreateInterfaceImplementation,
34
- hookNames,
28
+ actionNames: [
29
+ 'PermissionController:hasPermission',
30
+ 'SnapInterfaceController:createInterface',
31
+ ],
35
32
  };
36
33
  const CreateInterfaceParametersStruct = object({
37
34
  ui: ComponentOrElementStruct,
@@ -45,23 +42,22 @@ const CreateInterfaceParametersStruct = object({
45
42
  * @param _next - The `json-rpc-engine` "next" callback. Not used by this
46
43
  * function.
47
44
  * @param end - The `json-rpc-engine` "end" callback.
48
- * @param hooks - The RPC method hooks.
49
- * @param hooks.hasPermission - The function to check if the Snap has a given
50
- * permission.
51
- * @param hooks.createInterface - The function to create the interface.
45
+ * @param _hooks - The RPC method hooks. Not used by this function.
46
+ * @param messenger - The messenger used to call controller actions.
52
47
  * @returns Nothing.
53
48
  */
54
- function getCreateInterfaceImplementation(req, res, _next, end, { hasPermission, createInterface }) {
55
- if (!UI_PERMISSIONS.some(hasPermission)) {
49
+ function getCreateInterfaceImplementation(req, res, _next, end, _hooks, messenger) {
50
+ const { params, origin } = req;
51
+ const isPermitted = UI_PERMISSIONS.some((permission) => messenger.call('PermissionController:hasPermission', origin, permission));
52
+ if (!isPermitted) {
56
53
  return end(providerErrors.unauthorized({
57
54
  message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,
58
55
  }));
59
56
  }
60
- const { params } = req;
61
57
  try {
62
58
  const validatedParams = getValidatedParams(params);
63
59
  const { ui, context } = validatedParams;
64
- res.result = createInterface(ui, context);
60
+ res.result = messenger.call('SnapInterfaceController:createInterface', origin, ui, context);
65
61
  }
66
62
  catch (error) {
67
63
  return end(error);
@@ -1 +1 @@
1
- {"version":3,"file":"createInterface.mjs","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AASjE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACvB,4BAA4B;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,8BAA8B;AAI9E,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAE1C,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,SAAS,GAAkD;IAC/D,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;CACtB,CAAC;AAsBF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,gCAAgC;IAChD,SAAS;CAKV,CAAC;AAEF,MAAM,+BAA+B,GAAG,MAAM,CAAC;IAC7C,EAAE,EAAE,wBAAwB;IAC5B,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC;CAC1C,CAAC,CAAC;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,gCAAgC,CACvC,GAA8C,EAC9C,GAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,eAAe,EAA8B;IAE9D,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,OAAO,EAAE,GAAG,eAAe,CAAC;QAExC,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,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,+BAA+B,CAAC,CAAC;IACzD,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 CreateInterfaceParams,\n CreateInterfaceResult,\n JsonRpcRequest,\n ComponentOrElement,\n InterfaceContext,\n ContentType,\n} from '@metamask/snaps-sdk';\nimport {\n ComponentOrElementStruct,\n InterfaceContextStruct,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, optional } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\nimport { UI_PERMISSIONS } from '../utils';\n\nconst methodName = 'snap_createInterface';\n\nconst hookNames: MethodHooksObject<CreateInterfaceMethodHooks> = {\n hasPermission: true,\n createInterface: true,\n};\n\nexport type CreateInterfaceMethodHooks = {\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 ui - The UI components.\n * @param context - An optional interface context object.\n * @param contentType - The optional content type.\n * @returns The unique identifier of the interface.\n */\n createInterface: (\n ui: ComponentOrElement,\n context?: InterfaceContext,\n contentType?: ContentType,\n ) => string;\n};\n\n/**\n * Create the interactive interface for use in the\n * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).\n *\n * @example\n * ```tsx\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Example Interface</Heading>\n * <Text>This is an example interface created by \"snap_createInterface\".</Text>\n * </Box>\n * ),\n * },\n * });\n * ```\n */\nexport const createInterfaceHandler = {\n methodNames: [methodName] as const,\n implementation: getCreateInterfaceImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CreateInterfaceMethodHooks,\n CreateInterfaceParameters,\n CreateInterfaceResult\n>;\n\nconst CreateInterfaceParametersStruct = object({\n ui: ComponentOrElementStruct,\n context: optional(InterfaceContextStruct),\n});\n\nexport type CreateInterfaceParameters = InferMatching<\n typeof CreateInterfaceParametersStruct,\n CreateInterfaceParams\n>;\n\n/**\n * The `snap_createInterface` 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.createInterface - The function to create the interface.\n * @returns Nothing.\n */\nfunction getCreateInterfaceImplementation(\n req: JsonRpcRequest<CreateInterfaceParameters>,\n res: PendingJsonRpcResponse<CreateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, createInterface }: CreateInterfaceMethodHooks,\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 { ui, context } = validatedParams;\n\n res.result = createInterface(ui, context);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the createInterface 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 createInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CreateInterfaceParameters {\n try {\n return create(params, CreateInterfaceParametersStruct);\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":"createInterface.mjs","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAKjE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACvB,4BAA4B;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,8BAA8B;AAO9E,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAM1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,cAAc,EAAE,gCAAgC;IAChD,WAAW,EAAE;QACX,oCAAoC;QACpC,yCAAyC;KAC1C;CAOF,CAAC;AAEF,MAAM,+BAA+B,GAAG,MAAM,CAAC;IAC7C,EAAE,EAAE,wBAAwB;IAC5B,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC;CAC1C,CAAC,CAAC;AAOH;;;;;;;;;;;GAWG;AACH,SAAS,gCAAgC,CACvC,GAAwD,EACxD,GAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAA0D;IAE1D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE/B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACrD,SAAS,CAAC,IAAI,CAAC,oCAAoC,EAAE,MAAM,EAAE,UAAU,CAAC,CACzE,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,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,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAExC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CACzB,yCAAyC,EACzC,MAAM,EACN,EAAE,EACF,OAAO,CACR,CAAC;IACJ,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,+BAA+B,CAAC,CAAC;IACzD,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 {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n CreateInterfaceParams,\n CreateInterfaceResult,\n} from '@metamask/snaps-sdk';\nimport {\n ComponentOrElementStruct,\n InterfaceContextStruct,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, optional } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapInterfaceControllerCreateInterfaceAction,\n} from '../types';\nimport { UI_PERMISSIONS } from '../utils';\n\nexport type CreateInterfaceMethodActions =\n | PermissionControllerHasPermissionAction\n | SnapInterfaceControllerCreateInterfaceAction;\n\n/**\n * Create the interactive interface for use in the\n * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).\n *\n * @example\n * ```tsx\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Example Interface</Heading>\n * <Text>This is an example interface created by \"snap_createInterface\".</Text>\n * </Box>\n * ),\n * },\n * });\n * ```\n */\nexport const createInterfaceHandler = {\n implementation: getCreateInterfaceImplementation,\n actionNames: [\n 'PermissionController:hasPermission',\n 'SnapInterfaceController:createInterface',\n ],\n} satisfies MethodHandler<\n never,\n CreateInterfaceMethodActions,\n CreateInterfaceParameters,\n CreateInterfaceResult,\n { origin: string }\n>;\n\nconst CreateInterfaceParametersStruct = object({\n ui: ComponentOrElementStruct,\n context: optional(InterfaceContextStruct),\n});\n\nexport type CreateInterfaceParameters = InferMatching<\n typeof CreateInterfaceParametersStruct,\n CreateInterfaceParams\n>;\n\n/**\n * The `snap_createInterface` 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. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getCreateInterfaceImplementation(\n req: JsonRpcRequestWithOrigin<CreateInterfaceParameters>,\n res: PendingJsonRpcResponse<CreateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, CreateInterfaceMethodActions>,\n): void {\n const { params, origin } = req;\n\n const isPermitted = UI_PERMISSIONS.some((permission) =>\n messenger.call('PermissionController:hasPermission', origin, permission),\n );\n\n if (!isPermitted) {\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 try {\n const validatedParams = getValidatedParams(params);\n\n const { ui, context } = validatedParams;\n\n res.result = messenger.call(\n 'SnapInterfaceController:createInterface',\n origin,\n ui,\n context,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the createInterface 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 createInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CreateInterfaceParameters {\n try {\n return create(params, CreateInterfaceParametersStruct);\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,10 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.endTraceHandler = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
5
  const superstruct_1 = require("@metamask/superstruct");
6
- const methodName = 'snap_endTrace';
7
6
  const hookNames = {
8
7
  endTrace: true,
9
- getSnap: true,
10
8
  };
11
9
  const EndTraceParametersStruct = (0, superstruct_1.object)({
12
10
  id: (0, superstruct_1.exactOptional)((0, superstruct_1.string)()),
@@ -20,9 +18,9 @@ const EndTraceParametersStruct = (0, superstruct_1.object)({
20
18
  * @internal
21
19
  */
22
20
  exports.endTraceHandler = {
23
- methodNames: [methodName],
24
21
  implementation: getEndTraceImplementation,
25
22
  hookNames,
23
+ actionNames: ['SnapController:getSnap'],
26
24
  };
27
25
  /**
28
26
  * The `snap_endTrace` method implementation. This method is used to end a
@@ -35,11 +33,11 @@ exports.endTraceHandler = {
35
33
  * @param end - The `json-rpc-engine` "end" callback.
36
34
  * @param hooks - The RPC method hooks.
37
35
  * @param hooks.endTrace - The hook function to end a performance trace.
38
- * @param hooks.getSnap - The hook function to get Snap metadata.
36
+ * @param messenger - The messenger used to call controller actions.
39
37
  * @returns Nothing.
40
38
  */
41
- function getEndTraceImplementation(request, response, _next, end, { endTrace, getSnap }) {
42
- const snap = getSnap(request.origin);
39
+ function getEndTraceImplementation(request, response, _next, end, { endTrace }, messenger) {
40
+ const snap = messenger.call('SnapController:getSnap', request.origin);
43
41
  if (!snap?.preinstalled) {
44
42
  return end(rpc_errors_1.rpcErrors.methodNotFound());
45
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"endTrace.cjs","sourceRoot":"","sources":["../../src/permitted/endTrace.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAQjD,uDAO+B;AAK/B,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC,MAAM,SAAS,GAA2C;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;CACd,CAAC;AAmBF,MAAM,wBAAwB,GAAG,IAAA,oBAAM,EAAC;IACtC,EAAE,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC3B,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,SAAS,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;CACnC,CAAC,CAAC;AAOH;;;;;GAKG;AACU,QAAA,eAAe,GAAG;IAC7B,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,yBAAyB;IACzC,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,yBAAyB,CAChC,OAA2C,EAC3C,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,QAAQ,EAAE,OAAO,EAAuB;IAE1C,MAAM,IAAI,GAAG,OAAO,CACjB,OAA+D,CAAC,MAAM,CACxE,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE1B,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;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAClD,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 { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n EndTraceParams,\n EndTraceResult,\n EndTraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport {\n number,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_endTrace';\n\nconst hookNames: MethodHooksObject<EndTraceMethodHooks> = {\n endTrace: true,\n getSnap: true,\n};\n\nexport type EndTraceMethodHooks = {\n /**\n * End a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n endTrace: (request: EndTraceRequest) => void;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst EndTraceParametersStruct = object({\n id: exactOptional(string()),\n name: string(),\n timestamp: exactOptional(number()),\n});\n\nexport type EndTraceParameters = InferMatching<\n typeof EndTraceParametersStruct,\n EndTraceParams\n>;\n\n/**\n * End a performance trace in Sentry. This method is only available to\n * preinstalled Snaps.\n *\n * @internal\n */\nexport const endTraceHandler = {\n methodNames: [methodName] as const,\n implementation: getEndTraceImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n EndTraceMethodHooks,\n EndTraceParameters,\n EndTraceResult\n>;\n\n/**\n * The `snap_endTrace` method implementation. This method is used to end a\n * performance trace in Sentry. It is only available to preinstalled Snaps.\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.endTrace - The hook function to end a performance trace.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getEndTraceImplementation(\n request: JsonRpcRequest<EndTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { endTrace, getSnap }: EndTraceMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<EndTraceParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n endTrace(validatedParams);\n\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_endTrace` 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): EndTraceParameters {\n try {\n return create(params, EndTraceParametersStruct);\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":"endTrace.cjs","sourceRoot":"","sources":["../../src/permitted/endTrace.ts"],"names":[],"mappings":";;;AAKA,qDAAiD;AAOjD,uDAO+B;AAS/B,MAAM,SAAS,GAA2C;IACxD,QAAQ,EAAE,IAAI;CACf,CAAC;AAcF,MAAM,wBAAwB,GAAG,IAAA,oBAAM,EAAC;IACtC,EAAE,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC3B,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,SAAS,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;CACnC,CAAC,CAAC;AAOH;;;;;GAKG;AACU,QAAA,eAAe,GAAG;IAC7B,cAAc,EAAE,yBAAyB;IACzC,SAAS;IACT,WAAW,EAAE,CAAC,wBAAwB,CAAC;CAOxC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,yBAAyB,CAChC,OAAqD,EACrD,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,QAAQ,EAAuB,EACjC,SAAmD;IAEnD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE1B,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;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAClD,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 {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n EndTraceParams,\n EndTraceResult,\n EndTraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport {\n number,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type {\n JsonRpcRequestWithOrigin,\n SnapControllerGetSnapAction,\n} from '../types';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<EndTraceMethodHooks> = {\n endTrace: true,\n};\n\nexport type EndTraceMethodHooks = {\n /**\n * End a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n endTrace: (request: EndTraceRequest) => void;\n};\n\nexport type EndTraceMethodActions = SnapControllerGetSnapAction;\n\nconst EndTraceParametersStruct = object({\n id: exactOptional(string()),\n name: string(),\n timestamp: exactOptional(number()),\n});\n\nexport type EndTraceParameters = InferMatching<\n typeof EndTraceParametersStruct,\n EndTraceParams\n>;\n\n/**\n * End a performance trace in Sentry. This method is only available to\n * preinstalled Snaps.\n *\n * @internal\n */\nexport const endTraceHandler = {\n implementation: getEndTraceImplementation,\n hookNames,\n actionNames: ['SnapController:getSnap'],\n} satisfies MethodHandler<\n EndTraceMethodHooks,\n EndTraceMethodActions,\n EndTraceParameters,\n EndTraceResult,\n { origin: string }\n>;\n\n/**\n * The `snap_endTrace` method implementation. This method is used to end a\n * performance trace in Sentry. It is only available to preinstalled Snaps.\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.endTrace - The hook function to end a performance trace.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nfunction getEndTraceImplementation(\n request: JsonRpcRequestWithOrigin<EndTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { endTrace }: EndTraceMethodHooks,\n messenger: Messenger<string, EndTraceMethodActions>,\n): void {\n const snap = messenger.call('SnapController:getSnap', request.origin);\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n endTrace(validatedParams);\n\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_endTrace` 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): EndTraceParameters {\n try {\n return create(params, EndTraceParametersStruct);\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,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, EndTraceParams, EndTraceRequest } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { EndTraceParams, EndTraceRequest } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.cjs";
5
7
  import type { MethodHooksObject } from "../utils.cjs";
6
8
  export type EndTraceMethodHooks = {
7
9
  /**
@@ -11,13 +13,8 @@ export type EndTraceMethodHooks = {
11
13
  * @returns The performance trace context.
12
14
  */
13
15
  endTrace: (request: EndTraceRequest) => void;
14
- /**
15
- * Get Snap metadata.
16
- *
17
- * @param snapId - The ID of a Snap.
18
- */
19
- getSnap: (snapId: string) => Snap | undefined;
20
16
  };
17
+ export type EndTraceMethodActions = SnapControllerGetSnapAction;
21
18
  declare const EndTraceParametersStruct: import("@metamask/superstruct").Struct<{
22
19
  name: string;
23
20
  id?: string | undefined;
@@ -35,9 +32,9 @@ export type EndTraceParameters = InferMatching<typeof EndTraceParametersStruct,
35
32
  * @internal
36
33
  */
37
34
  export declare const endTraceHandler: {
38
- methodNames: ["snap_endTrace"];
39
35
  implementation: typeof getEndTraceImplementation;
40
36
  hookNames: MethodHooksObject<EndTraceMethodHooks>;
37
+ actionNames: "SnapController:getSnap"[];
41
38
  };
42
39
  /**
43
40
  * The `snap_endTrace` method implementation. This method is used to end a
@@ -50,9 +47,9 @@ export declare const endTraceHandler: {
50
47
  * @param end - The `json-rpc-engine` "end" callback.
51
48
  * @param hooks - The RPC method hooks.
52
49
  * @param hooks.endTrace - The hook function to end a performance trace.
53
- * @param hooks.getSnap - The hook function to get Snap metadata.
50
+ * @param messenger - The messenger used to call controller actions.
54
51
  * @returns Nothing.
55
52
  */
56
- declare function getEndTraceImplementation(request: JsonRpcRequest<EndTraceParameters>, response: PendingJsonRpcResponse, _next: unknown, end: JsonRpcEngineEndCallback, { endTrace, getSnap }: EndTraceMethodHooks): void;
53
+ declare function getEndTraceImplementation(request: JsonRpcRequestWithOrigin<EndTraceParameters>, response: PendingJsonRpcResponse, _next: unknown, end: JsonRpcEngineEndCallback, { endTrace }: EndTraceMethodHooks, messenger: Messenger<string, EndTraceMethodActions>): void;
57
54
  export {};
58
55
  //# sourceMappingURL=endTrace.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"endTrace.d.cts","sourceRoot":"","sources":["../../src/permitted/endTrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,eAAe,EAChB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AASjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAC5C,OAAO,wBAAwB,EAC/B,cAAc,CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;CAQ3B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,yBAAyB,CAChC,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC,EAC3C,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,mBAAmB,GACzC,IAAI,CAqBN"}
1
+ {"version":3,"file":"endTrace.d.cts","sourceRoot":"","sources":["../../src/permitted/endTrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAErD,OAAO,KAAK,EACV,cAAc,EAEd,eAAe,EAChB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAS3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,qBAAiB;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAMlD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAEhE,QAAA,MAAM,wBAAwB;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAC5C,OAAO,wBAAwB,EAC/B,cAAc,CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;CAU3B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,yBAAyB,CAChC,OAAO,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,EACrD,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EACjC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAClD,IAAI,CAmBN"}
@@ -1,7 +1,9 @@
1
1
  import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest, EndTraceParams, EndTraceRequest } from "@metamask/snaps-sdk";
3
- import type { InferMatching, Snap } from "@metamask/snaps-utils";
2
+ import type { Messenger } from "@metamask/messenger";
3
+ import type { EndTraceParams, EndTraceRequest } from "@metamask/snaps-sdk";
4
+ import type { InferMatching } from "@metamask/snaps-utils";
4
5
  import type { PendingJsonRpcResponse } from "@metamask/utils";
6
+ import type { JsonRpcRequestWithOrigin, SnapControllerGetSnapAction } from "../types.mjs";
5
7
  import type { MethodHooksObject } from "../utils.mjs";
6
8
  export type EndTraceMethodHooks = {
7
9
  /**
@@ -11,13 +13,8 @@ export type EndTraceMethodHooks = {
11
13
  * @returns The performance trace context.
12
14
  */
13
15
  endTrace: (request: EndTraceRequest) => void;
14
- /**
15
- * Get Snap metadata.
16
- *
17
- * @param snapId - The ID of a Snap.
18
- */
19
- getSnap: (snapId: string) => Snap | undefined;
20
16
  };
17
+ export type EndTraceMethodActions = SnapControllerGetSnapAction;
21
18
  declare const EndTraceParametersStruct: import("@metamask/superstruct").Struct<{
22
19
  name: string;
23
20
  id?: string | undefined;
@@ -35,9 +32,9 @@ export type EndTraceParameters = InferMatching<typeof EndTraceParametersStruct,
35
32
  * @internal
36
33
  */
37
34
  export declare const endTraceHandler: {
38
- methodNames: ["snap_endTrace"];
39
35
  implementation: typeof getEndTraceImplementation;
40
36
  hookNames: MethodHooksObject<EndTraceMethodHooks>;
37
+ actionNames: "SnapController:getSnap"[];
41
38
  };
42
39
  /**
43
40
  * The `snap_endTrace` method implementation. This method is used to end a
@@ -50,9 +47,9 @@ export declare const endTraceHandler: {
50
47
  * @param end - The `json-rpc-engine` "end" callback.
51
48
  * @param hooks - The RPC method hooks.
52
49
  * @param hooks.endTrace - The hook function to end a performance trace.
53
- * @param hooks.getSnap - The hook function to get Snap metadata.
50
+ * @param messenger - The messenger used to call controller actions.
54
51
  * @returns Nothing.
55
52
  */
56
- declare function getEndTraceImplementation(request: JsonRpcRequest<EndTraceParameters>, response: PendingJsonRpcResponse, _next: unknown, end: JsonRpcEngineEndCallback, { endTrace, getSnap }: EndTraceMethodHooks): void;
53
+ declare function getEndTraceImplementation(request: JsonRpcRequestWithOrigin<EndTraceParameters>, response: PendingJsonRpcResponse, _next: unknown, end: JsonRpcEngineEndCallback, { endTrace }: EndTraceMethodHooks, messenger: Messenger<string, EndTraceMethodActions>): void;
57
54
  export {};
58
55
  //# sourceMappingURL=endTrace.d.mts.map