@metamask/snaps-rpc-methods 6.0.0 → 7.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 (559) hide show
  1. package/CHANGELOG.md +8 -2
  2. package/dist/chunk-2A5M65V3.js +21 -0
  3. package/dist/chunk-2A5M65V3.js.map +1 -0
  4. package/dist/chunk-2IL6T3EX.js +18 -0
  5. package/dist/chunk-2IL6T3EX.js.map +1 -0
  6. package/dist/chunk-2N2PZJDJ.mjs +105 -0
  7. package/dist/chunk-2N2PZJDJ.mjs.map +1 -0
  8. package/dist/chunk-2QEA2YZM.mjs +23 -0
  9. package/dist/chunk-2QEA2YZM.mjs.map +1 -0
  10. package/dist/chunk-2TYDIMR6.js +78 -0
  11. package/dist/chunk-2TYDIMR6.js.map +1 -0
  12. package/dist/chunk-2WCLK3LN.mjs +115 -0
  13. package/dist/chunk-2WCLK3LN.mjs.map +1 -0
  14. package/dist/chunk-3CSLIOIY.mjs +43 -0
  15. package/dist/chunk-3CSLIOIY.mjs.map +1 -0
  16. package/dist/chunk-3DWRS3YG.mjs +49 -0
  17. package/dist/chunk-3DWRS3YG.mjs.map +1 -0
  18. package/dist/chunk-3FKD2O7M.js +151 -0
  19. package/dist/chunk-3FKD2O7M.js.map +1 -0
  20. package/dist/chunk-4ALFLY5D.js +105 -0
  21. package/dist/chunk-4ALFLY5D.js.map +1 -0
  22. package/dist/chunk-4Z4X6EJP.mjs +67 -0
  23. package/dist/chunk-4Z4X6EJP.mjs.map +1 -0
  24. package/dist/chunk-5HIIIAIS.mjs +57 -0
  25. package/dist/chunk-5HIIIAIS.mjs.map +1 -0
  26. package/dist/chunk-632BZ6JY.js +83 -0
  27. package/dist/{cjs/utils.js.map → chunk-632BZ6JY.js.map} +1 -1
  28. package/dist/chunk-6DUTJBD2.mjs +82 -0
  29. package/dist/chunk-6DUTJBD2.mjs.map +1 -0
  30. package/dist/chunk-6PXDUIXN.js +67 -0
  31. package/dist/chunk-6PXDUIXN.js.map +1 -0
  32. package/dist/chunk-72V4CPGO.mjs +23 -0
  33. package/dist/chunk-72V4CPGO.mjs.map +1 -0
  34. package/dist/chunk-7O63CIBT.js +42 -0
  35. package/dist/chunk-7O63CIBT.js.map +1 -0
  36. package/dist/chunk-ABFJRV6Q.js +68 -0
  37. package/dist/chunk-ABFJRV6Q.js.map +1 -0
  38. package/dist/chunk-BZIPLSKM.mjs +39 -0
  39. package/dist/chunk-BZIPLSKM.mjs.map +1 -0
  40. package/dist/chunk-CIIMO4C2.js +45 -0
  41. package/dist/chunk-CIIMO4C2.js.map +1 -0
  42. package/dist/chunk-DBYI25UR.js +23 -0
  43. package/dist/chunk-DBYI25UR.js.map +1 -0
  44. package/dist/chunk-DDGDVWAW.js +45 -0
  45. package/dist/chunk-DDGDVWAW.js.map +1 -0
  46. package/dist/chunk-DR63Z4PV.mjs +83 -0
  47. package/dist/chunk-DR63Z4PV.mjs.map +1 -0
  48. package/dist/chunk-E2G25QVG.js +119 -0
  49. package/dist/chunk-E2G25QVG.js.map +1 -0
  50. package/dist/chunk-E4HGQWSS.js +43 -0
  51. package/dist/chunk-E4HGQWSS.js.map +1 -0
  52. package/dist/chunk-EAL6AH74.js +67 -0
  53. package/dist/chunk-EAL6AH74.js.map +1 -0
  54. package/dist/chunk-EB6OXVFN.mjs +52 -0
  55. package/dist/chunk-EB6OXVFN.mjs.map +1 -0
  56. package/dist/chunk-EKB7QNFO.mjs +54 -0
  57. package/dist/chunk-EKB7QNFO.mjs.map +1 -0
  58. package/dist/chunk-EPNGNDRH.mjs +80 -0
  59. package/dist/chunk-EPNGNDRH.mjs.map +1 -0
  60. package/dist/chunk-F5BEVZOB.js +47 -0
  61. package/dist/chunk-F5BEVZOB.js.map +1 -0
  62. package/dist/chunk-FMUQOZIO.js +57 -0
  63. package/dist/chunk-FMUQOZIO.js.map +1 -0
  64. package/dist/chunk-H45CGE4Z.js +23 -0
  65. package/dist/chunk-H45CGE4Z.js.map +1 -0
  66. package/dist/chunk-HIYXSQ6K.mjs +188 -0
  67. package/dist/chunk-HIYXSQ6K.mjs.map +1 -0
  68. package/dist/chunk-HLF4WCE4.mjs +20 -0
  69. package/dist/chunk-HLF4WCE4.mjs.map +1 -0
  70. package/dist/chunk-HODDBRLQ.js +75 -0
  71. package/dist/chunk-HODDBRLQ.js.map +1 -0
  72. package/dist/chunk-HOXOD5RL.mjs +68 -0
  73. package/dist/chunk-HOXOD5RL.mjs.map +1 -0
  74. package/dist/chunk-I5H5ZZRC.js +80 -0
  75. package/dist/chunk-I5H5ZZRC.js.map +1 -0
  76. package/dist/chunk-IDRDPYAN.js +70 -0
  77. package/dist/chunk-IDRDPYAN.js.map +1 -0
  78. package/dist/chunk-JEEKFTAL.mjs +59 -0
  79. package/dist/chunk-JEEKFTAL.mjs.map +1 -0
  80. package/dist/chunk-JPUJWFBS.js +115 -0
  81. package/dist/chunk-JPUJWFBS.js.map +1 -0
  82. package/dist/chunk-JURJUHQB.mjs +70 -0
  83. package/dist/chunk-JURJUHQB.mjs.map +1 -0
  84. package/dist/chunk-JV26U22G.js +52 -0
  85. package/dist/chunk-JV26U22G.js.map +1 -0
  86. package/dist/chunk-K73RKHXA.js +20 -0
  87. package/dist/chunk-K73RKHXA.js.map +1 -0
  88. package/dist/chunk-KDLWQGV3.js +74 -0
  89. package/dist/chunk-KDLWQGV3.js.map +1 -0
  90. package/dist/chunk-KE74K2JM.js +59 -0
  91. package/dist/chunk-KE74K2JM.js.map +1 -0
  92. package/dist/chunk-KVHYDTGR.js +1 -0
  93. package/dist/chunk-KVHYDTGR.js.map +1 -0
  94. package/dist/chunk-L7MGGL7Q.mjs +43 -0
  95. package/dist/chunk-L7MGGL7Q.mjs.map +1 -0
  96. package/dist/chunk-LITIVHN4.js +73 -0
  97. package/dist/chunk-LITIVHN4.js.map +1 -0
  98. package/dist/chunk-LU3J2EYE.js +51 -0
  99. package/dist/chunk-LU3J2EYE.js.map +1 -0
  100. package/dist/chunk-LX37AMSK.mjs +78 -0
  101. package/dist/chunk-LX37AMSK.mjs.map +1 -0
  102. package/dist/chunk-LYOKCYHO.mjs +1 -0
  103. package/dist/chunk-LYOKCYHO.mjs.map +1 -0
  104. package/dist/chunk-MDJZ4K3U.mjs +45 -0
  105. package/dist/chunk-MDJZ4K3U.mjs.map +1 -0
  106. package/dist/chunk-MVPKNRLA.mjs +21 -0
  107. package/dist/chunk-MVPKNRLA.mjs.map +1 -0
  108. package/dist/chunk-MYMH4S2N.mjs +23 -0
  109. package/dist/chunk-MYMH4S2N.mjs.map +1 -0
  110. package/dist/chunk-NE2GDZGZ.mjs +67 -0
  111. package/dist/chunk-NE2GDZGZ.mjs.map +1 -0
  112. package/dist/chunk-NTDD6M3B.mjs +32 -0
  113. package/dist/chunk-NTDD6M3B.mjs.map +1 -0
  114. package/dist/chunk-NUKEBOOL.js +78 -0
  115. package/dist/chunk-NUKEBOOL.js.map +1 -0
  116. package/dist/chunk-OMP4SFLK.js +1 -0
  117. package/dist/chunk-OMP4SFLK.js.map +1 -0
  118. package/dist/chunk-OU3QPU6E.mjs +45 -0
  119. package/dist/chunk-OU3QPU6E.mjs.map +1 -0
  120. package/dist/chunk-OUD66G6O.mjs +74 -0
  121. package/dist/chunk-OUD66G6O.mjs.map +1 -0
  122. package/dist/chunk-PEMZWIHQ.js +39 -0
  123. package/dist/chunk-PEMZWIHQ.js.map +1 -0
  124. package/dist/chunk-PSAM7MJM.mjs +78 -0
  125. package/dist/chunk-PSAM7MJM.mjs.map +1 -0
  126. package/dist/chunk-RC7LBS3H.js +35 -0
  127. package/dist/chunk-RC7LBS3H.js.map +1 -0
  128. package/dist/chunk-RHGOSBUT.js +21 -0
  129. package/dist/chunk-RHGOSBUT.js.map +1 -0
  130. package/dist/chunk-RKCEAMYH.mjs +18 -0
  131. package/dist/chunk-RKCEAMYH.mjs.map +1 -0
  132. package/dist/chunk-RWLBQVYX.mjs +73 -0
  133. package/dist/chunk-RWLBQVYX.mjs.map +1 -0
  134. package/dist/chunk-RZDRHJXI.js +23 -0
  135. package/dist/{cjs/endowments/web-assembly.js.map → chunk-RZDRHJXI.js.map} +1 -1
  136. package/dist/chunk-SCXW3FQO.js +49 -0
  137. package/dist/chunk-SCXW3FQO.js.map +1 -0
  138. package/dist/chunk-SMWKMPHG.mjs +35 -0
  139. package/dist/chunk-SMWKMPHG.mjs.map +1 -0
  140. package/dist/chunk-SXSNJEE7.js +18 -0
  141. package/dist/chunk-SXSNJEE7.js.map +1 -0
  142. package/dist/chunk-TNIGT6KN.js +32 -0
  143. package/dist/chunk-TNIGT6KN.js.map +1 -0
  144. package/dist/chunk-TRB2LS4N.js +54 -0
  145. package/dist/chunk-TRB2LS4N.js.map +1 -0
  146. package/dist/chunk-TZRCALSV.mjs +54 -0
  147. package/dist/chunk-TZRCALSV.mjs.map +1 -0
  148. package/dist/chunk-UJZ3HNXS.mjs +23 -0
  149. package/dist/chunk-UJZ3HNXS.mjs.map +1 -0
  150. package/dist/chunk-UXVJ7HYO.js +78 -0
  151. package/dist/{cjs/restricted/getBip32PublicKey.js.map → chunk-UXVJ7HYO.js.map} +1 -1
  152. package/dist/chunk-UYSXSKML.js +82 -0
  153. package/dist/chunk-UYSXSKML.js.map +1 -0
  154. package/dist/chunk-VFI5FR5U.mjs +119 -0
  155. package/dist/chunk-VFI5FR5U.mjs.map +1 -0
  156. package/dist/chunk-VRDGSBXX.mjs +78 -0
  157. package/dist/chunk-VRDGSBXX.mjs.map +1 -0
  158. package/dist/chunk-VSVVWO3W.mjs +42 -0
  159. package/dist/chunk-VSVVWO3W.mjs.map +1 -0
  160. package/dist/chunk-VZBSLVVA.js +23 -0
  161. package/dist/{cjs/endowments/ethereum-provider.js.map → chunk-VZBSLVVA.js.map} +1 -1
  162. package/dist/chunk-W2VJ5TWL.js +54 -0
  163. package/dist/chunk-W2VJ5TWL.js.map +1 -0
  164. package/dist/chunk-WHWFVRFH.js +69 -0
  165. package/dist/chunk-WHWFVRFH.js.map +1 -0
  166. package/dist/chunk-WI23VKOX.mjs +21 -0
  167. package/dist/chunk-WI23VKOX.mjs.map +1 -0
  168. package/dist/chunk-XAQ2P3BY.js +188 -0
  169. package/dist/chunk-XAQ2P3BY.js.map +1 -0
  170. package/dist/chunk-Y5ENHOIY.mjs +47 -0
  171. package/dist/chunk-Y5ENHOIY.mjs.map +1 -0
  172. package/dist/chunk-Y6EL5DBH.mjs +75 -0
  173. package/dist/chunk-Y6EL5DBH.mjs.map +1 -0
  174. package/dist/chunk-Y7DF3ZHO.mjs +1 -0
  175. package/dist/chunk-Y7DF3ZHO.mjs.map +1 -0
  176. package/dist/chunk-YJ3ZFIA7.mjs +51 -0
  177. package/dist/chunk-YJ3ZFIA7.mjs.map +1 -0
  178. package/dist/chunk-YK6IFDRN.mjs +151 -0
  179. package/dist/chunk-YK6IFDRN.mjs.map +1 -0
  180. package/dist/chunk-YN3OMGA5.mjs +69 -0
  181. package/dist/chunk-YN3OMGA5.mjs.map +1 -0
  182. package/dist/chunk-ZLLV3F4G.js +43 -0
  183. package/dist/chunk-ZLLV3F4G.js.map +1 -0
  184. package/dist/chunk-ZP3L7LAQ.mjs +18 -0
  185. package/dist/chunk-ZP3L7LAQ.mjs.map +1 -0
  186. package/dist/endowments/caveats/generic.js +7 -0
  187. package/dist/endowments/caveats/generic.js.map +1 -0
  188. package/dist/endowments/caveats/generic.mjs +7 -0
  189. package/dist/endowments/caveats/generic.mjs.map +1 -0
  190. package/dist/endowments/caveats/index.js +18 -0
  191. package/dist/endowments/caveats/index.js.map +1 -0
  192. package/dist/endowments/caveats/index.mjs +18 -0
  193. package/dist/endowments/caveats/index.mjs.map +1 -0
  194. package/dist/endowments/caveats/requestTime.js +13 -0
  195. package/dist/endowments/caveats/requestTime.js.map +1 -0
  196. package/dist/endowments/caveats/requestTime.mjs +13 -0
  197. package/dist/endowments/caveats/requestTime.mjs.map +1 -0
  198. package/dist/endowments/cronjob.js +16 -0
  199. package/dist/endowments/cronjob.js.map +1 -0
  200. package/dist/endowments/cronjob.mjs +16 -0
  201. package/dist/endowments/cronjob.mjs.map +1 -0
  202. package/dist/endowments/enum.js +7 -0
  203. package/dist/endowments/enum.js.map +1 -0
  204. package/dist/endowments/enum.mjs +7 -0
  205. package/dist/endowments/enum.mjs.map +1 -0
  206. package/dist/endowments/ethereum-provider.js +8 -0
  207. package/dist/endowments/ethereum-provider.js.map +1 -0
  208. package/dist/endowments/ethereum-provider.mjs +8 -0
  209. package/dist/endowments/ethereum-provider.mjs.map +1 -0
  210. package/dist/endowments/home-page.js +8 -0
  211. package/dist/endowments/home-page.js.map +1 -0
  212. package/dist/endowments/home-page.mjs +8 -0
  213. package/dist/endowments/home-page.mjs.map +1 -0
  214. package/dist/endowments/index.js +54 -0
  215. package/dist/endowments/index.js.map +1 -0
  216. package/dist/endowments/index.mjs +54 -0
  217. package/dist/endowments/index.mjs.map +1 -0
  218. package/dist/endowments/keyring.js +17 -0
  219. package/dist/endowments/keyring.js.map +1 -0
  220. package/dist/endowments/keyring.mjs +17 -0
  221. package/dist/endowments/keyring.mjs.map +1 -0
  222. package/dist/endowments/lifecycle-hooks.js +8 -0
  223. package/dist/endowments/lifecycle-hooks.js.map +1 -0
  224. package/dist/endowments/lifecycle-hooks.mjs +8 -0
  225. package/dist/endowments/lifecycle-hooks.mjs.map +1 -0
  226. package/dist/endowments/name-lookup.js +19 -0
  227. package/dist/endowments/name-lookup.js.map +1 -0
  228. package/dist/endowments/name-lookup.mjs +19 -0
  229. package/dist/endowments/name-lookup.mjs.map +1 -0
  230. package/dist/endowments/network-access.js +8 -0
  231. package/dist/endowments/network-access.js.map +1 -0
  232. package/dist/endowments/network-access.mjs +8 -0
  233. package/dist/endowments/network-access.mjs.map +1 -0
  234. package/dist/endowments/rpc.js +17 -0
  235. package/dist/endowments/rpc.js.map +1 -0
  236. package/dist/endowments/rpc.mjs +17 -0
  237. package/dist/endowments/rpc.mjs.map +1 -0
  238. package/dist/endowments/signature-insight.js +17 -0
  239. package/dist/endowments/signature-insight.js.map +1 -0
  240. package/dist/endowments/signature-insight.mjs +17 -0
  241. package/dist/endowments/signature-insight.mjs.map +1 -0
  242. package/dist/endowments/transaction-insight.js +17 -0
  243. package/dist/endowments/transaction-insight.js.map +1 -0
  244. package/dist/endowments/transaction-insight.mjs +17 -0
  245. package/dist/endowments/transaction-insight.mjs.map +1 -0
  246. package/dist/endowments/web-assembly.js +8 -0
  247. package/dist/endowments/web-assembly.js.map +1 -0
  248. package/dist/endowments/web-assembly.mjs +8 -0
  249. package/dist/endowments/web-assembly.mjs.map +1 -0
  250. package/dist/index.js +118 -0
  251. package/dist/index.js.map +1 -0
  252. package/dist/index.mjs +118 -0
  253. package/dist/index.mjs.map +1 -0
  254. package/dist/permissions.js +43 -0
  255. package/dist/permissions.js.map +1 -0
  256. package/dist/permissions.mjs +43 -0
  257. package/dist/permissions.mjs.map +1 -0
  258. package/dist/permitted/createInterface.js +7 -0
  259. package/dist/permitted/createInterface.js.map +1 -0
  260. package/dist/permitted/createInterface.mjs +7 -0
  261. package/dist/permitted/createInterface.mjs.map +1 -0
  262. package/dist/permitted/getAllSnaps.js +7 -0
  263. package/dist/permitted/getAllSnaps.js.map +1 -0
  264. package/dist/permitted/getAllSnaps.mjs +7 -0
  265. package/dist/permitted/getAllSnaps.mjs.map +1 -0
  266. package/dist/permitted/getClientStatus.js +7 -0
  267. package/dist/permitted/getClientStatus.js.map +1 -0
  268. package/dist/permitted/getClientStatus.mjs +7 -0
  269. package/dist/permitted/getClientStatus.mjs.map +1 -0
  270. package/dist/permitted/getFile.js +9 -0
  271. package/dist/permitted/getFile.js.map +1 -0
  272. package/dist/permitted/getFile.mjs +9 -0
  273. package/dist/permitted/getFile.mjs.map +1 -0
  274. package/dist/permitted/getInterfaceState.js +7 -0
  275. package/dist/permitted/getInterfaceState.js.map +1 -0
  276. package/dist/permitted/getInterfaceState.mjs +7 -0
  277. package/dist/permitted/getInterfaceState.mjs.map +1 -0
  278. package/dist/permitted/getSnaps.js +7 -0
  279. package/dist/permitted/getSnaps.js.map +1 -0
  280. package/dist/permitted/getSnaps.mjs +7 -0
  281. package/dist/permitted/getSnaps.mjs.map +1 -0
  282. package/dist/permitted/handlers.js +20 -0
  283. package/dist/permitted/handlers.js.map +1 -0
  284. package/dist/permitted/handlers.mjs +20 -0
  285. package/dist/permitted/handlers.mjs.map +1 -0
  286. package/dist/permitted/index.js +26 -0
  287. package/dist/permitted/index.js.map +1 -0
  288. package/dist/permitted/index.mjs +26 -0
  289. package/dist/permitted/index.mjs.map +1 -0
  290. package/dist/permitted/invokeKeyring.js +8 -0
  291. package/dist/permitted/invokeKeyring.js.map +1 -0
  292. package/dist/permitted/invokeKeyring.mjs +8 -0
  293. package/dist/permitted/invokeKeyring.mjs.map +1 -0
  294. package/dist/permitted/invokeSnapSugar.js +11 -0
  295. package/dist/permitted/invokeSnapSugar.js.map +1 -0
  296. package/dist/permitted/invokeSnapSugar.mjs +11 -0
  297. package/dist/permitted/invokeSnapSugar.mjs.map +1 -0
  298. package/dist/permitted/middleware.js +20 -0
  299. package/dist/permitted/middleware.js.map +1 -0
  300. package/dist/permitted/middleware.mjs +20 -0
  301. package/dist/permitted/middleware.mjs.map +1 -0
  302. package/dist/permitted/requestSnaps.js +12 -0
  303. package/dist/permitted/requestSnaps.js.map +1 -0
  304. package/dist/permitted/requestSnaps.mjs +12 -0
  305. package/dist/permitted/requestSnaps.mjs.map +1 -0
  306. package/dist/permitted/updateInterface.js +7 -0
  307. package/dist/permitted/updateInterface.js.map +1 -0
  308. package/dist/permitted/updateInterface.mjs +7 -0
  309. package/dist/permitted/updateInterface.mjs.map +1 -0
  310. package/dist/restricted/caveats/index.js +17 -0
  311. package/dist/restricted/caveats/index.js.map +1 -0
  312. package/dist/restricted/caveats/index.mjs +17 -0
  313. package/dist/restricted/caveats/index.mjs.map +1 -0
  314. package/dist/restricted/caveats/permittedCoinTypes.js +13 -0
  315. package/dist/restricted/caveats/permittedCoinTypes.js.map +1 -0
  316. package/dist/restricted/caveats/permittedCoinTypes.mjs +13 -0
  317. package/dist/restricted/caveats/permittedCoinTypes.mjs.map +1 -0
  318. package/dist/restricted/caveats/permittedDerivationPaths.js +13 -0
  319. package/dist/restricted/caveats/permittedDerivationPaths.js.map +1 -0
  320. package/dist/restricted/caveats/permittedDerivationPaths.mjs +13 -0
  321. package/dist/restricted/caveats/permittedDerivationPaths.mjs.map +1 -0
  322. package/dist/restricted/caveats/snapIds.js +11 -0
  323. package/dist/restricted/caveats/snapIds.js.map +1 -0
  324. package/dist/restricted/caveats/snapIds.mjs +11 -0
  325. package/dist/restricted/caveats/snapIds.mjs.map +1 -0
  326. package/dist/restricted/dialog.js +9 -0
  327. package/dist/restricted/dialog.js.map +1 -0
  328. package/dist/restricted/dialog.mjs +9 -0
  329. package/dist/restricted/dialog.mjs.map +1 -0
  330. package/dist/restricted/getBip32Entropy.js +10 -0
  331. package/dist/restricted/getBip32Entropy.js.map +1 -0
  332. package/dist/restricted/getBip32Entropy.mjs +10 -0
  333. package/dist/restricted/getBip32Entropy.mjs.map +1 -0
  334. package/dist/restricted/getBip32PublicKey.js +12 -0
  335. package/dist/restricted/getBip32PublicKey.js.map +1 -0
  336. package/dist/restricted/getBip32PublicKey.mjs +12 -0
  337. package/dist/restricted/getBip32PublicKey.mjs.map +1 -0
  338. package/dist/restricted/getBip44Entropy.js +9 -0
  339. package/dist/restricted/getBip44Entropy.js.map +1 -0
  340. package/dist/restricted/getBip44Entropy.mjs +9 -0
  341. package/dist/restricted/getBip44Entropy.mjs.map +1 -0
  342. package/dist/restricted/getEntropy.js +10 -0
  343. package/dist/restricted/getEntropy.js.map +1 -0
  344. package/dist/restricted/getEntropy.mjs +10 -0
  345. package/dist/restricted/getEntropy.mjs.map +1 -0
  346. package/dist/restricted/getLocale.js +11 -0
  347. package/dist/restricted/getLocale.js.map +1 -0
  348. package/dist/restricted/getLocale.mjs +11 -0
  349. package/dist/restricted/getLocale.mjs.map +1 -0
  350. package/dist/restricted/index.js +33 -0
  351. package/dist/restricted/index.js.map +1 -0
  352. package/dist/restricted/index.mjs +33 -0
  353. package/dist/restricted/index.mjs.map +1 -0
  354. package/dist/restricted/invokeSnap.js +13 -0
  355. package/dist/restricted/invokeSnap.js.map +1 -0
  356. package/dist/restricted/invokeSnap.mjs +13 -0
  357. package/dist/restricted/invokeSnap.mjs.map +1 -0
  358. package/dist/restricted/manageAccounts.js +13 -0
  359. package/dist/restricted/manageAccounts.js.map +1 -0
  360. package/dist/restricted/manageAccounts.mjs +13 -0
  361. package/dist/restricted/manageAccounts.mjs.map +1 -0
  362. package/dist/restricted/manageState.js +20 -0
  363. package/dist/restricted/manageState.js.map +1 -0
  364. package/dist/restricted/manageState.mjs +20 -0
  365. package/dist/restricted/manageState.mjs.map +1 -0
  366. package/dist/restricted/notify.js +13 -0
  367. package/dist/restricted/notify.js.map +1 -0
  368. package/dist/restricted/notify.mjs +13 -0
  369. package/dist/restricted/notify.mjs.map +1 -0
  370. package/dist/tsconfig.build.tsbuildinfo +1 -0
  371. package/dist/utils.js +13 -0
  372. package/dist/utils.js.map +1 -0
  373. package/dist/utils.mjs +13 -0
  374. package/dist/utils.mjs.map +1 -0
  375. package/package.json +21 -18
  376. package/dist/cjs/endowments/caveats/generic.js +0 -40
  377. package/dist/cjs/endowments/caveats/generic.js.map +0 -1
  378. package/dist/cjs/endowments/caveats/index.js +0 -21
  379. package/dist/cjs/endowments/caveats/index.js.map +0 -1
  380. package/dist/cjs/endowments/caveats/requestTime.js +0 -99
  381. package/dist/cjs/endowments/caveats/requestTime.js.map +0 -1
  382. package/dist/cjs/endowments/cronjob.js +0 -100
  383. package/dist/cjs/endowments/cronjob.js.map +0 -1
  384. package/dist/cjs/endowments/enum.js +0 -26
  385. package/dist/cjs/endowments/enum.js.map +0 -1
  386. package/dist/cjs/endowments/ethereum-provider.js +0 -43
  387. package/dist/cjs/endowments/home-page.js +0 -37
  388. package/dist/cjs/endowments/home-page.js.map +0 -1
  389. package/dist/cjs/endowments/index.js +0 -121
  390. package/dist/cjs/endowments/index.js.map +0 -1
  391. package/dist/cjs/endowments/keyring.js +0 -104
  392. package/dist/cjs/endowments/keyring.js.map +0 -1
  393. package/dist/cjs/endowments/lifecycle-hooks.js +0 -37
  394. package/dist/cjs/endowments/lifecycle-hooks.js.map +0 -1
  395. package/dist/cjs/endowments/name-lookup.js +0 -148
  396. package/dist/cjs/endowments/name-lookup.js.map +0 -1
  397. package/dist/cjs/endowments/network-access.js +0 -44
  398. package/dist/cjs/endowments/network-access.js.map +0 -1
  399. package/dist/cjs/endowments/rpc.js +0 -103
  400. package/dist/cjs/endowments/rpc.js.map +0 -1
  401. package/dist/cjs/endowments/signature-insight.js +0 -110
  402. package/dist/cjs/endowments/signature-insight.js.map +0 -1
  403. package/dist/cjs/endowments/transaction-insight.js +0 -111
  404. package/dist/cjs/endowments/transaction-insight.js.map +0 -1
  405. package/dist/cjs/endowments/web-assembly.js +0 -42
  406. package/dist/cjs/index.js +0 -45
  407. package/dist/cjs/index.js.map +0 -1
  408. package/dist/cjs/permissions.js +0 -62
  409. package/dist/cjs/permissions.js.map +0 -1
  410. package/dist/cjs/permitted/createInterface.js +0 -68
  411. package/dist/cjs/permitted/createInterface.js.map +0 -1
  412. package/dist/cjs/permitted/getAllSnaps.js +0 -44
  413. package/dist/cjs/permitted/getAllSnaps.js.map +0 -1
  414. package/dist/cjs/permitted/getClientStatus.js +0 -40
  415. package/dist/cjs/permitted/getClientStatus.js.map +0 -1
  416. package/dist/cjs/permitted/getFile.js +0 -63
  417. package/dist/cjs/permitted/getFile.js.map +0 -1
  418. package/dist/cjs/permitted/getInterfaceState.js +0 -67
  419. package/dist/cjs/permitted/getInterfaceState.js.map +0 -1
  420. package/dist/cjs/permitted/getSnaps.js +0 -39
  421. package/dist/cjs/permitted/getSnaps.js.map +0 -1
  422. package/dist/cjs/permitted/handlers.js +0 -43
  423. package/dist/cjs/permitted/handlers.js.map +0 -1
  424. package/dist/cjs/permitted/index.js +0 -21
  425. package/dist/cjs/permitted/index.js.map +0 -1
  426. package/dist/cjs/permitted/invokeKeyring.js +0 -87
  427. package/dist/cjs/permitted/invokeKeyring.js.map +0 -1
  428. package/dist/cjs/permitted/invokeSnapSugar.js +0 -62
  429. package/dist/cjs/permitted/invokeSnapSugar.js.map +0 -1
  430. package/dist/cjs/permitted/middleware.js +0 -38
  431. package/dist/cjs/permitted/middleware.js.map +0 -1
  432. package/dist/cjs/permitted/requestSnaps.js +0 -123
  433. package/dist/cjs/permitted/requestSnaps.js.map +0 -1
  434. package/dist/cjs/permitted/updateInterface.js +0 -70
  435. package/dist/cjs/permitted/updateInterface.js.map +0 -1
  436. package/dist/cjs/restricted/caveats/index.js +0 -38
  437. package/dist/cjs/restricted/caveats/index.js.map +0 -1
  438. package/dist/cjs/restricted/caveats/permittedCoinTypes.js +0 -83
  439. package/dist/cjs/restricted/caveats/permittedCoinTypes.js.map +0 -1
  440. package/dist/cjs/restricted/caveats/permittedDerivationPaths.js +0 -67
  441. package/dist/cjs/restricted/caveats/permittedDerivationPaths.js.map +0 -1
  442. package/dist/cjs/restricted/caveats/snapIds.js +0 -59
  443. package/dist/cjs/restricted/caveats/snapIds.js.map +0 -1
  444. package/dist/cjs/restricted/dialog.js +0 -172
  445. package/dist/cjs/restricted/dialog.js.map +0 -1
  446. package/dist/cjs/restricted/getBip32Entropy.js +0 -76
  447. package/dist/cjs/restricted/getBip32Entropy.js.map +0 -1
  448. package/dist/cjs/restricted/getBip32PublicKey.js +0 -91
  449. package/dist/cjs/restricted/getBip44Entropy.js +0 -76
  450. package/dist/cjs/restricted/getBip44Entropy.js.map +0 -1
  451. package/dist/cjs/restricted/getEntropy.js +0 -76
  452. package/dist/cjs/restricted/getEntropy.js.map +0 -1
  453. package/dist/cjs/restricted/getLocale.js +0 -49
  454. package/dist/cjs/restricted/getLocale.js.map +0 -1
  455. package/dist/cjs/restricted/index.js +0 -59
  456. package/dist/cjs/restricted/index.js.map +0 -1
  457. package/dist/cjs/restricted/invokeSnap.js +0 -99
  458. package/dist/cjs/restricted/invokeSnap.js.map +0 -1
  459. package/dist/cjs/restricted/manageAccounts.js +0 -68
  460. package/dist/cjs/restricted/manageAccounts.js.map +0 -1
  461. package/dist/cjs/restricted/manageState.js +0 -208
  462. package/dist/cjs/restricted/manageState.js.map +0 -1
  463. package/dist/cjs/restricted/notify.js +0 -92
  464. package/dist/cjs/restricted/notify.js.map +0 -1
  465. package/dist/cjs/utils.js +0 -98
  466. package/dist/esm/endowments/caveats/generic.js +0 -40
  467. package/dist/esm/endowments/caveats/generic.js.map +0 -1
  468. package/dist/esm/endowments/caveats/index.js +0 -4
  469. package/dist/esm/endowments/caveats/index.js.map +0 -1
  470. package/dist/esm/endowments/caveats/requestTime.js +0 -93
  471. package/dist/esm/endowments/caveats/requestTime.js.map +0 -1
  472. package/dist/esm/endowments/cronjob.js +0 -99
  473. package/dist/esm/endowments/cronjob.js.map +0 -1
  474. package/dist/esm/endowments/enum.js +0 -16
  475. package/dist/esm/endowments/enum.js.map +0 -1
  476. package/dist/esm/endowments/ethereum-provider.js +0 -33
  477. package/dist/esm/endowments/ethereum-provider.js.map +0 -1
  478. package/dist/esm/endowments/home-page.js +0 -27
  479. package/dist/esm/endowments/home-page.js.map +0 -1
  480. package/dist/esm/endowments/index.js +0 -68
  481. package/dist/esm/endowments/index.js.map +0 -1
  482. package/dist/esm/endowments/keyring.js +0 -95
  483. package/dist/esm/endowments/keyring.js.map +0 -1
  484. package/dist/esm/endowments/lifecycle-hooks.js +0 -27
  485. package/dist/esm/endowments/lifecycle-hooks.js.map +0 -1
  486. package/dist/esm/endowments/name-lookup.js +0 -146
  487. package/dist/esm/endowments/name-lookup.js.map +0 -1
  488. package/dist/esm/endowments/network-access.js +0 -34
  489. package/dist/esm/endowments/network-access.js.map +0 -1
  490. package/dist/esm/endowments/rpc.js +0 -92
  491. package/dist/esm/endowments/rpc.js.map +0 -1
  492. package/dist/esm/endowments/signature-insight.js +0 -103
  493. package/dist/esm/endowments/signature-insight.js.map +0 -1
  494. package/dist/esm/endowments/transaction-insight.js +0 -104
  495. package/dist/esm/endowments/transaction-insight.js.map +0 -1
  496. package/dist/esm/endowments/web-assembly.js +0 -32
  497. package/dist/esm/endowments/web-assembly.js.map +0 -1
  498. package/dist/esm/index.js +0 -8
  499. package/dist/esm/index.js.map +0 -1
  500. package/dist/esm/permissions.js +0 -51
  501. package/dist/esm/permissions.js.map +0 -1
  502. package/dist/esm/permitted/createInterface.js +0 -58
  503. package/dist/esm/permitted/createInterface.js.map +0 -1
  504. package/dist/esm/permitted/getAllSnaps.js +0 -37
  505. package/dist/esm/permitted/getAllSnaps.js.map +0 -1
  506. package/dist/esm/permitted/getClientStatus.js +0 -32
  507. package/dist/esm/permitted/getClientStatus.js.map +0 -1
  508. package/dist/esm/permitted/getFile.js +0 -45
  509. package/dist/esm/permitted/getFile.js.map +0 -1
  510. package/dist/esm/permitted/getInterfaceState.js +0 -57
  511. package/dist/esm/permitted/getInterfaceState.js.map +0 -1
  512. package/dist/esm/permitted/getSnaps.js +0 -31
  513. package/dist/esm/permitted/getSnaps.js.map +0 -1
  514. package/dist/esm/permitted/handlers.js +0 -25
  515. package/dist/esm/permitted/handlers.js.map +0 -1
  516. package/dist/esm/permitted/index.js +0 -4
  517. package/dist/esm/permitted/index.js.map +0 -1
  518. package/dist/esm/permitted/invokeKeyring.js +0 -79
  519. package/dist/esm/permitted/invokeKeyring.js.map +0 -1
  520. package/dist/esm/permitted/invokeSnapSugar.js +0 -60
  521. package/dist/esm/permitted/invokeSnapSugar.js.map +0 -1
  522. package/dist/esm/permitted/middleware.js +0 -34
  523. package/dist/esm/permitted/middleware.js.map +0 -1
  524. package/dist/esm/permitted/requestSnaps.js +0 -118
  525. package/dist/esm/permitted/requestSnaps.js.map +0 -1
  526. package/dist/esm/permitted/updateInterface.js +0 -60
  527. package/dist/esm/permitted/updateInterface.js.map +0 -1
  528. package/dist/esm/restricted/caveats/index.js +0 -20
  529. package/dist/esm/restricted/caveats/index.js.map +0 -1
  530. package/dist/esm/restricted/caveats/permittedCoinTypes.js +0 -77
  531. package/dist/esm/restricted/caveats/permittedCoinTypes.js.map +0 -1
  532. package/dist/esm/restricted/caveats/permittedDerivationPaths.js +0 -64
  533. package/dist/esm/restricted/caveats/permittedDerivationPaths.js.map +0 -1
  534. package/dist/esm/restricted/caveats/snapIds.js +0 -50
  535. package/dist/esm/restricted/caveats/snapIds.js.map +0 -1
  536. package/dist/esm/restricted/dialog.js +0 -164
  537. package/dist/esm/restricted/dialog.js.map +0 -1
  538. package/dist/esm/restricted/getBip32Entropy.js +0 -67
  539. package/dist/esm/restricted/getBip32Entropy.js.map +0 -1
  540. package/dist/esm/restricted/getBip32PublicKey.js +0 -79
  541. package/dist/esm/restricted/getBip32PublicKey.js.map +0 -1
  542. package/dist/esm/restricted/getBip44Entropy.js +0 -69
  543. package/dist/esm/restricted/getBip44Entropy.js.map +0 -1
  544. package/dist/esm/restricted/getEntropy.js +0 -58
  545. package/dist/esm/restricted/getEntropy.js.map +0 -1
  546. package/dist/esm/restricted/getLocale.js +0 -42
  547. package/dist/esm/restricted/getLocale.js.map +0 -1
  548. package/dist/esm/restricted/index.js +0 -27
  549. package/dist/esm/restricted/index.js.map +0 -1
  550. package/dist/esm/restricted/invokeSnap.js +0 -89
  551. package/dist/esm/restricted/invokeSnap.js.map +0 -1
  552. package/dist/esm/restricted/manageAccounts.js +0 -60
  553. package/dist/esm/restricted/manageAccounts.js.map +0 -1
  554. package/dist/esm/restricted/manageState.js +0 -225
  555. package/dist/esm/restricted/manageState.js.map +0 -1
  556. package/dist/esm/restricted/notify.js +0 -92
  557. package/dist/esm/restricted/notify.js.map +0 -1
  558. package/dist/esm/utils.js +0 -124
  559. package/dist/esm/utils.js.map +0 -1
@@ -0,0 +1,54 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/restricted/manageAccounts.ts
2
+ var _permissioncontroller = require('@metamask/permission-controller');
3
+ var _utils = require('@metamask/utils');
4
+ var _superstruct = require('superstruct');
5
+ var SnapMessageStruct = _superstruct.union.call(void 0, [
6
+ _superstruct.object.call(void 0, {
7
+ method: _superstruct.string.call(void 0, )
8
+ }),
9
+ _superstruct.object.call(void 0, {
10
+ method: _superstruct.string.call(void 0, ),
11
+ params: _superstruct.union.call(void 0, [_superstruct.array.call(void 0, _utils.JsonStruct), _superstruct.record.call(void 0, _superstruct.string.call(void 0, ), _utils.JsonStruct)])
12
+ })
13
+ ]);
14
+ var methodName = "snap_manageAccounts";
15
+ var specificationBuilder = ({
16
+ allowedCaveats = null,
17
+ methodHooks
18
+ }) => {
19
+ return {
20
+ permissionType: _permissioncontroller.PermissionType.RestrictedMethod,
21
+ targetName: methodName,
22
+ allowedCaveats,
23
+ methodImplementation: manageAccountsImplementation(methodHooks),
24
+ subjectTypes: [_permissioncontroller.SubjectType.Snap]
25
+ };
26
+ };
27
+ function manageAccountsImplementation({
28
+ getSnapKeyring
29
+ }) {
30
+ return async function manageAccounts(options) {
31
+ const {
32
+ context: { origin },
33
+ params
34
+ } = options;
35
+ _superstruct.assert.call(void 0, params, SnapMessageStruct);
36
+ const keyring = await getSnapKeyring(origin);
37
+ return await keyring.handleKeyringSnapMessage(origin, params);
38
+ };
39
+ }
40
+ var manageAccountsBuilder = Object.freeze({
41
+ targetName: methodName,
42
+ specificationBuilder,
43
+ methodHooks: {
44
+ getSnapKeyring: true
45
+ }
46
+ });
47
+
48
+
49
+
50
+
51
+
52
+
53
+ exports.methodName = methodName; exports.specificationBuilder = specificationBuilder; exports.manageAccountsImplementation = manageAccountsImplementation; exports.manageAccountsBuilder = manageAccountsBuilder;
54
+ //# sourceMappingURL=chunk-TRB2LS4N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/restricted/manageAccounts.ts"],"names":[],"mappings":";AAKA,SAAS,aAAa,sBAAsB;AAO5C,SAAS,kBAAkB;AAC3B,SAAS,QAAQ,QAAQ,QAAQ,OAAO,OAAO,cAAc;AAE7D,IAAM,oBAAoB,MAAM;AAAA,EAC9B,OAAO;AAAA,IACL,QAAQ,OAAO;AAAA,EACjB,CAAC;AAAA,EACD,OAAO;AAAA,IACL,QAAQ,OAAO;AAAA,IACf,QAAQ,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,OAAO,GAAG,UAAU,CAAC,CAAC;AAAA,EACjE,CAAC;AACH,CAAC;AAIM,IAAM,aAAa;AAmCnB,IAAM,uBAIT,CAAC;AAAA,EACH,iBAAiB;AAAA,EACjB;AACF,MAAiD;AAC/C,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ;AAAA,IACA,sBAAsB,6BAA6B,WAAW;AAAA,IAC9D,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAWO,SAAS,6BAA6B;AAAA,EAC3C;AACF,GAA8B;AAC5B,SAAO,eAAe,eACpB,SAC+B;AAC/B,UAAM;AAAA,MACJ,SAAS,EAAE,OAAO;AAAA,MAClB;AAAA,IACF,IAAI;AAEJ,WAAO,QAAQ,iBAAiB;AAChC,UAAM,UAAU,MAAM,eAAe,MAAM;AAC3C,WAAO,MAAM,QAAQ,yBAAyB,QAAQ,MAAM;AAAA,EAC9D;AACF;AAEO,IAAM,wBAAwB,OAAO,OAAO;AAAA,EACjD,YAAY;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,IACX,gBAAgB;AAAA,EAClB;AACF,CAAU","sourcesContent":["import type {\n RestrictedMethodOptions,\n ValidPermissionSpecification,\n PermissionSpecificationBuilder,\n} from '@metamask/permission-controller';\nimport { SubjectType, PermissionType } from '@metamask/permission-controller';\nimport type {\n ManageAccountsParams,\n ManageAccountsResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\nimport { assert, string, object, union, array, record } from 'superstruct';\n\nconst SnapMessageStruct = union([\n object({\n method: string(),\n }),\n object({\n method: string(),\n params: union([array(JsonStruct), record(string(), JsonStruct)]),\n }),\n]);\n\ntype Message = InferMatching<typeof SnapMessageStruct, ManageAccountsParams>;\n\nexport const methodName = 'snap_manageAccounts';\n\nexport type ManageAccountsMethodHooks = {\n /**\n * Gets the snap keyring implementation.\n */\n getSnapKeyring: (snapOrigin: string) => Promise<{\n handleKeyringSnapMessage: (\n snapId: string,\n message: Message,\n ) => Promise<Json>;\n }>;\n};\n\ntype ManageAccountsSpecificationBuilderOptions = {\n allowedCaveats?: Readonly<NonEmptyArray<string>> | null;\n methodHooks: ManageAccountsMethodHooks;\n};\n\ntype ManageAccountsSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.RestrictedMethod;\n targetName: typeof methodName;\n methodImplementation: ReturnType<typeof manageAccountsImplementation>;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * The specification builder for the `snap_manageAccounts` permission.\n * `snap_manageAccounts` lets the Snap manage a set of accounts via a custom keyring.\n *\n * @param options - The specification builder options.\n * @param options.allowedCaveats - The optional allowed caveats for the permission.\n * @param options.methodHooks - The RPC method hooks needed by the method implementation.\n * @returns The specification for the `snap_manageAccounts` permission.\n */\nexport const specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.RestrictedMethod,\n ManageAccountsSpecificationBuilderOptions,\n ManageAccountsSpecification\n> = ({\n allowedCaveats = null,\n methodHooks,\n}: ManageAccountsSpecificationBuilderOptions) => {\n return {\n permissionType: PermissionType.RestrictedMethod,\n targetName: methodName,\n allowedCaveats,\n methodImplementation: manageAccountsImplementation(methodHooks),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\n/**\n * Builds the method implementation for `snap_manageAccounts`.\n *\n * @param hooks - The RPC method hooks.\n * @param hooks.getSnapKeyring - A function to get the snap keyring.\n * @returns The method implementation which either returns `null` for a\n * successful state update/deletion or returns the decrypted state.\n * @throws If the params are invalid.\n */\nexport function manageAccountsImplementation({\n getSnapKeyring,\n}: ManageAccountsMethodHooks) {\n return async function manageAccounts(\n options: RestrictedMethodOptions<ManageAccountsParams>,\n ): Promise<ManageAccountsResult> {\n const {\n context: { origin },\n params,\n } = options;\n\n assert(params, SnapMessageStruct);\n const keyring = await getSnapKeyring(origin);\n return await keyring.handleKeyringSnapMessage(origin, params);\n };\n}\n\nexport const manageAccountsBuilder = Object.freeze({\n targetName: methodName,\n specificationBuilder,\n methodHooks: {\n getSnapKeyring: true,\n },\n} as const);\n"]}
@@ -0,0 +1,54 @@
1
+ // src/restricted/caveats/snapIds.ts
2
+ import { rpcErrors } from "@metamask/rpc-errors";
3
+ import { SnapCaveatType, SnapIdsStruct } from "@metamask/snaps-utils";
4
+ import { hasProperty, assertStruct } from "@metamask/utils";
5
+ import { type } from "superstruct";
6
+ function snapIdsCaveatMapper(value) {
7
+ return {
8
+ caveats: [
9
+ {
10
+ type: SnapCaveatType.SnapIds,
11
+ value
12
+ }
13
+ ]
14
+ };
15
+ }
16
+ function validateSnapIdsCaveat(caveat) {
17
+ assertStruct(
18
+ caveat,
19
+ type({
20
+ value: SnapIdsStruct
21
+ }),
22
+ "Expected caveat to have a value property of a non-empty object of snap IDs.",
23
+ rpcErrors.invalidParams
24
+ );
25
+ }
26
+ var SnapIdsCaveatSpecification = {
27
+ [SnapCaveatType.SnapIds]: Object.freeze({
28
+ type: SnapCaveatType.SnapIds,
29
+ validator: (caveat) => validateSnapIdsCaveat(caveat),
30
+ decorator: (method, caveat) => {
31
+ return async (args) => {
32
+ const {
33
+ params,
34
+ context: { origin }
35
+ } = args;
36
+ const snapIds = caveat.value;
37
+ const { snapId } = params;
38
+ if (!hasProperty(snapIds, snapId)) {
39
+ throw new Error(
40
+ `${origin} does not have permission to invoke ${snapId} snap.`
41
+ );
42
+ }
43
+ return await method(args);
44
+ };
45
+ }
46
+ })
47
+ };
48
+
49
+ export {
50
+ snapIdsCaveatMapper,
51
+ validateSnapIdsCaveat,
52
+ SnapIdsCaveatSpecification
53
+ };
54
+ //# sourceMappingURL=chunk-TZRCALSV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/restricted/caveats/snapIds.ts"],"sourcesContent":["import type {\n Caveat,\n RestrictedMethodOptions,\n RestrictedMethodParameters,\n RestrictedMethodCaveatSpecificationConstraint,\n PermissionConstraint,\n} from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { SnapIds } from '@metamask/snaps-utils';\nimport { SnapCaveatType, SnapIdsStruct } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\nimport { hasProperty, assertStruct } from '@metamask/utils';\nimport { type } from 'superstruct';\n\nimport type { InvokeSnapParams } from '../invokeSnap';\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function snapIdsCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.SnapIds,\n value,\n },\n ],\n };\n}\n\n/**\n * Validates that the caveat value exists and is a non-empty object.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat is invalid.\n */\nexport function validateSnapIdsCaveat(\n caveat: Caveat<string, any>,\n): asserts caveat is Caveat<string, SnapIds> {\n assertStruct(\n caveat,\n type({\n value: SnapIdsStruct,\n }),\n 'Expected caveat to have a value property of a non-empty object of snap IDs.',\n rpcErrors.invalidParams,\n );\n}\n\nexport const SnapIdsCaveatSpecification: Record<\n SnapCaveatType.SnapIds,\n RestrictedMethodCaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SnapIds]: Object.freeze({\n type: SnapCaveatType.SnapIds,\n validator: (caveat) => validateSnapIdsCaveat(caveat),\n decorator: (method, caveat) => {\n return async (args) => {\n const {\n params,\n context: { origin },\n }: RestrictedMethodOptions<RestrictedMethodParameters> = args;\n const snapIds = caveat.value;\n const { snapId } = params as InvokeSnapParams;\n if (!hasProperty(snapIds, snapId)) {\n throw new Error(\n `${origin} does not have permission to invoke ${snapId} snap.`,\n );\n }\n return await method(args);\n };\n },\n }),\n};\n"],"mappings":";AAOA,SAAS,iBAAiB;AAE1B,SAAS,gBAAgB,qBAAqB;AAE9C,SAAS,aAAa,oBAAoB;AAC1C,SAAS,YAAY;AAYd,SAAS,oBACd,OACuC;AACvC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM,eAAe;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAQO,SAAS,sBACd,QAC2C;AAC3C;AAAA,IACE;AAAA,IACA,KAAK;AAAA,MACH,OAAO;AAAA,IACT,CAAC;AAAA,IACD;AAAA,IACA,UAAU;AAAA,EACZ;AACF;AAEO,IAAM,6BAGT;AAAA,EACF,CAAC,eAAe,OAAO,GAAG,OAAO,OAAO;AAAA,IACtC,MAAM,eAAe;AAAA,IACrB,WAAW,CAAC,WAAW,sBAAsB,MAAM;AAAA,IACnD,WAAW,CAAC,QAAQ,WAAW;AAC7B,aAAO,OAAO,SAAS;AACrB,cAAM;AAAA,UACJ;AAAA,UACA,SAAS,EAAE,OAAO;AAAA,QACpB,IAAyD;AACzD,cAAM,UAAU,OAAO;AACvB,cAAM,EAAE,OAAO,IAAI;AACnB,YAAI,CAAC,YAAY,SAAS,MAAM,GAAG;AACjC,gBAAM,IAAI;AAAA,YACR,GAAG,MAAM,uCAAuC,MAAM;AAAA,UACxD;AAAA,QACF;AACA,eAAO,MAAM,OAAO,IAAI;AAAA,MAC1B;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,23 @@
1
+ // src/endowments/ethereum-provider.ts
2
+ import { PermissionType, SubjectType } from "@metamask/permission-controller";
3
+ var permissionName = "endowment:ethereum-provider" /* EthereumProvider */;
4
+ var specificationBuilder = (_builderOptions) => {
5
+ return {
6
+ permissionType: PermissionType.Endowment,
7
+ targetName: permissionName,
8
+ allowedCaveats: null,
9
+ endowmentGetter: (_getterOptions) => {
10
+ return ["ethereum"];
11
+ },
12
+ subjectTypes: [SubjectType.Snap]
13
+ };
14
+ };
15
+ var ethereumProviderEndowmentBuilder = Object.freeze({
16
+ targetName: permissionName,
17
+ specificationBuilder
18
+ });
19
+
20
+ export {
21
+ ethereumProviderEndowmentBuilder
22
+ };
23
+ //# sourceMappingURL=chunk-UJZ3HNXS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/endowments/ethereum-provider.ts"],"sourcesContent":["import type {\n EndowmentGetterParams,\n PermissionSpecificationBuilder,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.EthereumProvider;\n\ntype EthereumProviderEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: any) => ['ethereum'];\n allowedCaveats: null;\n}>;\n\n/**\n * `endowment:ethereum-provider` returns the name of the ethereum global browser API.\n * This is intended to populate the endowments of the\n * SES Compartment in which a Snap executes.\n *\n * This populates the global scope with an EIP-1193 provider, which DOES NOT implement all legacy functionality exposed to dapps.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the network endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n EthereumProviderEndowmentSpecification\n> = (_builderOptions?: any) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => {\n return ['ethereum'];\n },\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const ethereumProviderEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"],"mappings":";AAKA,SAAS,gBAAgB,mBAAmB;AAI5C,IAAM;AAmBN,IAAM,uBAIF,CAAC,oBAA0B;AAC7B,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,iBAAiB,CAAC,mBAA2C;AAC3D,aAAO,CAAC,UAAU;AAAA,IACpB;AAAA,IACA,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEO,IAAM,mCAAmC,OAAO,OAAO;AAAA,EAC5D,YAAY;AAAA,EACZ;AACF,CAAU;","names":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunk632BZ6JYjs = require('./chunk-632BZ6JY.js');
4
+
5
+ // src/restricted/getBip32PublicKey.ts
6
+ var _permissioncontroller = require('@metamask/permission-controller');
7
+ var _rpcerrors = require('@metamask/rpc-errors');
8
+
9
+
10
+
11
+
12
+ var _snapsutils = require('@metamask/snaps-utils');
13
+ var _utils = require('@metamask/utils');
14
+ var _superstruct = require('superstruct');
15
+ var targetName = "snap_getBip32PublicKey";
16
+ var Bip32PublicKeyArgsStruct = _snapsutils.bip32entropy.call(void 0,
17
+ _superstruct.object.call(void 0, {
18
+ path: _snapsutils.Bip32PathStruct,
19
+ curve: _superstruct.enums.call(void 0, ["ed25519", "secp256k1"]),
20
+ compressed: _superstruct.optional.call(void 0, _superstruct.boolean.call(void 0, ))
21
+ })
22
+ );
23
+ var specificationBuilder = ({ methodHooks: methodHooks2 }) => {
24
+ return {
25
+ permissionType: _permissioncontroller.PermissionType.RestrictedMethod,
26
+ targetName,
27
+ allowedCaveats: [_snapsutils.SnapCaveatType.PermittedDerivationPaths],
28
+ methodImplementation: getBip32PublicKeyImplementation(methodHooks2),
29
+ validator: ({ caveats }) => {
30
+ if (_optionalChain([caveats, 'optionalAccess', _ => _.length]) !== 1 || caveats[0].type !== _snapsutils.SnapCaveatType.PermittedDerivationPaths) {
31
+ throw _rpcerrors.rpcErrors.invalidParams({
32
+ message: `Expected a single "${_snapsutils.SnapCaveatType.PermittedDerivationPaths}" caveat.`
33
+ });
34
+ }
35
+ },
36
+ subjectTypes: [_permissioncontroller.SubjectType.Snap]
37
+ };
38
+ };
39
+ var methodHooks = {
40
+ getMnemonic: true,
41
+ getUnlockPromise: true
42
+ };
43
+ var getBip32PublicKeyBuilder = Object.freeze({
44
+ targetName,
45
+ specificationBuilder,
46
+ methodHooks
47
+ });
48
+ function getBip32PublicKeyImplementation({
49
+ getMnemonic,
50
+ getUnlockPromise
51
+ }) {
52
+ return async function getBip32PublicKey(args) {
53
+ await getUnlockPromise(true);
54
+ _utils.assertStruct.call(void 0,
55
+ args.params,
56
+ Bip32PublicKeyArgsStruct,
57
+ "Invalid BIP-32 public key params",
58
+ _rpcerrors.rpcErrors.invalidParams
59
+ );
60
+ const { params } = args;
61
+ const node = await _chunk632BZ6JYjs.getNode.call(void 0, {
62
+ curve: params.curve,
63
+ path: params.path,
64
+ secretRecoveryPhrase: await getMnemonic()
65
+ });
66
+ if (params.compressed) {
67
+ return node.compressedPublicKey;
68
+ }
69
+ return node.publicKey;
70
+ };
71
+ }
72
+
73
+
74
+
75
+
76
+
77
+ exports.Bip32PublicKeyArgsStruct = Bip32PublicKeyArgsStruct; exports.getBip32PublicKeyBuilder = getBip32PublicKeyBuilder; exports.getBip32PublicKeyImplementation = getBip32PublicKeyImplementation;
78
+ //# sourceMappingURL=chunk-UXVJ7HYO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/restricted/getBip32PublicKey.ts"],"sourcesContent":["import type {\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n RestrictedMethodOptions,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n GetBip32PublicKeyParams,\n GetBip32PublicKeyResult,\n} from '@metamask/snaps-sdk';\nimport {\n bip32entropy,\n Bip32PathStruct,\n SnapCaveatType,\n} from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\nimport { boolean, enums, object, optional } from 'superstruct';\n\nimport type { MethodHooksObject } from '../utils';\nimport { getNode } from '../utils';\n\nconst targetName = 'snap_getBip32PublicKey';\n\nexport type GetBip32PublicKeyMethodHooks = {\n /**\n * @returns The mnemonic of the user's primary keyring.\n */\n getMnemonic: () => Promise<Uint8Array>;\n\n /**\n * Waits for the extension to be unlocked.\n *\n * @returns A promise that resolves once the extension is unlocked.\n */\n getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;\n};\n\ntype GetBip32PublicKeySpecificationBuilderOptions = {\n methodHooks: GetBip32PublicKeyMethodHooks;\n};\n\ntype GetBip32PublicKeySpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.RestrictedMethod;\n targetName: typeof targetName;\n methodImplementation: ReturnType<typeof getBip32PublicKeyImplementation>;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\nexport const Bip32PublicKeyArgsStruct = bip32entropy(\n object({\n path: Bip32PathStruct,\n curve: enums(['ed25519', 'secp256k1']),\n compressed: optional(boolean()),\n }),\n);\n\n/**\n * The specification builder for the `snap_getBip32PublicKey` permission.\n * `snap_getBip32PublicKey` lets the Snap retrieve public keys for a particular\n * BIP-32 node.\n *\n * @param options - The specification builder options.\n * @param options.methodHooks - The RPC method hooks needed by the method implementation.\n * @returns The specification for the `snap_getBip32PublicKey` permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.RestrictedMethod,\n GetBip32PublicKeySpecificationBuilderOptions,\n GetBip32PublicKeySpecification\n> = ({ methodHooks }: GetBip32PublicKeySpecificationBuilderOptions) => {\n return {\n permissionType: PermissionType.RestrictedMethod,\n targetName,\n allowedCaveats: [SnapCaveatType.PermittedDerivationPaths],\n methodImplementation: getBip32PublicKeyImplementation(methodHooks),\n validator: ({ caveats }) => {\n if (\n caveats?.length !== 1 ||\n caveats[0].type !== SnapCaveatType.PermittedDerivationPaths\n ) {\n throw rpcErrors.invalidParams({\n message: `Expected a single \"${SnapCaveatType.PermittedDerivationPaths}\" caveat.`,\n });\n }\n },\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nconst methodHooks: MethodHooksObject<GetBip32PublicKeyMethodHooks> = {\n getMnemonic: true,\n getUnlockPromise: true,\n};\n\nexport const getBip32PublicKeyBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n methodHooks,\n} as const);\n\n/**\n * Builds the method implementation for `snap_getBip32PublicKey`.\n *\n * @param hooks - The RPC method hooks.\n * @param hooks.getMnemonic - A function to retrieve the Secret Recovery Phrase of the user.\n * @param hooks.getUnlockPromise - A function that resolves once the MetaMask extension is unlocked\n * and prompts the user to unlock their MetaMask if it is locked.\n * @returns The method implementation which returns a public key.\n * @throws If the params are invalid.\n */\nexport function getBip32PublicKeyImplementation({\n getMnemonic,\n getUnlockPromise,\n}: GetBip32PublicKeyMethodHooks) {\n return async function getBip32PublicKey(\n args: RestrictedMethodOptions<GetBip32PublicKeyParams>,\n ): Promise<GetBip32PublicKeyResult> {\n await getUnlockPromise(true);\n\n assertStruct(\n args.params,\n Bip32PublicKeyArgsStruct,\n 'Invalid BIP-32 public key params',\n rpcErrors.invalidParams,\n );\n\n const { params } = args;\n const node = await getNode({\n curve: params.curve,\n path: params.path,\n secretRecoveryPhrase: await getMnemonic(),\n });\n\n if (params.compressed) {\n return node.compressedPublicKey;\n }\n\n return node.publicKey;\n };\n}\n"],"names":["Bip32PublicKeyArgsStruct","getBip32PublicKeyBuilder","getBip32PublicKeyImplementation","targetName","bip32entropy","object","path","Bip32PathStruct","curve","enums","compressed","optional","boolean","specificationBuilder","methodHooks","permissionType","PermissionType","RestrictedMethod","allowedCaveats","SnapCaveatType","PermittedDerivationPaths","methodImplementation","validator","caveats","length","type","rpcErrors","invalidParams","message","subjectTypes","SubjectType","Snap","getMnemonic","getUnlockPromise","Object","freeze","getBip32PublicKey","args","assertStruct","params","node","getNode","secretRecoveryPhrase","compressedPublicKey","publicKey"],"mappings":";;;;;;;;;;;IAoDaA,wBAAwB;eAAxBA;;IA8CAC,wBAAwB;eAAxBA;;IAgBGC,+BAA+B;eAA/BA;;;sCA5G4B;2BAClB;4BASnB;uBAEsB;6BACoB;wBAGzB;AAExB,MAAMC,aAAa;AA4BZ,MAAMH,2BAA2BI,IAAAA,wBAAY,EAClDC,IAAAA,mBAAM,EAAC;IACLC,MAAMC,2BAAe;IACrBC,OAAOC,IAAAA,kBAAK,EAAC;QAAC;QAAW;KAAY;IACrCC,YAAYC,IAAAA,qBAAQ,EAACC,IAAAA,oBAAO;AAC9B;AAGF;;;;;;;;CAQC,GACD,MAAMC,uBAIF,CAAC,EAAEC,WAAW,EAAgD;IAChE,OAAO;QACLC,gBAAgBC,oCAAc,CAACC,gBAAgB;QAC/Cd;QACAe,gBAAgB;YAACC,0BAAc,CAACC,wBAAwB;SAAC;QACzDC,sBAAsBnB,gCAAgCY;QACtDQ,WAAW,CAAC,EAAEC,OAAO,EAAE;YACrB,IACEA,SAASC,WAAW,KACpBD,OAAO,CAAC,EAAE,CAACE,IAAI,KAAKN,0BAAc,CAACC,wBAAwB,EAC3D;gBACA,MAAMM,oBAAS,CAACC,aAAa,CAAC;oBAC5BC,SAAS,CAAC,mBAAmB,EAAET,0BAAc,CAACC,wBAAwB,CAAC,SAAS,CAAC;gBACnF;YACF;QACF;QACAS,cAAc;YAACC,iCAAW,CAACC,IAAI;SAAC;IAClC;AACF;AAEA,MAAMjB,cAA+D;IACnEkB,aAAa;IACbC,kBAAkB;AACpB;AAEO,MAAMhC,2BAA2BiC,OAAOC,MAAM,CAAC;IACpDhC;IACAU;IACAC;AACF;AAYO,SAASZ,gCAAgC,EAC9C8B,WAAW,EACXC,gBAAgB,EACa;IAC7B,OAAO,eAAeG,kBACpBC,IAAsD;QAEtD,MAAMJ,iBAAiB;QAEvBK,IAAAA,mBAAY,EACVD,KAAKE,MAAM,EACXvC,0BACA,oCACA0B,oBAAS,CAACC,aAAa;QAGzB,MAAM,EAAEY,MAAM,EAAE,GAAGF;QACnB,MAAMG,OAAO,MAAMC,IAAAA,eAAO,EAAC;YACzBjC,OAAO+B,OAAO/B,KAAK;YACnBF,MAAMiC,OAAOjC,IAAI;YACjBoC,sBAAsB,MAAMV;QAC9B;QAEA,IAAIO,OAAO7B,UAAU,EAAE;YACrB,OAAO8B,KAAKG,mBAAmB;QACjC;QAEA,OAAOH,KAAKI,SAAS;IACvB;AACF"}
1
+ {"version":3,"sources":["../src/restricted/getBip32PublicKey.ts"],"names":["methodHooks"],"mappings":";;;;;AAMA,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,iBAAiB;AAK1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,oBAAoB;AAC7B,SAAS,SAAS,OAAO,QAAQ,gBAAgB;AAKjD,IAAM,aAAa;AA4BZ,IAAM,2BAA2B;AAAA,EACtC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO,MAAM,CAAC,WAAW,WAAW,CAAC;AAAA,IACrC,YAAY,SAAS,QAAQ,CAAC;AAAA,EAChC,CAAC;AACH;AAWA,IAAM,uBAIF,CAAC,EAAE,aAAAA,aAAY,MAAoD;AACrE,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B;AAAA,IACA,gBAAgB,CAAC,eAAe,wBAAwB;AAAA,IACxD,sBAAsB,gCAAgCA,YAAW;AAAA,IACjE,WAAW,CAAC,EAAE,QAAQ,MAAM;AAC1B,UACE,SAAS,WAAW,KACpB,QAAQ,CAAC,EAAE,SAAS,eAAe,0BACnC;AACA,cAAM,UAAU,cAAc;AAAA,UAC5B,SAAS,sBAAsB,eAAe,wBAAwB;AAAA,QACxE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEA,IAAM,cAA+D;AAAA,EACnE,aAAa;AAAA,EACb,kBAAkB;AACpB;AAEO,IAAM,2BAA2B,OAAO,OAAO;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAYH,SAAS,gCAAgC;AAAA,EAC9C;AAAA,EACA;AACF,GAAiC;AAC/B,SAAO,eAAe,kBACpB,MACkC;AAClC,UAAM,iBAAiB,IAAI;AAE3B;AAAA,MACE,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACZ;AAEA,UAAM,EAAE,OAAO,IAAI;AACnB,UAAM,OAAO,MAAM,QAAQ;AAAA,MACzB,OAAO,OAAO;AAAA,MACd,MAAM,OAAO;AAAA,MACb,sBAAsB,MAAM,YAAY;AAAA,IAC1C,CAAC;AAED,QAAI,OAAO,YAAY;AACrB,aAAO,KAAK;AAAA,IACd;AAEA,WAAO,KAAK;AAAA,EACd;AACF","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n RestrictedMethodOptions,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n GetBip32PublicKeyParams,\n GetBip32PublicKeyResult,\n} from '@metamask/snaps-sdk';\nimport {\n bip32entropy,\n Bip32PathStruct,\n SnapCaveatType,\n} from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\nimport { boolean, enums, object, optional } from 'superstruct';\n\nimport type { MethodHooksObject } from '../utils';\nimport { getNode } from '../utils';\n\nconst targetName = 'snap_getBip32PublicKey';\n\nexport type GetBip32PublicKeyMethodHooks = {\n /**\n * @returns The mnemonic of the user's primary keyring.\n */\n getMnemonic: () => Promise<Uint8Array>;\n\n /**\n * Waits for the extension to be unlocked.\n *\n * @returns A promise that resolves once the extension is unlocked.\n */\n getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;\n};\n\ntype GetBip32PublicKeySpecificationBuilderOptions = {\n methodHooks: GetBip32PublicKeyMethodHooks;\n};\n\ntype GetBip32PublicKeySpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.RestrictedMethod;\n targetName: typeof targetName;\n methodImplementation: ReturnType<typeof getBip32PublicKeyImplementation>;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\nexport const Bip32PublicKeyArgsStruct = bip32entropy(\n object({\n path: Bip32PathStruct,\n curve: enums(['ed25519', 'secp256k1']),\n compressed: optional(boolean()),\n }),\n);\n\n/**\n * The specification builder for the `snap_getBip32PublicKey` permission.\n * `snap_getBip32PublicKey` lets the Snap retrieve public keys for a particular\n * BIP-32 node.\n *\n * @param options - The specification builder options.\n * @param options.methodHooks - The RPC method hooks needed by the method implementation.\n * @returns The specification for the `snap_getBip32PublicKey` permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.RestrictedMethod,\n GetBip32PublicKeySpecificationBuilderOptions,\n GetBip32PublicKeySpecification\n> = ({ methodHooks }: GetBip32PublicKeySpecificationBuilderOptions) => {\n return {\n permissionType: PermissionType.RestrictedMethod,\n targetName,\n allowedCaveats: [SnapCaveatType.PermittedDerivationPaths],\n methodImplementation: getBip32PublicKeyImplementation(methodHooks),\n validator: ({ caveats }) => {\n if (\n caveats?.length !== 1 ||\n caveats[0].type !== SnapCaveatType.PermittedDerivationPaths\n ) {\n throw rpcErrors.invalidParams({\n message: `Expected a single \"${SnapCaveatType.PermittedDerivationPaths}\" caveat.`,\n });\n }\n },\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nconst methodHooks: MethodHooksObject<GetBip32PublicKeyMethodHooks> = {\n getMnemonic: true,\n getUnlockPromise: true,\n};\n\nexport const getBip32PublicKeyBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n methodHooks,\n} as const);\n\n/**\n * Builds the method implementation for `snap_getBip32PublicKey`.\n *\n * @param hooks - The RPC method hooks.\n * @param hooks.getMnemonic - A function to retrieve the Secret Recovery Phrase of the user.\n * @param hooks.getUnlockPromise - A function that resolves once the MetaMask extension is unlocked\n * and prompts the user to unlock their MetaMask if it is locked.\n * @returns The method implementation which returns a public key.\n * @throws If the params are invalid.\n */\nexport function getBip32PublicKeyImplementation({\n getMnemonic,\n getUnlockPromise,\n}: GetBip32PublicKeyMethodHooks) {\n return async function getBip32PublicKey(\n args: RestrictedMethodOptions<GetBip32PublicKeyParams>,\n ): Promise<GetBip32PublicKeyResult> {\n await getUnlockPromise(true);\n\n assertStruct(\n args.params,\n Bip32PublicKeyArgsStruct,\n 'Invalid BIP-32 public key params',\n rpcErrors.invalidParams,\n );\n\n const { params } = args;\n const node = await getNode({\n curve: params.curve,\n path: params.path,\n secretRecoveryPhrase: await getMnemonic(),\n });\n\n if (params.compressed) {\n return node.compressedPublicKey;\n }\n\n return node.publicKey;\n };\n}\n"]}
@@ -0,0 +1,82 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/restricted/invokeSnap.ts
2
+ var _permissioncontroller = require('@metamask/permission-controller');
3
+ var _rpcerrors = require('@metamask/rpc-errors');
4
+ var _snapsutils = require('@metamask/snaps-utils');
5
+ var WALLET_SNAP_PERMISSION_KEY = "wallet_snap";
6
+ var handleSnapInstall = async ({ requestData, messagingSystem }) => {
7
+ const snaps = _optionalChain([requestData, 'access', _ => _.permissions, 'access', _2 => _2[WALLET_SNAP_PERMISSION_KEY], 'access', _3 => _3.caveats, 'optionalAccess', _4 => _4[0], 'access', _5 => _5.value]);
8
+ const permittedSnaps = messagingSystem.call(
9
+ `SnapController:getPermitted`,
10
+ requestData.metadata.origin
11
+ );
12
+ const dedupedSnaps = Object.keys(snaps).reduce(
13
+ (filteredSnaps, snap) => {
14
+ if (!permittedSnaps[snap]) {
15
+ filteredSnaps[snap] = snaps[snap];
16
+ }
17
+ return filteredSnaps;
18
+ },
19
+ {}
20
+ );
21
+ return messagingSystem.call(
22
+ `SnapController:install`,
23
+ requestData.metadata.origin,
24
+ dedupedSnaps
25
+ );
26
+ };
27
+ var specificationBuilder = ({ methodHooks: methodHooks2 }) => {
28
+ return {
29
+ permissionType: _permissioncontroller.PermissionType.RestrictedMethod,
30
+ targetName: WALLET_SNAP_PERMISSION_KEY,
31
+ allowedCaveats: [_snapsutils.SnapCaveatType.SnapIds],
32
+ methodImplementation: getInvokeSnapImplementation(methodHooks2),
33
+ validator: ({ caveats }) => {
34
+ if (_optionalChain([caveats, 'optionalAccess', _6 => _6.length]) !== 1 || caveats[0].type !== _snapsutils.SnapCaveatType.SnapIds) {
35
+ throw _rpcerrors.rpcErrors.invalidParams({
36
+ message: `Expected a single "${_snapsutils.SnapCaveatType.SnapIds}" caveat.`
37
+ });
38
+ }
39
+ },
40
+ sideEffect: {
41
+ onPermitted: handleSnapInstall
42
+ }
43
+ };
44
+ };
45
+ var methodHooks = {
46
+ getSnap: true,
47
+ handleSnapRpcRequest: true
48
+ };
49
+ var invokeSnapBuilder = Object.freeze({
50
+ targetName: WALLET_SNAP_PERMISSION_KEY,
51
+ specificationBuilder,
52
+ methodHooks
53
+ });
54
+ function getInvokeSnapImplementation({
55
+ getSnap,
56
+ handleSnapRpcRequest
57
+ }) {
58
+ return async function invokeSnap(options) {
59
+ const { params = {}, context } = options;
60
+ const { snapId, request } = params;
61
+ if (!getSnap(snapId)) {
62
+ throw _rpcerrors.rpcErrors.invalidRequest({
63
+ message: `The snap "${snapId}" is not installed. Please install it first, before invoking the snap.`
64
+ });
65
+ }
66
+ const { origin } = context;
67
+ return await handleSnapRpcRequest({
68
+ snapId,
69
+ origin,
70
+ request,
71
+ handler: _snapsutils.HandlerType.OnRpcRequest
72
+ });
73
+ };
74
+ }
75
+
76
+
77
+
78
+
79
+
80
+
81
+ exports.WALLET_SNAP_PERMISSION_KEY = WALLET_SNAP_PERMISSION_KEY; exports.handleSnapInstall = handleSnapInstall; exports.invokeSnapBuilder = invokeSnapBuilder; exports.getInvokeSnapImplementation = getInvokeSnapImplementation;
82
+ //# sourceMappingURL=chunk-UYSXSKML.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/restricted/invokeSnap.ts"],"names":["methodHooks"],"mappings":";AAOA,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAO1B,SAAS,aAAa,sBAAsB;AAKrC,IAAM,6BAA6B;AAwDnC,IAAM,oBAGM,OAAO,EAAE,aAAa,gBAAgB,MAAM;AAC7D,QAAM,QAAQ,YAAY,YAAY,0BAA0B,EAAE,UAAU,CAAC,EAC1E;AAEH,QAAM,iBAAiB,gBAAgB;AAAA,IACrC;AAAA,IACA,YAAY,SAAS;AAAA,EACvB;AAEA,QAAM,eAAe,OAAO,KAAK,KAAK,EAAE;AAAA,IACtC,CAAC,eAAe,SAAS;AACvB,UAAI,CAAC,eAAe,IAAI,GAAG;AACzB,sBAAc,IAAI,IAAI,MAAM,IAAI;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AAEA,SAAO,gBAAgB;AAAA,IACrB;AAAA,IACA,YAAY,SAAS;AAAA,IACrB;AAAA,EACF;AACF;AAaA,IAAM,uBAIF,CAAC,EAAE,aAAAA,aAAY,MAA6C;AAC9D,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB,CAAC,eAAe,OAAO;AAAA,IACvC,sBAAsB,4BAA4BA,YAAW;AAAA,IAC7D,WAAW,CAAC,EAAE,QAAQ,MAAM;AAC1B,UAAI,SAAS,WAAW,KAAK,QAAQ,CAAC,EAAE,SAAS,eAAe,SAAS;AACvE,cAAM,UAAU,cAAc;AAAA,UAC5B,SAAS,sBAAsB,eAAe,OAAO;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,IAAM,cAAwD;AAAA,EAC5D,SAAS;AAAA,EACT,sBAAsB;AACxB;AAEO,IAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C,YAAY;AAAA,EACZ;AAAA,EACA;AACF,CAAU;AAWH,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AACF,GAA0B;AACxB,SAAO,eAAe,WACpB,SAC2B;AAC3B,UAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,IAAI;AAEjC,UAAM,EAAE,QAAQ,QAAQ,IAAI;AAE5B,QAAI,CAAC,QAAQ,MAAM,GAAG;AACpB,YAAM,UAAU,eAAe;AAAA,QAC7B,SAAS,aAAa,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAEA,UAAM,EAAE,OAAO,IAAI;AAEnB,WAAQ,MAAM,qBAAqB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,YAAY;AAAA,IACvB,CAAC;AAAA,EACH;AACF","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n RestrictedMethodOptions,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionSideEffect,\n} from '@metamask/permission-controller';\nimport { PermissionType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n InvokeSnapResult,\n RequestSnapsParams,\n RequestSnapsResult,\n} from '@metamask/snaps-sdk';\nimport type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils';\nimport { HandlerType, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nexport const WALLET_SNAP_PERMISSION_KEY = 'wallet_snap';\n\n// Redeclare installSnaps action type to avoid circular dependencies\nexport type InstallSnaps = {\n type: `SnapController:install`;\n handler: (\n origin: string,\n requestedSnaps: RequestSnapsParams,\n ) => Promise<RequestSnapsResult>;\n};\n\nexport type GetPermittedSnaps = {\n type: `SnapController:getPermitted`;\n handler: (origin: string) => RequestSnapsResult;\n};\n\ntype AllowedActions = InstallSnaps | GetPermittedSnaps;\n\nexport type InvokeSnapMethodHooks = {\n getSnap: (snapId: string) => Snap | undefined;\n handleSnapRpcRequest: ({\n snapId,\n origin,\n handler,\n request,\n }: SnapRpcHookArgs & { snapId: string }) => Promise<unknown>;\n};\n\ntype InvokeSnapSpecificationBuilderOptions = {\n allowedCaveats?: Readonly<NonEmptyArray<string>> | null;\n methodHooks: InvokeSnapMethodHooks;\n};\n\ntype InvokeSnapSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.RestrictedMethod;\n targetName: typeof WALLET_SNAP_PERMISSION_KEY;\n methodImplementation: ReturnType<typeof getInvokeSnapImplementation>;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n sideEffect: {\n onPermitted: PermissionSideEffect<AllowedActions, never>['onPermitted'];\n };\n}>;\n\nexport type InvokeSnapParams = {\n snapId: string;\n request: Record<string, Json>;\n};\n\n/**\n * The side-effect method to handle the snap install.\n *\n * @param params - The side-effect params.\n * @param params.requestData - The request data associated to the requested permission.\n * @param params.messagingSystem - The messenger to call an action.\n */\nexport const handleSnapInstall: PermissionSideEffect<\n AllowedActions,\n never\n>['onPermitted'] = async ({ requestData, messagingSystem }) => {\n const snaps = requestData.permissions[WALLET_SNAP_PERMISSION_KEY].caveats?.[0]\n .value as RequestSnapsParams;\n\n const permittedSnaps = messagingSystem.call(\n `SnapController:getPermitted`,\n requestData.metadata.origin,\n );\n\n const dedupedSnaps = Object.keys(snaps).reduce<RequestSnapsParams>(\n (filteredSnaps, snap) => {\n if (!permittedSnaps[snap]) {\n filteredSnaps[snap] = snaps[snap];\n }\n return filteredSnaps;\n },\n {},\n );\n\n return messagingSystem.call(\n `SnapController:install`,\n requestData.metadata.origin,\n dedupedSnaps,\n );\n};\n/**\n * The specification builder for the `wallet_snap_*` permission.\n *\n * `wallet_snap_*` attempts to invoke an RPC method of the specified Snap.\n *\n * Requesting its corresponding permission will attempt to connect to the Snap,\n * and install it if it's not available yet.\n *\n * @param options - The specification builder options.\n * @param options.methodHooks - The RPC method hooks needed by the method implementation.\n * @returns The specification for the `wallet_snap_*` permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.RestrictedMethod,\n InvokeSnapSpecificationBuilderOptions,\n InvokeSnapSpecification\n> = ({ methodHooks }: InvokeSnapSpecificationBuilderOptions) => {\n return {\n permissionType: PermissionType.RestrictedMethod,\n targetName: WALLET_SNAP_PERMISSION_KEY,\n allowedCaveats: [SnapCaveatType.SnapIds],\n methodImplementation: getInvokeSnapImplementation(methodHooks),\n validator: ({ caveats }) => {\n if (caveats?.length !== 1 || caveats[0].type !== SnapCaveatType.SnapIds) {\n throw rpcErrors.invalidParams({\n message: `Expected a single \"${SnapCaveatType.SnapIds}\" caveat.`,\n });\n }\n },\n sideEffect: {\n onPermitted: handleSnapInstall,\n },\n };\n};\n\nconst methodHooks: MethodHooksObject<InvokeSnapMethodHooks> = {\n getSnap: true,\n handleSnapRpcRequest: true,\n};\n\nexport const invokeSnapBuilder = Object.freeze({\n targetName: WALLET_SNAP_PERMISSION_KEY,\n specificationBuilder,\n methodHooks,\n} as const);\n\n/**\n * Builds the method implementation for `wallet_snap_*`.\n *\n * @param hooks - The RPC method hooks.\n * @param hooks.getSnap - A function that retrieves all information stored about a snap.\n * @param hooks.handleSnapRpcRequest - A function that sends an RPC request to a snap's RPC handler or throws if that fails.\n * @returns The method implementation which returns the result of `handleSnapRpcRequest`.\n * @throws If the params are invalid.\n */\nexport function getInvokeSnapImplementation({\n getSnap,\n handleSnapRpcRequest,\n}: InvokeSnapMethodHooks) {\n return async function invokeSnap(\n options: RestrictedMethodOptions<InvokeSnapParams>,\n ): Promise<InvokeSnapResult> {\n const { params = {}, context } = options;\n\n const { snapId, request } = params as InvokeSnapParams;\n\n if (!getSnap(snapId)) {\n throw rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not installed. Please install it first, before invoking the snap.`,\n });\n }\n\n const { origin } = context;\n\n return (await handleSnapRpcRequest({\n snapId,\n origin,\n request,\n handler: HandlerType.OnRpcRequest,\n })) as Json;\n };\n}\n"]}
@@ -0,0 +1,119 @@
1
+ import {
2
+ createGenericPermissionValidator
3
+ } from "./chunk-SMWKMPHG.mjs";
4
+
5
+ // src/endowments/name-lookup.ts
6
+ import { PermissionType, SubjectType } from "@metamask/permission-controller";
7
+ import { rpcErrors } from "@metamask/rpc-errors";
8
+ import {
9
+ ChainIdsStruct,
10
+ LookupMatchersStruct,
11
+ SnapCaveatType
12
+ } from "@metamask/snaps-utils";
13
+ import {
14
+ assert,
15
+ assertStruct,
16
+ hasProperty,
17
+ isObject,
18
+ isPlainObject
19
+ } from "@metamask/utils";
20
+ var permissionName = "endowment:name-lookup" /* NameLookup */;
21
+ var specificationBuilder = (_builderOptions) => {
22
+ return {
23
+ permissionType: PermissionType.Endowment,
24
+ targetName: permissionName,
25
+ allowedCaveats: [
26
+ SnapCaveatType.ChainIds,
27
+ SnapCaveatType.LookupMatchers,
28
+ SnapCaveatType.MaxRequestTime
29
+ ],
30
+ endowmentGetter: (_getterOptions) => void 0,
31
+ validator: createGenericPermissionValidator([
32
+ { type: SnapCaveatType.ChainIds, optional: true },
33
+ { type: SnapCaveatType.LookupMatchers, optional: true },
34
+ { type: SnapCaveatType.MaxRequestTime, optional: true }
35
+ ]),
36
+ subjectTypes: [SubjectType.Snap]
37
+ };
38
+ };
39
+ var nameLookupEndowmentBuilder = Object.freeze({
40
+ targetName: permissionName,
41
+ specificationBuilder
42
+ });
43
+ function validateCaveat(caveat) {
44
+ if (!hasProperty(caveat, "value") || !isPlainObject(caveat)) {
45
+ throw rpcErrors.invalidParams({
46
+ message: "Expected a plain object."
47
+ });
48
+ }
49
+ const { value } = caveat;
50
+ switch (caveat.type) {
51
+ case SnapCaveatType.ChainIds:
52
+ assertStruct(value, ChainIdsStruct);
53
+ break;
54
+ case SnapCaveatType.LookupMatchers:
55
+ assertStruct(value, LookupMatchersStruct);
56
+ break;
57
+ default:
58
+ throw rpcErrors.invalidParams({
59
+ message: 'Invalid caveat type, must be one of the following: "chainIds", "matchers".'
60
+ });
61
+ }
62
+ }
63
+ function getNameLookupCaveatMapper(value) {
64
+ if (!value || !isObject(value) || Object.keys(value).length === 0) {
65
+ return { caveats: null };
66
+ }
67
+ const caveats = [];
68
+ if (value.chains) {
69
+ caveats.push({
70
+ type: SnapCaveatType.ChainIds,
71
+ value: value.chains
72
+ });
73
+ }
74
+ if (value.matchers) {
75
+ caveats.push({
76
+ type: SnapCaveatType.LookupMatchers,
77
+ value: value.matchers
78
+ });
79
+ }
80
+ assert(caveats.length > 0);
81
+ return { caveats };
82
+ }
83
+ function getChainIdsCaveat(permission) {
84
+ if (!permission?.caveats) {
85
+ return null;
86
+ }
87
+ const caveat = permission.caveats.find(
88
+ (permCaveat) => permCaveat.type === SnapCaveatType.ChainIds
89
+ );
90
+ return caveat ? caveat.value : null;
91
+ }
92
+ function getLookupMatchersCaveat(permission) {
93
+ if (!permission?.caveats) {
94
+ return null;
95
+ }
96
+ const caveat = permission.caveats.find(
97
+ (permCaveat) => permCaveat.type === SnapCaveatType.LookupMatchers
98
+ );
99
+ return caveat ? caveat.value : null;
100
+ }
101
+ var nameLookupCaveatSpecifications = {
102
+ [SnapCaveatType.ChainIds]: Object.freeze({
103
+ type: SnapCaveatType.ChainIds,
104
+ validator: (caveat) => validateCaveat(caveat)
105
+ }),
106
+ [SnapCaveatType.LookupMatchers]: Object.freeze({
107
+ type: SnapCaveatType.LookupMatchers,
108
+ validator: (caveat) => validateCaveat(caveat)
109
+ })
110
+ };
111
+
112
+ export {
113
+ nameLookupEndowmentBuilder,
114
+ getNameLookupCaveatMapper,
115
+ getChainIdsCaveat,
116
+ getLookupMatchersCaveat,
117
+ nameLookupCaveatSpecifications
118
+ };
119
+ //# sourceMappingURL=chunk-VFI5FR5U.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/endowments/name-lookup.ts"],"sourcesContent":["import type {\n EndowmentGetterParams,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n Caveat,\n CaveatSpecificationConstraint,\n PermissionConstraint,\n CaveatConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport {\n ChainIdsStruct,\n LookupMatchersStruct,\n SnapCaveatType,\n} from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport {\n assert,\n assertStruct,\n hasProperty,\n isObject,\n isPlainObject,\n} from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.NameLookup;\n\ntype NameLookupEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => undefined;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:name-lookup` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to resolve a domain/address.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the name-lookup endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n NameLookupEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.ChainIds,\n SnapCaveatType.LookupMatchers,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => undefined,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.ChainIds, optional: true },\n { type: SnapCaveatType.LookupMatchers, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const nameLookupEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n\n/**\n * Validates the type of the caveat value.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveat(caveat: Caveat<string, any>): void {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n\n switch (caveat.type) {\n case SnapCaveatType.ChainIds:\n assertStruct(value, ChainIdsStruct);\n break;\n case SnapCaveatType.LookupMatchers:\n assertStruct(value, LookupMatchersStruct);\n break;\n default:\n throw rpcErrors.invalidParams({\n message:\n 'Invalid caveat type, must be one of the following: \"chainIds\", \"matchers\".',\n });\n }\n}\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getNameLookupCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (!value || !isObject(value) || Object.keys(value).length === 0) {\n return { caveats: null };\n }\n\n const caveats = [];\n\n if (value.chains) {\n caveats.push({\n type: SnapCaveatType.ChainIds,\n value: value.chains,\n });\n }\n\n if (value.matchers) {\n caveats.push({\n type: SnapCaveatType.LookupMatchers,\n value: value.matchers,\n });\n }\n\n assert(caveats.length > 0);\n\n return { caveats: caveats as NonEmptyArray<CaveatConstraint> };\n}\n\n/**\n * Getter function to get the chainIds caveat from a permission.\n *\n * This does basic validation of the caveat, but does not validate the type or\n * value of the namespaces object itself, as this is handled by the\n * `PermissionsController` when the permission is requested.\n *\n * @param permission - The permission to get the `chainIds` caveat from.\n * @returns An array of `chainIds` that the snap supports.\n */\nexport function getChainIdsCaveat(\n permission?: PermissionConstraint,\n): string[] | null {\n if (!permission?.caveats) {\n return null;\n }\n\n const caveat = permission.caveats.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.ChainIds,\n ) as Caveat<string, string[]> | undefined;\n\n return caveat ? caveat.value : null;\n}\n\n/**\n * Getter function to get the matchers caveat from a permission.\n *\n * This does basic validation of the caveat, but does not validate the type or\n * value of the namespaces object itself, as this is handled by the\n * `PermissionsController` when the permission is requested.\n *\n * @param permission - The permission to get the `matchers` caveat from.\n * @returns A `matchers` object that defines the input that the snap supports.\n */\nexport function getLookupMatchersCaveat(\n permission?: PermissionConstraint,\n): Record<string, string[]> | null {\n if (!permission?.caveats) {\n return null;\n }\n\n const caveat = permission.caveats.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.LookupMatchers,\n ) as Caveat<string, Record<string, string[]>> | undefined;\n\n return caveat ? caveat.value : null;\n}\n\nexport const nameLookupCaveatSpecifications: Record<\n SnapCaveatType.ChainIds | SnapCaveatType.LookupMatchers,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.ChainIds]: Object.freeze({\n type: SnapCaveatType.ChainIds,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n [SnapCaveatType.LookupMatchers]: Object.freeze({\n type: SnapCaveatType.LookupMatchers,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"],"mappings":";;;;;AAUA,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP,IAAM;AAiBN,IAAM,uBAIF,CAAC,oBAA8B;AACjC,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAAA,IACA,iBAAiB,CAAC,mBAA2C;AAAA,IAC7D,WAAW,iCAAiC;AAAA,MAC1C,EAAE,MAAM,eAAe,UAAU,UAAU,KAAK;AAAA,MAChD,EAAE,MAAM,eAAe,gBAAgB,UAAU,KAAK;AAAA,MACtD,EAAE,MAAM,eAAe,gBAAgB,UAAU,KAAK;AAAA,IACxD,CAAC;AAAA,IACD,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEO,IAAM,6BAA6B,OAAO,OAAO;AAAA,EACtD,YAAY;AAAA,EACZ;AACF,CAAU;AAQV,SAAS,eAAe,QAAmC;AACzD,MAAI,CAAC,YAAY,QAAQ,OAAO,KAAK,CAAC,cAAc,MAAM,GAAG;AAC3D,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,MAAM,IAAI;AAElB,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,eAAe;AAClB,mBAAa,OAAO,cAAc;AAClC;AAAA,IACF,KAAK,eAAe;AAClB,mBAAa,OAAO,oBAAoB;AACxC;AAAA,IACF;AACE,YAAM,UAAU,cAAc;AAAA,QAC5B,SACE;AAAA,MACJ,CAAC;AAAA,EACL;AACF;AAUO,SAAS,0BACd,OACuC;AACvC,MAAI,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AACjE,WAAO,EAAE,SAAS,KAAK;AAAA,EACzB;AAEA,QAAM,UAAU,CAAC;AAEjB,MAAI,MAAM,QAAQ;AAChB,YAAQ,KAAK;AAAA,MACX,MAAM,eAAe;AAAA,MACrB,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,UAAU;AAClB,YAAQ,KAAK;AAAA,MACX,MAAM,eAAe;AAAA,MACrB,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AAEA,SAAO,QAAQ,SAAS,CAAC;AAEzB,SAAO,EAAE,QAAoD;AAC/D;AAYO,SAAS,kBACd,YACiB;AACjB,MAAI,CAAC,YAAY,SAAS;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,WAAW,QAAQ;AAAA,IAChC,CAAC,eAAe,WAAW,SAAS,eAAe;AAAA,EACrD;AAEA,SAAO,SAAS,OAAO,QAAQ;AACjC;AAYO,SAAS,wBACd,YACiC;AACjC,MAAI,CAAC,YAAY,SAAS;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,WAAW,QAAQ;AAAA,IAChC,CAAC,eAAe,WAAW,SAAS,eAAe;AAAA,EACrD;AAEA,SAAO,SAAS,OAAO,QAAQ;AACjC;AAEO,IAAM,iCAGT;AAAA,EACF,CAAC,eAAe,QAAQ,GAAG,OAAO,OAAO;AAAA,IACvC,MAAM,eAAe;AAAA,IACrB,WAAW,CAAC,WAAgC,eAAe,MAAM;AAAA,EACnE,CAAC;AAAA,EACD,CAAC,eAAe,cAAc,GAAG,OAAO,OAAO;AAAA,IAC7C,MAAM,eAAe;AAAA,IACrB,WAAW,CAAC,WAAgC,eAAe,MAAM;AAAA,EACnE,CAAC;AACH;","names":[]}
@@ -0,0 +1,78 @@
1
+ import {
2
+ getValidatedParams
3
+ } from "./chunk-MDJZ4K3U.mjs";
4
+
5
+ // src/permitted/invokeKeyring.ts
6
+ import { rpcErrors } from "@metamask/rpc-errors";
7
+ import { HandlerType, WALLET_SNAP_PERMISSION_KEY } from "@metamask/snaps-utils";
8
+ import { hasProperty } from "@metamask/utils";
9
+ var hookNames = {
10
+ hasPermission: true,
11
+ handleSnapRpcRequest: true,
12
+ getSnap: true,
13
+ getAllowedKeyringMethods: true
14
+ };
15
+ var invokeKeyringHandler = {
16
+ methodNames: ["wallet_invokeKeyring"],
17
+ implementation: invokeKeyringImplementation,
18
+ hookNames
19
+ };
20
+ async function invokeKeyringImplementation(req, res, _next, end, {
21
+ handleSnapRpcRequest,
22
+ hasPermission,
23
+ getSnap,
24
+ getAllowedKeyringMethods
25
+ }) {
26
+ let params;
27
+ try {
28
+ params = getValidatedParams(req.params);
29
+ } catch (error) {
30
+ return end(error);
31
+ }
32
+ const { origin } = req;
33
+ const { snapId, request } = params;
34
+ if (!origin || !hasPermission(WALLET_SNAP_PERMISSION_KEY)) {
35
+ return end(
36
+ rpcErrors.invalidRequest({
37
+ message: `The snap "${snapId}" is not connected to "${origin}". Please connect before invoking the snap.`
38
+ })
39
+ );
40
+ }
41
+ if (!getSnap(snapId)) {
42
+ return end(
43
+ rpcErrors.invalidRequest({
44
+ message: `The snap "${snapId}" is not installed. Please install it first, before invoking the snap.`
45
+ })
46
+ );
47
+ }
48
+ if (!hasProperty(request, "method") || typeof request.method !== "string") {
49
+ return end(
50
+ rpcErrors.invalidRequest({
51
+ message: "The request must have a method."
52
+ })
53
+ );
54
+ }
55
+ const allowedMethods = getAllowedKeyringMethods();
56
+ if (!allowedMethods.includes(request.method)) {
57
+ return end(
58
+ rpcErrors.invalidRequest({
59
+ message: `The origin "${origin}" is not allowed to invoke the method "${request.method}".`
60
+ })
61
+ );
62
+ }
63
+ try {
64
+ res.result = await handleSnapRpcRequest({
65
+ snapId,
66
+ request,
67
+ handler: HandlerType.OnKeyringRequest
68
+ });
69
+ } catch (error) {
70
+ return end(error);
71
+ }
72
+ return end();
73
+ }
74
+
75
+ export {
76
+ invokeKeyringHandler
77
+ };
78
+ //# sourceMappingURL=chunk-VRDGSBXX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/permitted/invokeKeyring.ts"],"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 InvokeKeyringParams,\n InvokeKeyringResult,\n InvokeSnapParams,\n} from '@metamask/snaps-sdk';\nimport type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils';\nimport { HandlerType, WALLET_SNAP_PERMISSION_KEY } from '@metamask/snaps-utils';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\nimport { hasProperty, type Json } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\nimport { getValidatedParams } from './invokeSnapSugar';\n\nconst hookNames: MethodHooksObject<InvokeKeyringHooks> = {\n hasPermission: true,\n handleSnapRpcRequest: true,\n getSnap: true,\n getAllowedKeyringMethods: true,\n};\n\n/**\n * `wallet_invokeKeyring` gets the requester's permitted and installed Snaps.\n */\nexport const invokeKeyringHandler: PermittedHandlerExport<\n InvokeKeyringHooks,\n InvokeSnapParams,\n InvokeKeyringResult\n> = {\n methodNames: ['wallet_invokeKeyring'],\n implementation: invokeKeyringImplementation,\n hookNames,\n};\n\nexport type InvokeKeyringHooks = {\n hasPermission: (permissionName: string) => boolean;\n\n handleSnapRpcRequest: ({\n snapId,\n handler,\n request,\n }: Omit<SnapRpcHookArgs, 'origin'> & { snapId: string }) => Promise<unknown>;\n\n getSnap: (snapId: string) => Snap | undefined;\n\n getAllowedKeyringMethods: () => string[];\n};\n\n/**\n * The `wallet_invokeKeyring` method implementation.\n * Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.\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.handleSnapRpcRequest - Invokes a snap with a given RPC request.\n * @param hooks.hasPermission - Checks whether a given origin has a given permission.\n * @param hooks.getSnap - Gets information about a given snap.\n * @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring\n * methods for a given origin.\n * @returns Nothing.\n */\nasync function invokeKeyringImplementation(\n req: JsonRpcRequest<InvokeKeyringParams>,\n res: PendingJsonRpcResponse<InvokeKeyringResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n {\n handleSnapRpcRequest,\n hasPermission,\n getSnap,\n getAllowedKeyringMethods,\n }: InvokeKeyringHooks,\n): Promise<void> {\n let params: InvokeSnapParams;\n try {\n params = getValidatedParams(req.params);\n } catch (error) {\n return end(error);\n }\n\n // We expect the MM middleware stack to always add the origin to requests\n const { origin } = req as JsonRpcRequest & { origin: string };\n const { snapId, request } = params;\n\n if (!origin || !hasPermission(WALLET_SNAP_PERMISSION_KEY)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not connected to \"${origin}\". Please connect before invoking the snap.`,\n }),\n );\n }\n\n if (!getSnap(snapId)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not installed. Please install it first, before invoking the snap.`,\n }),\n );\n }\n\n if (!hasProperty(request, 'method') || typeof request.method !== 'string') {\n return end(\n rpcErrors.invalidRequest({\n message: 'The request must have a method.',\n }),\n );\n }\n\n const allowedMethods = getAllowedKeyringMethods();\n if (!allowedMethods.includes(request.method)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The origin \"${origin}\" is not allowed to invoke the method \"${request.method}\".`,\n }),\n );\n }\n\n try {\n res.result = (await handleSnapRpcRequest({\n snapId,\n request,\n handler: HandlerType.OnKeyringRequest,\n })) as Json;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"],"mappings":";;;;;AAEA,SAAS,iBAAiB;AAO1B,SAAS,aAAa,kCAAkC;AAExD,SAAS,mBAA8B;AAKvC,IAAM,YAAmD;AAAA,EACvD,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,0BAA0B;AAC5B;AAKO,IAAM,uBAIT;AAAA,EACF,aAAa,CAAC,sBAAsB;AAAA,EACpC,gBAAgB;AAAA,EAChB;AACF;AAiCA,eAAe,4BACb,KACA,KACA,OACA,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACe;AACf,MAAI;AACJ,MAAI;AACF,aAAS,mBAAmB,IAAI,MAAM;AAAA,EACxC,SAAS,OAAO;AACd,WAAO,IAAI,KAAK;AAAA,EAClB;AAGA,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,EAAE,QAAQ,QAAQ,IAAI;AAE5B,MAAI,CAAC,UAAU,CAAC,cAAc,0BAA0B,GAAG;AACzD,WAAO;AAAA,MACL,UAAU,eAAe;AAAA,QACvB,SAAS,aAAa,MAAM,0BAA0B,MAAM;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,MAAM,GAAG;AACpB,WAAO;AAAA,MACL,UAAU,eAAe;AAAA,QACvB,SAAS,aAAa,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,CAAC,YAAY,SAAS,QAAQ,KAAK,OAAO,QAAQ,WAAW,UAAU;AACzE,WAAO;AAAA,MACL,UAAU,eAAe;AAAA,QACvB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,iBAAiB,yBAAyB;AAChD,MAAI,CAAC,eAAe,SAAS,QAAQ,MAAM,GAAG;AAC5C,WAAO;AAAA,MACL,UAAU,eAAe;AAAA,QACvB,SAAS,eAAe,MAAM,0CAA0C,QAAQ,MAAM;AAAA,MACxF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI;AACF,QAAI,SAAU,MAAM,qBAAqB;AAAA,MACvC;AAAA,MACA;AAAA,MACA,SAAS,YAAY;AAAA,IACvB,CAAC;AAAA,EACH,SAAS,OAAO;AACd,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,SAAO,IAAI;AACb;","names":[]}
@@ -0,0 +1,42 @@
1
+ // src/permitted/getInterfaceState.ts
2
+ import { rpcErrors } from "@metamask/rpc-errors";
3
+ import { StructError, create, object, string } from "superstruct";
4
+ var hookNames = {
5
+ getInterfaceState: true
6
+ };
7
+ var getInterfaceStateHandler = {
8
+ methodNames: ["snap_getInterfaceState"],
9
+ implementation: getGetInterfaceStateImplementation,
10
+ hookNames
11
+ };
12
+ var GetInterfaceStateParametersStruct = object({
13
+ id: string()
14
+ });
15
+ function getGetInterfaceStateImplementation(req, res, _next, end, { getInterfaceState }) {
16
+ const { params } = req;
17
+ try {
18
+ const validatedParams = getValidatedParams(params);
19
+ const { id } = validatedParams;
20
+ res.result = getInterfaceState(id);
21
+ } catch (error) {
22
+ return end(error);
23
+ }
24
+ return end();
25
+ }
26
+ function getValidatedParams(params) {
27
+ try {
28
+ return create(params, GetInterfaceStateParametersStruct);
29
+ } catch (error) {
30
+ if (error instanceof StructError) {
31
+ throw rpcErrors.invalidParams({
32
+ message: `Invalid params: ${error.message}.`
33
+ });
34
+ }
35
+ throw rpcErrors.internal();
36
+ }
37
+ }
38
+
39
+ export {
40
+ getInterfaceStateHandler
41
+ };
42
+ //# sourceMappingURL=chunk-VSVVWO3W.mjs.map