@metamask/snaps-rpc-methods 14.2.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/endowments/assets.cjs +1 -1
  3. package/dist/endowments/assets.cjs.map +1 -1
  4. package/dist/endowments/assets.mjs +1 -1
  5. package/dist/endowments/assets.mjs.map +1 -1
  6. package/dist/endowments/cronjob.cjs +3 -8
  7. package/dist/endowments/cronjob.cjs.map +1 -1
  8. package/dist/endowments/cronjob.d.cts.map +1 -1
  9. package/dist/endowments/cronjob.d.mts.map +1 -1
  10. package/dist/endowments/cronjob.mjs +4 -9
  11. package/dist/endowments/cronjob.mjs.map +1 -1
  12. package/dist/endowments/home-page.cjs +6 -1
  13. package/dist/endowments/home-page.cjs.map +1 -1
  14. package/dist/endowments/home-page.d.cts +2 -1
  15. package/dist/endowments/home-page.d.cts.map +1 -1
  16. package/dist/endowments/home-page.d.mts +2 -1
  17. package/dist/endowments/home-page.d.mts.map +1 -1
  18. package/dist/endowments/home-page.mjs +6 -1
  19. package/dist/endowments/home-page.mjs.map +1 -1
  20. package/dist/endowments/index.d.cts +3 -0
  21. package/dist/endowments/index.d.cts.map +1 -1
  22. package/dist/endowments/index.d.mts +3 -0
  23. package/dist/endowments/index.d.mts.map +1 -1
  24. package/dist/endowments/keyring.cjs +2 -4
  25. package/dist/endowments/keyring.cjs.map +1 -1
  26. package/dist/endowments/keyring.d.cts +1 -1
  27. package/dist/endowments/keyring.d.cts.map +1 -1
  28. package/dist/endowments/keyring.d.mts +1 -1
  29. package/dist/endowments/keyring.d.mts.map +1 -1
  30. package/dist/endowments/keyring.mjs +2 -4
  31. package/dist/endowments/keyring.mjs.map +1 -1
  32. package/dist/endowments/lifecycle-hooks.cjs +6 -1
  33. package/dist/endowments/lifecycle-hooks.cjs.map +1 -1
  34. package/dist/endowments/lifecycle-hooks.d.cts +2 -1
  35. package/dist/endowments/lifecycle-hooks.d.cts.map +1 -1
  36. package/dist/endowments/lifecycle-hooks.d.mts +2 -1
  37. package/dist/endowments/lifecycle-hooks.d.mts.map +1 -1
  38. package/dist/endowments/lifecycle-hooks.mjs +6 -1
  39. package/dist/endowments/lifecycle-hooks.mjs.map +1 -1
  40. package/dist/endowments/rpc.cjs +2 -4
  41. package/dist/endowments/rpc.cjs.map +1 -1
  42. package/dist/endowments/rpc.d.cts +1 -1
  43. package/dist/endowments/rpc.d.cts.map +1 -1
  44. package/dist/endowments/rpc.d.mts +1 -1
  45. package/dist/endowments/rpc.d.mts.map +1 -1
  46. package/dist/endowments/rpc.mjs +2 -4
  47. package/dist/endowments/rpc.mjs.map +1 -1
  48. package/dist/endowments/settings-page.cjs +6 -1
  49. package/dist/endowments/settings-page.cjs.map +1 -1
  50. package/dist/endowments/settings-page.d.cts +2 -1
  51. package/dist/endowments/settings-page.d.cts.map +1 -1
  52. package/dist/endowments/settings-page.d.mts +2 -1
  53. package/dist/endowments/settings-page.d.mts.map +1 -1
  54. package/dist/endowments/settings-page.mjs +6 -1
  55. package/dist/endowments/settings-page.mjs.map +1 -1
  56. package/dist/endowments/signature-insight.cjs +6 -8
  57. package/dist/endowments/signature-insight.cjs.map +1 -1
  58. package/dist/endowments/signature-insight.d.cts.map +1 -1
  59. package/dist/endowments/signature-insight.d.mts.map +1 -1
  60. package/dist/endowments/signature-insight.mjs +6 -8
  61. package/dist/endowments/signature-insight.mjs.map +1 -1
  62. package/dist/endowments/transaction-insight.cjs +2 -7
  63. package/dist/endowments/transaction-insight.cjs.map +1 -1
  64. package/dist/endowments/transaction-insight.d.cts.map +1 -1
  65. package/dist/endowments/transaction-insight.d.mts.map +1 -1
  66. package/dist/endowments/transaction-insight.mjs +2 -7
  67. package/dist/endowments/transaction-insight.mjs.map +1 -1
  68. package/dist/middleware/index.cjs +3 -0
  69. package/dist/middleware/index.cjs.map +1 -1
  70. package/dist/middleware/index.d.cts +1 -0
  71. package/dist/middleware/index.d.cts.map +1 -1
  72. package/dist/middleware/index.d.mts +1 -0
  73. package/dist/middleware/index.d.mts.map +1 -1
  74. package/dist/middleware/index.mjs +1 -0
  75. package/dist/middleware/index.mjs.map +1 -1
  76. package/dist/middleware/wallet-snap-permission.cjs +32 -0
  77. package/dist/middleware/wallet-snap-permission.cjs.map +1 -0
  78. package/dist/middleware/wallet-snap-permission.d.cts +18 -0
  79. package/dist/middleware/wallet-snap-permission.d.cts.map +1 -0
  80. package/dist/middleware/wallet-snap-permission.d.mts +18 -0
  81. package/dist/middleware/wallet-snap-permission.d.mts.map +1 -0
  82. package/dist/middleware/wallet-snap-permission.mjs +28 -0
  83. package/dist/middleware/wallet-snap-permission.mjs.map +1 -0
  84. package/dist/permitted/cancelBackgroundEvent.cjs +20 -0
  85. package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
  86. package/dist/permitted/cancelBackgroundEvent.d.cts +43 -3
  87. package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
  88. package/dist/permitted/cancelBackgroundEvent.d.mts +43 -3
  89. package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
  90. package/dist/permitted/cancelBackgroundEvent.mjs +20 -0
  91. package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
  92. package/dist/permitted/clearState.cjs +13 -2
  93. package/dist/permitted/clearState.cjs.map +1 -1
  94. package/dist/permitted/clearState.d.cts +35 -3
  95. package/dist/permitted/clearState.d.cts.map +1 -1
  96. package/dist/permitted/clearState.d.mts +35 -3
  97. package/dist/permitted/clearState.d.mts.map +1 -1
  98. package/dist/permitted/clearState.mjs +13 -2
  99. package/dist/permitted/clearState.mjs.map +1 -1
  100. package/dist/permitted/closeWebSocket.cjs +19 -2
  101. package/dist/permitted/closeWebSocket.cjs.map +1 -1
  102. package/dist/permitted/closeWebSocket.d.cts +39 -4
  103. package/dist/permitted/closeWebSocket.d.cts.map +1 -1
  104. package/dist/permitted/closeWebSocket.d.mts +39 -4
  105. package/dist/permitted/closeWebSocket.d.mts.map +1 -1
  106. package/dist/permitted/closeWebSocket.mjs +19 -2
  107. package/dist/permitted/closeWebSocket.mjs.map +1 -1
  108. package/dist/permitted/createInterface.cjs +33 -2
  109. package/dist/permitted/createInterface.cjs.map +1 -1
  110. package/dist/permitted/createInterface.d.cts +68 -17
  111. package/dist/permitted/createInterface.d.cts.map +1 -1
  112. package/dist/permitted/createInterface.d.mts +68 -17
  113. package/dist/permitted/createInterface.d.mts.map +1 -1
  114. package/dist/permitted/createInterface.mjs +34 -3
  115. package/dist/permitted/createInterface.mjs.map +1 -1
  116. package/dist/permitted/endTrace.cjs +6 -2
  117. package/dist/permitted/endTrace.cjs.map +1 -1
  118. package/dist/permitted/endTrace.d.cts +28 -4
  119. package/dist/permitted/endTrace.d.cts.map +1 -1
  120. package/dist/permitted/endTrace.d.mts +28 -4
  121. package/dist/permitted/endTrace.d.mts.map +1 -1
  122. package/dist/permitted/endTrace.mjs +6 -2
  123. package/dist/permitted/endTrace.mjs.map +1 -1
  124. package/dist/permitted/getAllSnaps.cjs +4 -1
  125. package/dist/permitted/getAllSnaps.cjs.map +1 -1
  126. package/dist/permitted/getAllSnaps.d.cts +25 -3
  127. package/dist/permitted/getAllSnaps.d.cts.map +1 -1
  128. package/dist/permitted/getAllSnaps.d.mts +25 -3
  129. package/dist/permitted/getAllSnaps.d.mts.map +1 -1
  130. package/dist/permitted/getAllSnaps.mjs +4 -1
  131. package/dist/permitted/getAllSnaps.mjs.map +1 -1
  132. package/dist/permitted/getBackgroundEvents.cjs +24 -0
  133. package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
  134. package/dist/permitted/getBackgroundEvents.d.cts +48 -3
  135. package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
  136. package/dist/permitted/getBackgroundEvents.d.mts +48 -3
  137. package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
  138. package/dist/permitted/getBackgroundEvents.mjs +24 -0
  139. package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
  140. package/dist/permitted/getClientStatus.cjs +27 -2
  141. package/dist/permitted/getClientStatus.cjs.map +1 -1
  142. package/dist/permitted/getClientStatus.d.cts +50 -4
  143. package/dist/permitted/getClientStatus.d.cts.map +1 -1
  144. package/dist/permitted/getClientStatus.d.mts +50 -4
  145. package/dist/permitted/getClientStatus.d.mts.map +1 -1
  146. package/dist/permitted/getClientStatus.mjs +27 -2
  147. package/dist/permitted/getClientStatus.mjs.map +1 -1
  148. package/dist/permitted/getFile.cjs +28 -1
  149. package/dist/permitted/getFile.cjs.map +1 -1
  150. package/dist/permitted/getFile.d.cts +49 -3
  151. package/dist/permitted/getFile.d.cts.map +1 -1
  152. package/dist/permitted/getFile.d.mts +49 -3
  153. package/dist/permitted/getFile.d.mts.map +1 -1
  154. package/dist/permitted/getFile.mjs +28 -1
  155. package/dist/permitted/getFile.mjs.map +1 -1
  156. package/dist/permitted/getInterfaceContext.cjs +49 -3
  157. package/dist/permitted/getInterfaceContext.cjs.map +1 -1
  158. package/dist/permitted/getInterfaceContext.d.cts +65 -3
  159. package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
  160. package/dist/permitted/getInterfaceContext.d.mts +65 -3
  161. package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
  162. package/dist/permitted/getInterfaceContext.mjs +50 -4
  163. package/dist/permitted/getInterfaceContext.mjs.map +1 -1
  164. package/dist/permitted/getInterfaceState.cjs +27 -3
  165. package/dist/permitted/getInterfaceState.cjs.map +1 -1
  166. package/dist/permitted/getInterfaceState.d.cts +43 -3
  167. package/dist/permitted/getInterfaceState.d.cts.map +1 -1
  168. package/dist/permitted/getInterfaceState.d.mts +43 -3
  169. package/dist/permitted/getInterfaceState.d.mts.map +1 -1
  170. package/dist/permitted/getInterfaceState.mjs +28 -4
  171. package/dist/permitted/getInterfaceState.mjs.map +1 -1
  172. package/dist/permitted/getSnaps.cjs +21 -2
  173. package/dist/permitted/getSnaps.cjs.map +1 -1
  174. package/dist/permitted/getSnaps.d.cts +42 -4
  175. package/dist/permitted/getSnaps.d.cts.map +1 -1
  176. package/dist/permitted/getSnaps.d.mts +42 -4
  177. package/dist/permitted/getSnaps.d.mts.map +1 -1
  178. package/dist/permitted/getSnaps.mjs +21 -2
  179. package/dist/permitted/getSnaps.mjs.map +1 -1
  180. package/dist/permitted/getState.cjs +24 -2
  181. package/dist/permitted/getState.cjs.map +1 -1
  182. package/dist/permitted/getState.d.cts +46 -4
  183. package/dist/permitted/getState.d.cts.map +1 -1
  184. package/dist/permitted/getState.d.mts +46 -4
  185. package/dist/permitted/getState.d.mts.map +1 -1
  186. package/dist/permitted/getState.mjs +24 -2
  187. package/dist/permitted/getState.mjs.map +1 -1
  188. package/dist/permitted/getWebSockets.cjs +29 -2
  189. package/dist/permitted/getWebSockets.cjs.map +1 -1
  190. package/dist/permitted/getWebSockets.d.cts +50 -4
  191. package/dist/permitted/getWebSockets.d.cts.map +1 -1
  192. package/dist/permitted/getWebSockets.d.mts +50 -4
  193. package/dist/permitted/getWebSockets.d.mts.map +1 -1
  194. package/dist/permitted/getWebSockets.mjs +29 -2
  195. package/dist/permitted/getWebSockets.mjs.map +1 -1
  196. package/dist/permitted/handlers.cjs +0 -4
  197. package/dist/permitted/handlers.cjs.map +1 -1
  198. package/dist/permitted/handlers.d.cts +274 -56
  199. package/dist/permitted/handlers.d.cts.map +1 -1
  200. package/dist/permitted/handlers.d.mts +274 -56
  201. package/dist/permitted/handlers.d.mts.map +1 -1
  202. package/dist/permitted/handlers.mjs +0 -4
  203. package/dist/permitted/handlers.mjs.map +1 -1
  204. package/dist/permitted/index.cjs.map +1 -1
  205. package/dist/permitted/index.d.cts +1 -3
  206. package/dist/permitted/index.d.cts.map +1 -1
  207. package/dist/permitted/index.d.mts +1 -3
  208. package/dist/permitted/index.d.mts.map +1 -1
  209. package/dist/permitted/index.mjs.map +1 -1
  210. package/dist/permitted/invokeKeyring.cjs +8 -2
  211. package/dist/permitted/invokeKeyring.cjs.map +1 -1
  212. package/dist/permitted/invokeKeyring.d.cts +34 -4
  213. package/dist/permitted/invokeKeyring.d.cts.map +1 -1
  214. package/dist/permitted/invokeKeyring.d.mts +34 -4
  215. package/dist/permitted/invokeKeyring.d.mts.map +1 -1
  216. package/dist/permitted/invokeKeyring.mjs +8 -2
  217. package/dist/permitted/invokeKeyring.mjs.map +1 -1
  218. package/dist/permitted/invokeSnapSugar.cjs +25 -2
  219. package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
  220. package/dist/permitted/invokeSnapSugar.d.cts +30 -3
  221. package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
  222. package/dist/permitted/invokeSnapSugar.d.mts +30 -3
  223. package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
  224. package/dist/permitted/invokeSnapSugar.mjs +25 -2
  225. package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
  226. package/dist/permitted/listEntropySources.cjs +40 -1
  227. package/dist/permitted/listEntropySources.cjs.map +1 -1
  228. package/dist/permitted/listEntropySources.d.cts +64 -3
  229. package/dist/permitted/listEntropySources.d.cts.map +1 -1
  230. package/dist/permitted/listEntropySources.d.mts +64 -3
  231. package/dist/permitted/listEntropySources.d.mts.map +1 -1
  232. package/dist/permitted/listEntropySources.mjs +40 -1
  233. package/dist/permitted/listEntropySources.mjs.map +1 -1
  234. package/dist/permitted/openWebSocket.cjs +46 -2
  235. package/dist/permitted/openWebSocket.cjs.map +1 -1
  236. package/dist/permitted/openWebSocket.d.cts +66 -4
  237. package/dist/permitted/openWebSocket.d.cts.map +1 -1
  238. package/dist/permitted/openWebSocket.d.mts +66 -4
  239. package/dist/permitted/openWebSocket.d.mts.map +1 -1
  240. package/dist/permitted/openWebSocket.mjs +46 -2
  241. package/dist/permitted/openWebSocket.mjs.map +1 -1
  242. package/dist/permitted/requestSnaps.cjs +25 -2
  243. package/dist/permitted/requestSnaps.cjs.map +1 -1
  244. package/dist/permitted/requestSnaps.d.cts +51 -3
  245. package/dist/permitted/requestSnaps.d.cts.map +1 -1
  246. package/dist/permitted/requestSnaps.d.mts +51 -3
  247. package/dist/permitted/requestSnaps.d.mts.map +1 -1
  248. package/dist/permitted/requestSnaps.mjs +25 -2
  249. package/dist/permitted/requestSnaps.mjs.map +1 -1
  250. package/dist/permitted/resolveInterface.cjs +38 -2
  251. package/dist/permitted/resolveInterface.cjs.map +1 -1
  252. package/dist/permitted/resolveInterface.d.cts +55 -4
  253. package/dist/permitted/resolveInterface.d.cts.map +1 -1
  254. package/dist/permitted/resolveInterface.d.mts +55 -4
  255. package/dist/permitted/resolveInterface.d.mts.map +1 -1
  256. package/dist/permitted/resolveInterface.mjs +39 -3
  257. package/dist/permitted/resolveInterface.mjs.map +1 -1
  258. package/dist/permitted/scheduleBackgroundEvent.cjs +26 -0
  259. package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
  260. package/dist/permitted/scheduleBackgroundEvent.d.cts +49 -3
  261. package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
  262. package/dist/permitted/scheduleBackgroundEvent.d.mts +49 -3
  263. package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
  264. package/dist/permitted/scheduleBackgroundEvent.mjs +26 -0
  265. package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
  266. package/dist/permitted/sendWebSocketMessage.cjs +24 -2
  267. package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
  268. package/dist/permitted/sendWebSocketMessage.d.cts +44 -4
  269. package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
  270. package/dist/permitted/sendWebSocketMessage.d.mts +44 -4
  271. package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
  272. package/dist/permitted/sendWebSocketMessage.mjs +24 -2
  273. package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
  274. package/dist/permitted/setState.cjs +48 -2
  275. package/dist/permitted/setState.cjs.map +1 -1
  276. package/dist/permitted/setState.d.cts +72 -4
  277. package/dist/permitted/setState.d.cts.map +1 -1
  278. package/dist/permitted/setState.d.mts +72 -4
  279. package/dist/permitted/setState.d.mts.map +1 -1
  280. package/dist/permitted/setState.mjs +48 -2
  281. package/dist/permitted/setState.mjs.map +1 -1
  282. package/dist/permitted/startTrace.cjs +4 -1
  283. package/dist/permitted/startTrace.cjs.map +1 -1
  284. package/dist/permitted/startTrace.d.cts +26 -3
  285. package/dist/permitted/startTrace.d.cts.map +1 -1
  286. package/dist/permitted/startTrace.d.mts +26 -3
  287. package/dist/permitted/startTrace.d.mts.map +1 -1
  288. package/dist/permitted/startTrace.mjs +4 -1
  289. package/dist/permitted/startTrace.mjs.map +1 -1
  290. package/dist/permitted/trackError.cjs +4 -1
  291. package/dist/permitted/trackError.cjs.map +1 -1
  292. package/dist/permitted/trackError.d.cts +26 -3
  293. package/dist/permitted/trackError.d.cts.map +1 -1
  294. package/dist/permitted/trackError.d.mts +26 -3
  295. package/dist/permitted/trackError.d.mts.map +1 -1
  296. package/dist/permitted/trackError.mjs +4 -1
  297. package/dist/permitted/trackError.mjs.map +1 -1
  298. package/dist/permitted/trackEvent.cjs +4 -1
  299. package/dist/permitted/trackEvent.cjs.map +1 -1
  300. package/dist/permitted/trackEvent.d.cts +25 -4
  301. package/dist/permitted/trackEvent.d.cts.map +1 -1
  302. package/dist/permitted/trackEvent.d.mts +25 -4
  303. package/dist/permitted/trackEvent.d.mts.map +1 -1
  304. package/dist/permitted/trackEvent.mjs +4 -1
  305. package/dist/permitted/trackEvent.mjs.map +1 -1
  306. package/dist/permitted/updateInterface.cjs +47 -2
  307. package/dist/permitted/updateInterface.cjs.map +1 -1
  308. package/dist/permitted/updateInterface.d.cts +64 -3
  309. package/dist/permitted/updateInterface.d.cts.map +1 -1
  310. package/dist/permitted/updateInterface.d.mts +64 -3
  311. package/dist/permitted/updateInterface.d.mts.map +1 -1
  312. package/dist/permitted/updateInterface.mjs +48 -3
  313. package/dist/permitted/updateInterface.mjs.map +1 -1
  314. package/dist/restricted/caveats/snapIds.cjs.map +1 -1
  315. package/dist/restricted/caveats/snapIds.d.cts.map +1 -1
  316. package/dist/restricted/caveats/snapIds.d.mts.map +1 -1
  317. package/dist/restricted/caveats/snapIds.mjs.map +1 -1
  318. package/dist/restricted/dialog.cjs +49 -1
  319. package/dist/restricted/dialog.cjs.map +1 -1
  320. package/dist/restricted/dialog.d.cts +52 -2
  321. package/dist/restricted/dialog.d.cts.map +1 -1
  322. package/dist/restricted/dialog.d.mts +52 -2
  323. package/dist/restricted/dialog.d.mts.map +1 -1
  324. package/dist/restricted/dialog.mjs +49 -1
  325. package/dist/restricted/dialog.mjs.map +1 -1
  326. package/dist/restricted/getBip32Entropy.cjs +55 -0
  327. package/dist/restricted/getBip32Entropy.cjs.map +1 -1
  328. package/dist/restricted/getBip32Entropy.d.cts +55 -0
  329. package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
  330. package/dist/restricted/getBip32Entropy.d.mts +55 -0
  331. package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
  332. package/dist/restricted/getBip32Entropy.mjs +55 -0
  333. package/dist/restricted/getBip32Entropy.mjs.map +1 -1
  334. package/dist/restricted/getBip32PublicKey.cjs +36 -0
  335. package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
  336. package/dist/restricted/getBip32PublicKey.d.cts +36 -0
  337. package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
  338. package/dist/restricted/getBip32PublicKey.d.mts +36 -0
  339. package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
  340. package/dist/restricted/getBip32PublicKey.mjs +36 -0
  341. package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
  342. package/dist/restricted/getBip44Entropy.cjs +53 -0
  343. package/dist/restricted/getBip44Entropy.cjs.map +1 -1
  344. package/dist/restricted/getBip44Entropy.d.cts +53 -0
  345. package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
  346. package/dist/restricted/getBip44Entropy.d.mts +53 -0
  347. package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
  348. package/dist/restricted/getBip44Entropy.mjs +53 -0
  349. package/dist/restricted/getBip44Entropy.mjs.map +1 -1
  350. package/dist/restricted/getEntropy.cjs +35 -0
  351. package/dist/restricted/getEntropy.cjs.map +1 -1
  352. package/dist/restricted/getEntropy.d.cts +35 -0
  353. package/dist/restricted/getEntropy.d.cts.map +1 -1
  354. package/dist/restricted/getEntropy.d.mts +35 -0
  355. package/dist/restricted/getEntropy.d.mts.map +1 -1
  356. package/dist/restricted/getEntropy.mjs +35 -0
  357. package/dist/restricted/getEntropy.mjs.map +1 -1
  358. package/dist/restricted/getLocale.cjs +11 -0
  359. package/dist/restricted/getLocale.cjs.map +1 -1
  360. package/dist/restricted/getLocale.d.cts +11 -0
  361. package/dist/restricted/getLocale.d.cts.map +1 -1
  362. package/dist/restricted/getLocale.d.mts +11 -0
  363. package/dist/restricted/getLocale.d.mts.map +1 -1
  364. package/dist/restricted/getLocale.mjs +11 -0
  365. package/dist/restricted/getLocale.mjs.map +1 -1
  366. package/dist/restricted/getPreferences.cjs +24 -0
  367. package/dist/restricted/getPreferences.cjs.map +1 -1
  368. package/dist/restricted/getPreferences.d.cts +24 -0
  369. package/dist/restricted/getPreferences.d.cts.map +1 -1
  370. package/dist/restricted/getPreferences.d.mts +24 -0
  371. package/dist/restricted/getPreferences.d.mts.map +1 -1
  372. package/dist/restricted/getPreferences.mjs +24 -0
  373. package/dist/restricted/getPreferences.mjs.map +1 -1
  374. package/dist/restricted/index.d.cts +1 -1
  375. package/dist/restricted/index.d.mts +1 -1
  376. package/dist/restricted/invokeSnap.cjs +22 -0
  377. package/dist/restricted/invokeSnap.cjs.map +1 -1
  378. package/dist/restricted/invokeSnap.d.cts +24 -6
  379. package/dist/restricted/invokeSnap.d.cts.map +1 -1
  380. package/dist/restricted/invokeSnap.d.mts +24 -6
  381. package/dist/restricted/invokeSnap.d.mts.map +1 -1
  382. package/dist/restricted/invokeSnap.mjs +22 -0
  383. package/dist/restricted/invokeSnap.mjs.map +1 -1
  384. package/dist/restricted/manageAccounts.cjs +10 -0
  385. package/dist/restricted/manageAccounts.cjs.map +1 -1
  386. package/dist/restricted/manageAccounts.d.cts +10 -0
  387. package/dist/restricted/manageAccounts.d.cts.map +1 -1
  388. package/dist/restricted/manageAccounts.d.mts +10 -0
  389. package/dist/restricted/manageAccounts.d.mts.map +1 -1
  390. package/dist/restricted/manageAccounts.mjs +10 -0
  391. package/dist/restricted/manageAccounts.mjs.map +1 -1
  392. package/dist/restricted/manageState.cjs +42 -0
  393. package/dist/restricted/manageState.cjs.map +1 -1
  394. package/dist/restricted/manageState.d.cts +42 -0
  395. package/dist/restricted/manageState.d.cts.map +1 -1
  396. package/dist/restricted/manageState.d.mts +42 -0
  397. package/dist/restricted/manageState.d.mts.map +1 -1
  398. package/dist/restricted/manageState.mjs +42 -0
  399. package/dist/restricted/manageState.mjs.map +1 -1
  400. package/dist/restricted/notify.cjs +74 -0
  401. package/dist/restricted/notify.cjs.map +1 -1
  402. package/dist/restricted/notify.d.cts +74 -0
  403. package/dist/restricted/notify.d.cts.map +1 -1
  404. package/dist/restricted/notify.d.mts +74 -0
  405. package/dist/restricted/notify.d.mts.map +1 -1
  406. package/dist/restricted/notify.mjs +74 -0
  407. package/dist/restricted/notify.mjs.map +1 -1
  408. package/dist/utils.cjs +14 -1
  409. package/dist/utils.cjs.map +1 -1
  410. package/dist/utils.d.cts +6 -0
  411. package/dist/utils.d.cts.map +1 -1
  412. package/dist/utils.d.mts +6 -0
  413. package/dist/utils.d.mts.map +1 -1
  414. package/dist/utils.mjs +13 -0
  415. package/dist/utils.mjs.map +1 -1
  416. package/package.json +11 -7
  417. package/dist/permitted/experimentalProviderRequest.cjs +0 -152
  418. package/dist/permitted/experimentalProviderRequest.cjs.map +0 -1
  419. package/dist/permitted/experimentalProviderRequest.d.cts +0 -39
  420. package/dist/permitted/experimentalProviderRequest.d.cts.map +0 -1
  421. package/dist/permitted/experimentalProviderRequest.d.mts +0 -39
  422. package/dist/permitted/experimentalProviderRequest.d.mts.map +0 -1
  423. package/dist/permitted/experimentalProviderRequest.mjs +0 -149
  424. package/dist/permitted/experimentalProviderRequest.mjs.map +0 -1
  425. package/dist/permitted/getCurrencyRate.cjs +0 -63
  426. package/dist/permitted/getCurrencyRate.cjs.map +0 -1
  427. package/dist/permitted/getCurrencyRate.d.cts +0 -20
  428. package/dist/permitted/getCurrencyRate.d.cts.map +0 -1
  429. package/dist/permitted/getCurrencyRate.d.mts +0 -20
  430. package/dist/permitted/getCurrencyRate.d.mts.map +0 -1
  431. package/dist/permitted/getCurrencyRate.mjs +0 -60
  432. package/dist/permitted/getCurrencyRate.mjs.map +0 -1
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lifecycleHooksEndowmentBuilder = void 0;
4
4
  const permission_controller_1 = require("@metamask/permission-controller");
5
+ const snaps_utils_1 = require("@metamask/snaps-utils");
6
+ const caveats_1 = require("./caveats/index.cjs");
5
7
  const enum_1 = require("./enum.cjs");
6
8
  const permissionName = enum_1.SnapEndowments.LifecycleHooks;
7
9
  /**
@@ -16,9 +18,12 @@ const specificationBuilder = (_builderOptions) => {
16
18
  return {
17
19
  permissionType: permission_controller_1.PermissionType.Endowment,
18
20
  targetName: permissionName,
19
- allowedCaveats: null,
21
+ allowedCaveats: [snaps_utils_1.SnapCaveatType.MaxRequestTime],
20
22
  endowmentGetter: (_getterOptions) => null,
21
23
  subjectTypes: [permission_controller_1.SubjectType.Snap],
24
+ validator: (0, caveats_1.createGenericPermissionValidator)([
25
+ { type: snaps_utils_1.SnapCaveatType.MaxRequestTime, optional: true },
26
+ ]),
22
27
  };
23
28
  };
24
29
  exports.lifecycleHooksEndowmentBuilder = Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-hooks.cjs","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":";;;AAKA,2EAA8E;AAG9E,qCAAwC;AAExC,MAAM,cAAc,GAAG,qBAAc,CAAC,cAAc,CAAC;AASrD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.LifecycleHooks;\n\ntype LifecycleHooksEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:lifecycle-hooks` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use lifecycle hooks.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `lifecycle-hooks` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n LifecycleHooksEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const lifecycleHooksEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
1
+ {"version":3,"file":"lifecycle-hooks.cjs","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":";;;AAMA,2EAA8E;AAC9E,uDAAuD;AAGvD,iDAA6D;AAC7D,qCAAwC;AAExC,MAAM,cAAc,GAAG,qBAAc,CAAC,cAAc,CAAC;AAUrD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,CAAC,4BAAc,CAAC,cAAc,CAAC;QAC/C,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;QAChC,SAAS,EAAE,IAAA,0CAAgC,EAAC;YAC1C,EAAE,IAAI,EAAE,4BAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.LifecycleHooks;\n\ntype LifecycleHooksEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:lifecycle-hooks` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use lifecycle hooks.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `lifecycle-hooks` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n LifecycleHooksEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n };\n};\n\nexport const lifecycleHooksEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
@@ -1,4 +1,4 @@
1
- import type { PermissionSpecificationBuilder, EndowmentGetterParams } from "@metamask/permission-controller";
1
+ import type { PermissionSpecificationBuilder, EndowmentGetterParams, PermissionValidatorConstraint } from "@metamask/permission-controller";
2
2
  import { PermissionType } from "@metamask/permission-controller";
3
3
  import type { NonEmptyArray } from "@metamask/utils";
4
4
  import { SnapEndowments } from "./enum.cjs";
@@ -10,6 +10,7 @@ export declare const lifecycleHooksEndowmentBuilder: Readonly<{
10
10
  targetName: typeof permissionName;
11
11
  endowmentGetter: (_options?: EndowmentGetterParams) => null;
12
12
  allowedCaveats: Readonly<NonEmptyArray<string>> | null;
13
+ validator: PermissionValidatorConstraint;
13
14
  }>;
14
15
  }>;
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-hooks.d.cts","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAEtB,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAErD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,gCAAgC,CAAC;AA+BrD,eAAO,MAAM,8BAA8B;;;wBA5BzB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;;EA4B7C,CAAC"}
1
+ {"version":3,"file":"lifecycle-hooks.d.cts","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAGrD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,gCAAgC,CAAC;AAmCrD,eAAO,MAAM,8BAA8B;;;wBAhCzB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EA+B/B,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { PermissionSpecificationBuilder, EndowmentGetterParams } from "@metamask/permission-controller";
1
+ import type { PermissionSpecificationBuilder, EndowmentGetterParams, PermissionValidatorConstraint } from "@metamask/permission-controller";
2
2
  import { PermissionType } from "@metamask/permission-controller";
3
3
  import type { NonEmptyArray } from "@metamask/utils";
4
4
  import { SnapEndowments } from "./enum.mjs";
@@ -10,6 +10,7 @@ export declare const lifecycleHooksEndowmentBuilder: Readonly<{
10
10
  targetName: typeof permissionName;
11
11
  endowmentGetter: (_options?: EndowmentGetterParams) => null;
12
12
  allowedCaveats: Readonly<NonEmptyArray<string>> | null;
13
+ validator: PermissionValidatorConstraint;
13
14
  }>;
14
15
  }>;
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-hooks.d.mts","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAEtB,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAErD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,gCAAgC,CAAC;AA+BrD,eAAO,MAAM,8BAA8B;;;wBA5BzB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;;EA4B7C,CAAC"}
1
+ {"version":3,"file":"lifecycle-hooks.d.mts","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAGrD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,gCAAgC,CAAC;AAmCrD,eAAO,MAAM,8BAA8B;;;wBAhCzB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EA+B/B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { PermissionType, SubjectType } from "@metamask/permission-controller";
2
+ import { SnapCaveatType } from "@metamask/snaps-utils";
3
+ import { createGenericPermissionValidator } from "./caveats/index.mjs";
2
4
  import { SnapEndowments } from "./enum.mjs";
3
5
  const permissionName = SnapEndowments.LifecycleHooks;
4
6
  /**
@@ -13,9 +15,12 @@ const specificationBuilder = (_builderOptions) => {
13
15
  return {
14
16
  permissionType: PermissionType.Endowment,
15
17
  targetName: permissionName,
16
- allowedCaveats: null,
18
+ allowedCaveats: [SnapCaveatType.MaxRequestTime],
17
19
  endowmentGetter: (_getterOptions) => null,
18
20
  subjectTypes: [SubjectType.Snap],
21
+ validator: createGenericPermissionValidator([
22
+ { type: SnapCaveatType.MaxRequestTime, optional: true },
23
+ ]),
19
24
  };
20
25
  };
21
26
  export const lifecycleHooksEndowmentBuilder = Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-hooks.mjs","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAG9E,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC;AASrD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.LifecycleHooks;\n\ntype LifecycleHooksEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:lifecycle-hooks` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use lifecycle hooks.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `lifecycle-hooks` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n LifecycleHooksEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const lifecycleHooksEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
1
+ {"version":3,"file":"lifecycle-hooks.mjs","sourceRoot":"","sources":["../../src/endowments/lifecycle-hooks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAC9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AAGvD,OAAO,EAAE,gCAAgC,EAAE,4BAAkB;AAC7D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC;AAUrD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC;QAC/C,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;QAChC,SAAS,EAAE,gCAAgC,CAAC;YAC1C,EAAE,IAAI,EAAE,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.LifecycleHooks;\n\ntype LifecycleHooksEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:lifecycle-hooks` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use lifecycle hooks.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `lifecycle-hooks` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n LifecycleHooksEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n };\n};\n\nexport const lifecycleHooksEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
@@ -74,10 +74,8 @@ exports.getRpcCaveatMapper = getRpcCaveatMapper;
74
74
  * @throws If the permission does not have a valid {@link RpcOrigins} caveat.
75
75
  */
76
76
  function getRpcCaveatOrigins(permission) {
77
- const caveats = permission?.caveats?.filter((caveat) => caveat.type === snaps_utils_1.SnapCaveatType.RpcOrigin);
78
- (0, utils_1.assert)(caveats);
79
- (0, utils_1.assert)(caveats.length === 1);
80
- const caveat = caveats[0];
77
+ const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === snaps_utils_1.SnapCaveatType.RpcOrigin);
78
+ (0, utils_1.assert)(caveat);
81
79
  return caveat.value;
82
80
  }
83
81
  exports.getRpcCaveatOrigins = getRpcCaveatOrigins;
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.cjs","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":";;;AASA,2EAA8E;AAC9E,qDAAiD;AAEjD,uDAA2E;AAE3E,2CAAqE;AAErE,iDAA6D;AAC7D,qCAAwC;AAExC,MAAM,UAAU,GAAG,qBAAc,CAAC,GAAG,CAAC;AAkBtC;;;;;GAKG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAqB,EAAoB,EAAE;IAC9C,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU;QACV,cAAc,EAAE,CAAC,4BAAc,CAAC,SAAS,EAAE,4BAAc,CAAC,cAAc,CAAC;QACzE,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,SAAS,EAAE,IAAA,0CAAgC,EAAC;YAC1C,EAAE,IAAI,EAAE,4BAAc,CAAC,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,4BAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,UAAU;IACV,oBAAoB;CACZ,CAAC,CAAC;AAEZ;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,MAA2B;IACxD,IAAI,CAAC,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,oDAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzB,IAAA,gCAAkB,EAAC,KAAK,EAAE,sBAAS,CAAC,aAAa,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,KAAW;IAEX,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,4BAAc,CAAC,SAAS;gBAC9B,KAAK;aACN;SACF;KACF,CAAC;AACJ,CAAC;AAXD,gDAWC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,UAAiC;IAEjC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,MAAM,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,4BAAc,CAAC,SAAS,CACrD,CAAC;IACF,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;IAChB,IAAA,cAAM,EAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAA+B,CAAC;IACxD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAXD,kDAWC;AAEY,QAAA,uBAAuB,GAGhC;IACF,CAAC,4BAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE,4BAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAC1E,CAAC;CACH,CAAC","sourcesContent":["import type {\n Caveat,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { RpcOrigins } from '@metamask/snaps-utils';\nimport { assertIsRpcOrigins, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isPlainObject, assert } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst targetName = SnapEndowments.Rpc;\n\ntype RpcSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof targetName;\n endowmentGetter: (_options?: any) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\n// TODO: Either fix this lint violation or explain why it's necessary to\n// ignore.\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype RpcSpecificationBuilderOptions = {\n // Empty for now.\n};\n\n/**\n * The specification builder for the JSON-RPC endowment permission.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the JSON-RPC endowment permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n RpcSpecificationBuilderOptions,\n RpcSpecification\n> = (_builderOptions?: any): RpcSpecification => {\n return {\n permissionType: PermissionType.Endowment,\n targetName,\n allowedCaveats: [SnapCaveatType.RpcOrigin, SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.RpcOrigin },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const rpcEndowmentBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a caveat. This does not validate the type of the\n * caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid JSON-RPC origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsRpcOrigins(value, rpcErrors.invalidParams);\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 getRpcCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.RpcOrigin,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the {@link RpcOrigins} caveat value from a permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n * @throws If the permission does not have a valid {@link RpcOrigins} caveat.\n */\nexport function getRpcCaveatOrigins(\n permission?: PermissionConstraint,\n): RpcOrigins | null {\n const caveats = permission?.caveats?.filter(\n (caveat) => caveat.type === SnapCaveatType.RpcOrigin,\n );\n assert(caveats);\n assert(caveats.length === 1);\n\n const caveat = caveats[0] as Caveat<string, RpcOrigins>;\n return caveat.value;\n}\n\nexport const rpcCaveatSpecifications: Record<\n SnapCaveatType.RpcOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.RpcOrigin]: Object.freeze({\n type: SnapCaveatType.RpcOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n};\n"]}
1
+ {"version":3,"file":"rpc.cjs","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":";;;AASA,2EAA8E;AAC9E,qDAAiD;AAEjD,uDAA2E;AAE3E,2CAAqE;AAErE,iDAA6D;AAC7D,qCAAwC;AAExC,MAAM,UAAU,GAAG,qBAAc,CAAC,GAAG,CAAC;AAkBtC;;;;;GAKG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAqB,EAAoB,EAAE;IAC9C,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU;QACV,cAAc,EAAE,CAAC,4BAAc,CAAC,SAAS,EAAE,4BAAc,CAAC,cAAc,CAAC;QACzE,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,SAAS,EAAE,IAAA,0CAAgC,EAAC;YAC1C,EAAE,IAAI,EAAE,4BAAc,CAAC,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,4BAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,UAAU;IACV,oBAAoB;CACZ,CAAC,CAAC;AAEZ;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,MAA2B;IACxD,IAAI,CAAC,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,oDAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzB,IAAA,gCAAkB,EAAC,KAAK,EAAE,sBAAS,CAAC,aAAa,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,KAAW;IAEX,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,4BAAc,CAAC,SAAS;gBAC9B,KAAK;aACN;SACF;KACF,CAAC;AACJ,CAAC;AAXD,gDAWC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,UAAiC;IAEjC,MAAM,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,CACtC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,4BAAc,CAAC,SAAS,CACnB,CAAC;IAE5C,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;IACf,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AATD,kDASC;AAEY,QAAA,uBAAuB,GAGhC;IACF,CAAC,4BAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE,4BAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAC1E,CAAC;CACH,CAAC","sourcesContent":["import type {\n Caveat,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { RpcOrigins } from '@metamask/snaps-utils';\nimport { assertIsRpcOrigins, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isPlainObject, assert } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst targetName = SnapEndowments.Rpc;\n\ntype RpcSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof targetName;\n endowmentGetter: (_options?: any) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\n// TODO: Either fix this lint violation or explain why it's necessary to\n// ignore.\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype RpcSpecificationBuilderOptions = {\n // Empty for now.\n};\n\n/**\n * The specification builder for the JSON-RPC endowment permission.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the JSON-RPC endowment permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n RpcSpecificationBuilderOptions,\n RpcSpecification\n> = (_builderOptions?: any): RpcSpecification => {\n return {\n permissionType: PermissionType.Endowment,\n targetName,\n allowedCaveats: [SnapCaveatType.RpcOrigin, SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.RpcOrigin },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const rpcEndowmentBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a caveat. This does not validate the type of the\n * caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid JSON-RPC origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsRpcOrigins(value, rpcErrors.invalidParams);\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 getRpcCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.RpcOrigin,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the {@link RpcOrigins} caveat value from a permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n * @throws If the permission does not have a valid {@link RpcOrigins} caveat.\n */\nexport function getRpcCaveatOrigins(\n permission?: PermissionConstraint,\n): RpcOrigins {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.RpcOrigin,\n ) as Caveat<string, RpcOrigins> | undefined;\n\n assert(caveat);\n return caveat.value;\n}\n\nexport const rpcCaveatSpecifications: Record<\n SnapCaveatType.RpcOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.RpcOrigin]: Object.freeze({\n type: SnapCaveatType.RpcOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n};\n"]}
@@ -33,7 +33,7 @@ export declare function getRpcCaveatMapper(value: Json): Pick<PermissionConstrai
33
33
  * @returns The caveat value.
34
34
  * @throws If the permission does not have a valid {@link RpcOrigins} caveat.
35
35
  */
36
- export declare function getRpcCaveatOrigins(permission?: PermissionConstraint): RpcOrigins | null;
36
+ export declare function getRpcCaveatOrigins(permission?: PermissionConstraint): RpcOrigins;
37
37
  export declare const rpcCaveatSpecifications: Record<SnapCaveatType.RpcOrigin, CaveatSpecificationConstraint>;
38
38
  export {};
39
39
  //# sourceMappingURL=rpc.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.cts","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,6BAA6B,EAE7B,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,8BAA8B;AACxD,OAAO,EAAsB,cAAc,EAAE,8BAA8B;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,UAAU,qBAAqB,CAAC;AActC,KAAK,8BAA8B,GAAG,EAErC,CAAC;AA0BF,eAAO,MAAM,mBAAmB;;;wBAvCd,eAAe,SAAS;oBAC5B,iBAAiB;qCACA,GAAG,KAAK,IAAI;wBACzB,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAqC3B,CAAC;AAoBZ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CASvC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,oBAAoB,GAChC,UAAU,GAAG,IAAI,CASnB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,cAAc,CAAC,SAAS,EACxB,6BAA6B,CAM9B,CAAC"}
1
+ {"version":3,"file":"rpc.d.cts","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,6BAA6B,EAE7B,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,8BAA8B;AACxD,OAAO,EAAsB,cAAc,EAAE,8BAA8B;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,UAAU,qBAAqB,CAAC;AActC,KAAK,8BAA8B,GAAG,EAErC,CAAC;AA0BF,eAAO,MAAM,mBAAmB;;;wBAvCd,eAAe,SAAS;oBAC5B,iBAAiB;qCACA,GAAG,KAAK,IAAI;wBACzB,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAqC3B,CAAC;AAoBZ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CASvC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,oBAAoB,GAChC,UAAU,CAOZ;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,cAAc,CAAC,SAAS,EACxB,6BAA6B,CAM9B,CAAC"}
@@ -33,7 +33,7 @@ export declare function getRpcCaveatMapper(value: Json): Pick<PermissionConstrai
33
33
  * @returns The caveat value.
34
34
  * @throws If the permission does not have a valid {@link RpcOrigins} caveat.
35
35
  */
36
- export declare function getRpcCaveatOrigins(permission?: PermissionConstraint): RpcOrigins | null;
36
+ export declare function getRpcCaveatOrigins(permission?: PermissionConstraint): RpcOrigins;
37
37
  export declare const rpcCaveatSpecifications: Record<SnapCaveatType.RpcOrigin, CaveatSpecificationConstraint>;
38
38
  export {};
39
39
  //# sourceMappingURL=rpc.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.mts","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,6BAA6B,EAE7B,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,8BAA8B;AACxD,OAAO,EAAsB,cAAc,EAAE,8BAA8B;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,UAAU,qBAAqB,CAAC;AActC,KAAK,8BAA8B,GAAG,EAErC,CAAC;AA0BF,eAAO,MAAM,mBAAmB;;;wBAvCd,eAAe,SAAS;oBAC5B,iBAAiB;qCACA,GAAG,KAAK,IAAI;wBACzB,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAqC3B,CAAC;AAoBZ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CASvC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,oBAAoB,GAChC,UAAU,GAAG,IAAI,CASnB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,cAAc,CAAC,SAAS,EACxB,6BAA6B,CAM9B,CAAC"}
1
+ {"version":3,"file":"rpc.d.mts","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,6BAA6B,EAE7B,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,8BAA8B;AACxD,OAAO,EAAsB,cAAc,EAAE,8BAA8B;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,UAAU,qBAAqB,CAAC;AActC,KAAK,8BAA8B,GAAG,EAErC,CAAC;AA0BF,eAAO,MAAM,mBAAmB;;;wBAvCd,eAAe,SAAS;oBAC5B,iBAAiB;qCACA,GAAG,KAAK,IAAI;wBACzB,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;sBAC1B,SAAS,WAAW,EAAE;;EAqC3B,CAAC;AAoBZ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CASvC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,oBAAoB,GAChC,UAAU,CAOZ;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,cAAc,CAAC,SAAS,EACxB,6BAA6B,CAM9B,CAAC"}
@@ -70,10 +70,8 @@ export function getRpcCaveatMapper(value) {
70
70
  * @throws If the permission does not have a valid {@link RpcOrigins} caveat.
71
71
  */
72
72
  export function getRpcCaveatOrigins(permission) {
73
- const caveats = permission?.caveats?.filter((caveat) => caveat.type === SnapCaveatType.RpcOrigin);
74
- assert(caveats);
75
- assert(caveats.length === 1);
76
- const caveat = caveats[0];
73
+ const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === SnapCaveatType.RpcOrigin);
74
+ assert(caveat);
77
75
  return caveat.value;
78
76
  }
79
77
  export const rpcCaveatSpecifications = {
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.mjs","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAC9E,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,8BAA8B;AAE3E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,wBAAwB;AAErE,OAAO,EAAE,gCAAgC,EAAE,4BAAkB;AAC7D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC;AAkBtC;;;;;GAKG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAqB,EAAoB,EAAE;IAC9C,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,UAAU;QACV,cAAc,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;QACzE,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,SAAS,EAAE,gCAAgC,CAAC;YAC1C,EAAE,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,UAAU;IACV,oBAAoB;CACZ,CAAC,CAAC;AAEZ;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,MAA2B;IACxD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,SAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,oDAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAW;IAEX,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,cAAc,CAAC,SAAS;gBAC9B,KAAK;aACN;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAiC;IAEjC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,MAAM,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,SAAS,CACrD,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,CAAC;IAChB,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAA+B,CAAC;IACxD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAGhC;IACF,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE,cAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAC1E,CAAC;CACH,CAAC","sourcesContent":["import type {\n Caveat,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { RpcOrigins } from '@metamask/snaps-utils';\nimport { assertIsRpcOrigins, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isPlainObject, assert } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst targetName = SnapEndowments.Rpc;\n\ntype RpcSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof targetName;\n endowmentGetter: (_options?: any) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\n// TODO: Either fix this lint violation or explain why it's necessary to\n// ignore.\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype RpcSpecificationBuilderOptions = {\n // Empty for now.\n};\n\n/**\n * The specification builder for the JSON-RPC endowment permission.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the JSON-RPC endowment permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n RpcSpecificationBuilderOptions,\n RpcSpecification\n> = (_builderOptions?: any): RpcSpecification => {\n return {\n permissionType: PermissionType.Endowment,\n targetName,\n allowedCaveats: [SnapCaveatType.RpcOrigin, SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.RpcOrigin },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const rpcEndowmentBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a caveat. This does not validate the type of the\n * caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid JSON-RPC origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsRpcOrigins(value, rpcErrors.invalidParams);\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 getRpcCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.RpcOrigin,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the {@link RpcOrigins} caveat value from a permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n * @throws If the permission does not have a valid {@link RpcOrigins} caveat.\n */\nexport function getRpcCaveatOrigins(\n permission?: PermissionConstraint,\n): RpcOrigins | null {\n const caveats = permission?.caveats?.filter(\n (caveat) => caveat.type === SnapCaveatType.RpcOrigin,\n );\n assert(caveats);\n assert(caveats.length === 1);\n\n const caveat = caveats[0] as Caveat<string, RpcOrigins>;\n return caveat.value;\n}\n\nexport const rpcCaveatSpecifications: Record<\n SnapCaveatType.RpcOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.RpcOrigin]: Object.freeze({\n type: SnapCaveatType.RpcOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n};\n"]}
1
+ {"version":3,"file":"rpc.mjs","sourceRoot":"","sources":["../../src/endowments/rpc.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAC9E,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,8BAA8B;AAE3E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,wBAAwB;AAErE,OAAO,EAAE,gCAAgC,EAAE,4BAAkB;AAC7D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC;AAkBtC;;;;;GAKG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAqB,EAAoB,EAAE;IAC9C,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,UAAU;QACV,cAAc,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;QACzE,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,SAAS,EAAE,gCAAgC,CAAC;YAC1C,EAAE,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,UAAU;IACV,oBAAoB;CACZ,CAAC,CAAC;AAEZ;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,MAA2B;IACxD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,SAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,oDAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAW;IAEX,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,cAAc,CAAC,SAAS;gBAC9B,KAAK;aACN;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAiC;IAEjC,MAAM,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,CACtC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,SAAS,CACnB,CAAC;IAE5C,MAAM,CAAC,MAAM,CAAC,CAAC;IACf,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAGhC;IACF,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE,cAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAC1E,CAAC;CACH,CAAC","sourcesContent":["import type {\n Caveat,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { RpcOrigins } from '@metamask/snaps-utils';\nimport { assertIsRpcOrigins, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isPlainObject, assert } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst targetName = SnapEndowments.Rpc;\n\ntype RpcSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof targetName;\n endowmentGetter: (_options?: any) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\n// TODO: Either fix this lint violation or explain why it's necessary to\n// ignore.\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ntype RpcSpecificationBuilderOptions = {\n // Empty for now.\n};\n\n/**\n * The specification builder for the JSON-RPC endowment permission.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the JSON-RPC endowment permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n RpcSpecificationBuilderOptions,\n RpcSpecification\n> = (_builderOptions?: any): RpcSpecification => {\n return {\n permissionType: PermissionType.Endowment,\n targetName,\n allowedCaveats: [SnapCaveatType.RpcOrigin, SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.RpcOrigin },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const rpcEndowmentBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a caveat. This does not validate the type of the\n * caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid JSON-RPC origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsRpcOrigins(value, rpcErrors.invalidParams);\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 getRpcCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.RpcOrigin,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the {@link RpcOrigins} caveat value from a permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n * @throws If the permission does not have a valid {@link RpcOrigins} caveat.\n */\nexport function getRpcCaveatOrigins(\n permission?: PermissionConstraint,\n): RpcOrigins {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.RpcOrigin,\n ) as Caveat<string, RpcOrigins> | undefined;\n\n assert(caveat);\n return caveat.value;\n}\n\nexport const rpcCaveatSpecifications: Record<\n SnapCaveatType.RpcOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.RpcOrigin]: Object.freeze({\n type: SnapCaveatType.RpcOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n};\n"]}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.settingsPageEndowmentBuilder = void 0;
4
4
  const permission_controller_1 = require("@metamask/permission-controller");
5
+ const snaps_utils_1 = require("@metamask/snaps-utils");
6
+ const caveats_1 = require("./caveats/index.cjs");
5
7
  const enum_1 = require("./enum.cjs");
6
8
  const permissionName = enum_1.SnapEndowments.SettingsPage;
7
9
  /**
@@ -16,9 +18,12 @@ const specificationBuilder = (_builderOptions) => {
16
18
  return {
17
19
  permissionType: permission_controller_1.PermissionType.Endowment,
18
20
  targetName: permissionName,
19
- allowedCaveats: null,
21
+ allowedCaveats: [snaps_utils_1.SnapCaveatType.MaxRequestTime],
20
22
  endowmentGetter: (_getterOptions) => null,
21
23
  subjectTypes: [permission_controller_1.SubjectType.Snap],
24
+ validator: (0, caveats_1.createGenericPermissionValidator)([
25
+ { type: snaps_utils_1.SnapCaveatType.MaxRequestTime, optional: true },
26
+ ]),
22
27
  };
23
28
  };
24
29
  exports.settingsPageEndowmentBuilder = Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"settings-page.cjs","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":";;;AAKA,2EAA8E;AAG9E,qCAAwC;AAExC,MAAM,cAAc,GAAG,qBAAc,CAAC,YAAY,CAAC;AASnD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SettingsPage;\n\ntype SettingsPageEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:settings-page` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use the snap settings page feature.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `settings-page` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SettingsPageEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const settingsPageEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
1
+ {"version":3,"file":"settings-page.cjs","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":";;;AAMA,2EAA8E;AAC9E,uDAAuD;AAGvD,iDAA6D;AAC7D,qCAAwC;AAExC,MAAM,cAAc,GAAG,qBAAc,CAAC,YAAY,CAAC;AAUnD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,CAAC,4BAAc,CAAC,cAAc,CAAC;QAC/C,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;QAChC,SAAS,EAAE,IAAA,0CAAgC,EAAC;YAC1C,EAAE,IAAI,EAAE,4BAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SettingsPage;\n\ntype SettingsPageEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:settings-page` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use the snap settings page feature.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `settings-page` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SettingsPageEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n };\n};\n\nexport const settingsPageEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
@@ -1,4 +1,4 @@
1
- import type { PermissionSpecificationBuilder, EndowmentGetterParams } from "@metamask/permission-controller";
1
+ import type { PermissionSpecificationBuilder, EndowmentGetterParams, PermissionValidatorConstraint } from "@metamask/permission-controller";
2
2
  import { PermissionType } from "@metamask/permission-controller";
3
3
  import type { NonEmptyArray } from "@metamask/utils";
4
4
  import { SnapEndowments } from "./enum.cjs";
@@ -10,6 +10,7 @@ export declare const settingsPageEndowmentBuilder: Readonly<{
10
10
  targetName: typeof permissionName;
11
11
  endowmentGetter: (_options?: EndowmentGetterParams) => null;
12
12
  allowedCaveats: Readonly<NonEmptyArray<string>> | null;
13
+ validator: PermissionValidatorConstraint;
13
14
  }>;
14
15
  }>;
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"settings-page.d.cts","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAEtB,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAErD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,8BAA8B,CAAC;AA+BnD,eAAO,MAAM,4BAA4B;;;wBA5BvB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;;EA4B7C,CAAC"}
1
+ {"version":3,"file":"settings-page.d.cts","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAGrD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,8BAA8B,CAAC;AAmCnD,eAAO,MAAM,4BAA4B;;;wBAhCvB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EA+B/B,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { PermissionSpecificationBuilder, EndowmentGetterParams } from "@metamask/permission-controller";
1
+ import type { PermissionSpecificationBuilder, EndowmentGetterParams, PermissionValidatorConstraint } from "@metamask/permission-controller";
2
2
  import { PermissionType } from "@metamask/permission-controller";
3
3
  import type { NonEmptyArray } from "@metamask/utils";
4
4
  import { SnapEndowments } from "./enum.mjs";
@@ -10,6 +10,7 @@ export declare const settingsPageEndowmentBuilder: Readonly<{
10
10
  targetName: typeof permissionName;
11
11
  endowmentGetter: (_options?: EndowmentGetterParams) => null;
12
12
  allowedCaveats: Readonly<NonEmptyArray<string>> | null;
13
+ validator: PermissionValidatorConstraint;
13
14
  }>;
14
15
  }>;
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"settings-page.d.mts","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAEtB,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAErD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,8BAA8B,CAAC;AA+BnD,eAAO,MAAM,4BAA4B;;;wBA5BvB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;;EA4B7C,CAAC"}
1
+ {"version":3,"file":"settings-page.d.mts","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAGrD,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,8BAA8B,CAAC;AAmCnD,eAAO,MAAM,4BAA4B;;;wBAhCvB,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EA+B/B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { PermissionType, SubjectType } from "@metamask/permission-controller";
2
+ import { SnapCaveatType } from "@metamask/snaps-utils";
3
+ import { createGenericPermissionValidator } from "./caveats/index.mjs";
2
4
  import { SnapEndowments } from "./enum.mjs";
3
5
  const permissionName = SnapEndowments.SettingsPage;
4
6
  /**
@@ -13,9 +15,12 @@ const specificationBuilder = (_builderOptions) => {
13
15
  return {
14
16
  permissionType: PermissionType.Endowment,
15
17
  targetName: permissionName,
16
- allowedCaveats: null,
18
+ allowedCaveats: [SnapCaveatType.MaxRequestTime],
17
19
  endowmentGetter: (_getterOptions) => null,
18
20
  subjectTypes: [SubjectType.Snap],
21
+ validator: createGenericPermissionValidator([
22
+ { type: SnapCaveatType.MaxRequestTime, optional: true },
23
+ ]),
19
24
  };
20
25
  };
21
26
  export const settingsPageEndowmentBuilder = Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"settings-page.mjs","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAG9E,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC;AASnD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SettingsPage;\n\ntype SettingsPageEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:settings-page` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use the snap settings page feature.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `settings-page` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SettingsPageEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const settingsPageEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
1
+ {"version":3,"file":"settings-page.mjs","sourceRoot":"","sources":["../../src/endowments/settings-page.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC;AAC9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AAGvD,OAAO,EAAE,gCAAgC,EAAE,4BAAkB;AAC7D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC;AAUnD;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC;QAC/C,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;QAChC,SAAS,EAAE,gCAAgC,CAAC;YAC1C,EAAE,IAAI,EAAE,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SettingsPage;\n\ntype SettingsPageEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:settings-page` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use the snap settings page feature.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `settings-page` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SettingsPageEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n subjectTypes: [SubjectType.Snap],\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n };\n};\n\nexport const settingsPageEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"]}
@@ -19,7 +19,10 @@ const specificationBuilder = (_builderOptions) => {
19
19
  return {
20
20
  permissionType: permission_controller_1.PermissionType.Endowment,
21
21
  targetName: permissionName,
22
- allowedCaveats: [snaps_utils_1.SnapCaveatType.SignatureOrigin],
22
+ allowedCaveats: [
23
+ snaps_utils_1.SnapCaveatType.SignatureOrigin,
24
+ snaps_utils_1.SnapCaveatType.MaxRequestTime,
25
+ ],
23
26
  endowmentGetter: (_getterOptions) => null,
24
27
  validator: (0, caveats_1.createGenericPermissionValidator)([
25
28
  { type: snaps_utils_1.SnapCaveatType.SignatureOrigin, optional: true },
@@ -84,13 +87,8 @@ exports.getSignatureInsightCaveatMapper = getSignatureInsightCaveatMapper;
84
87
  * signature origin caveat.
85
88
  */
86
89
  function getSignatureOriginCaveat(permission) {
87
- if (!permission?.caveats) {
88
- return null;
89
- }
90
- (0, utils_1.assert)(permission.caveats.length === 1);
91
- (0, utils_1.assert)(permission.caveats[0].type === snaps_utils_1.SnapCaveatType.SignatureOrigin);
92
- const caveat = permission.caveats[0];
93
- return caveat.value ?? null;
90
+ const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === snaps_utils_1.SnapCaveatType.SignatureOrigin);
91
+ return caveat?.value ?? null;
94
92
  }
95
93
  exports.getSignatureOriginCaveat = getSignatureOriginCaveat;
96
94
  exports.signatureInsightCaveatSpecifications = {
@@ -1 +1 @@
1
- {"version":3,"file":"signature-insight.cjs","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionConstraint,\n CaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SignatureInsight;\n\ntype SignatureInsightEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:signature-insight` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to show information on the signature confirmation screen.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the signature-insight endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SignatureInsightEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.SignatureOrigin],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.SignatureOrigin, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const signatureInsightEndowmentBuilder = 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 assert(\n typeof value === 'boolean',\n 'Expected caveat value to have type \"boolean\"',\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 * PermissionController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getSignatureInsightCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (\n !value ||\n !isObject(value) ||\n (isObject(value) && Object.keys(value).length === 0)\n ) {\n return { caveats: null };\n }\n return {\n caveats: [\n {\n type: SnapCaveatType.SignatureOrigin,\n value:\n hasProperty(value, 'allowSignatureOrigin') &&\n (value.allowSignatureOrigin as boolean),\n },\n ],\n };\n}\n\n/**\n * Getter function to get the signature origin 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 signature origin caveat from.\n * @returns The signature origin, or `null` if the permission does not have a\n * signature origin caveat.\n */\nexport function getSignatureOriginCaveat(\n permission?: PermissionConstraint,\n): boolean | null {\n if (!permission?.caveats) {\n return null;\n }\n\n assert(permission.caveats.length === 1);\n assert(permission.caveats[0].type === SnapCaveatType.SignatureOrigin);\n\n const caveat = permission.caveats[0] as Caveat<string, boolean>;\n\n return caveat.value ?? null;\n}\n\nexport const signatureInsightCaveatSpecifications: Record<\n SnapCaveatType.SignatureOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SignatureOrigin]: Object.freeze({\n type: SnapCaveatType.SignatureOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"]}
1
+ {"version":3,"file":"signature-insight.cjs","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":";;;AASA,2EAA8E;AAC9E,qDAAiD;AACjD,uDAAuD;AAEvD,2CAA+E;AAE/E,iDAA6D;AAC7D,qCAAwC;AAExC,MAAM,cAAc,GAAG,qBAAc,CAAC,gBAAgB,CAAC;AAUvD;;;;;;GAMG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE;YACd,4BAAc,CAAC,eAAe;YAC9B,4BAAc,CAAC,cAAc;SAC9B;QACD,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,SAAS,EAAE,IAAA,0CAAgC,EAAC;YAC1C,EAAE,IAAI,EAAE,4BAAc,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxD,EAAE,IAAI,EAAE,4BAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5D,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC;AAEZ;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAA2B;IACjD,IAAI,CAAC,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAA,cAAM,EACJ,OAAO,KAAK,KAAK,SAAS,EAC1B,8CAA8C,CAC/C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,+BAA+B,CAC7C,KAAW;IAEX,IACE,CAAC,KAAK;QACN,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC;QAChB,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EACpD,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,4BAAc,CAAC,eAAe;gBACpC,KAAK,EACH,IAAA,mBAAW,EAAC,KAAK,EAAE,sBAAsB,CAAC;oBACzC,KAAK,CAAC,oBAAgC;aAC1C;SACF;KACF,CAAC;AACJ,CAAC;AApBD,0EAoBC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,wBAAwB,CACtC,UAAiC;IAEjC,MAAM,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,CACtC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,4BAAc,CAAC,eAAe,CAC5B,CAAC;IAEzC,OAAO,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;AAC/B,CAAC;AARD,4DAQC;AAEY,QAAA,oCAAoC,GAG7C;IACF,CAAC,4BAAc,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9C,IAAI,EAAE,4BAAc,CAAC,eAAe;QACpC,SAAS,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;KACnE,CAAC;CACH,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionConstraint,\n CaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SignatureInsight;\n\ntype SignatureInsightEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:signature-insight` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to show information on the signature confirmation screen.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the signature-insight endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SignatureInsightEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.SignatureOrigin,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.SignatureOrigin, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const signatureInsightEndowmentBuilder = 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 assert(\n typeof value === 'boolean',\n 'Expected caveat value to have type \"boolean\"',\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 * PermissionController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getSignatureInsightCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (\n !value ||\n !isObject(value) ||\n (isObject(value) && Object.keys(value).length === 0)\n ) {\n return { caveats: null };\n }\n return {\n caveats: [\n {\n type: SnapCaveatType.SignatureOrigin,\n value:\n hasProperty(value, 'allowSignatureOrigin') &&\n (value.allowSignatureOrigin as boolean),\n },\n ],\n };\n}\n\n/**\n * Getter function to get the signature origin 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 signature origin caveat from.\n * @returns The signature origin, or `null` if the permission does not have a\n * signature origin caveat.\n */\nexport function getSignatureOriginCaveat(\n permission?: PermissionConstraint,\n): boolean | null {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.SignatureOrigin,\n ) as Caveat<string, boolean> | undefined;\n\n return caveat?.value ?? null;\n}\n\nexport const signatureInsightCaveatSpecifications: Record<\n SnapCaveatType.SignatureOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SignatureOrigin]: Object.freeze({\n type: SnapCaveatType.SignatureOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"signature-insight.d.cts","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,kCAAkC,CAAC;AAmCvD,eAAO,MAAM,gCAAgC;;;wBAhC3B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EA+B/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAWhB;AAED,eAAO,MAAM,oCAAoC,EAAE,MAAM,CACvD,cAAc,CAAC,eAAe,EAC9B,6BAA6B,CAM9B,CAAC"}
1
+ {"version":3,"file":"signature-insight.d.cts","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,kCAAkC,CAAC;AAsCvD,eAAO,MAAM,gCAAgC;;;wBAnC3B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EAkC/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAMhB;AAED,eAAO,MAAM,oCAAoC,EAAE,MAAM,CACvD,cAAc,CAAC,eAAe,EAC9B,6BAA6B,CAM9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"signature-insight.d.mts","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,kCAAkC,CAAC;AAmCvD,eAAO,MAAM,gCAAgC;;;wBAhC3B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EA+B/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAWhB;AAED,eAAO,MAAM,oCAAoC,EAAE,MAAM,CACvD,cAAc,CAAC,eAAe,EAC9B,6BAA6B,CAM9B,CAAC"}
1
+ {"version":3,"file":"signature-insight.d.mts","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,kCAAkC,CAAC;AAsCvD,eAAO,MAAM,gCAAgC;;;wBAnC3B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EAkC/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAMhB;AAED,eAAO,MAAM,oCAAoC,EAAE,MAAM,CACvD,cAAc,CAAC,eAAe,EAC9B,6BAA6B,CAM9B,CAAC"}
@@ -16,7 +16,10 @@ const specificationBuilder = (_builderOptions) => {
16
16
  return {
17
17
  permissionType: PermissionType.Endowment,
18
18
  targetName: permissionName,
19
- allowedCaveats: [SnapCaveatType.SignatureOrigin],
19
+ allowedCaveats: [
20
+ SnapCaveatType.SignatureOrigin,
21
+ SnapCaveatType.MaxRequestTime,
22
+ ],
20
23
  endowmentGetter: (_getterOptions) => null,
21
24
  validator: createGenericPermissionValidator([
22
25
  { type: SnapCaveatType.SignatureOrigin, optional: true },
@@ -80,13 +83,8 @@ export function getSignatureInsightCaveatMapper(value) {
80
83
  * signature origin caveat.
81
84
  */
82
85
  export function getSignatureOriginCaveat(permission) {
83
- if (!permission?.caveats) {
84
- return null;
85
- }
86
- assert(permission.caveats.length === 1);
87
- assert(permission.caveats[0].type === SnapCaveatType.SignatureOrigin);
88
- const caveat = permission.caveats[0];
89
- return caveat.value ?? null;
86
+ const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === SnapCaveatType.SignatureOrigin);
87
+ return caveat?.value ?? null;
90
88
  }
91
89
  export const signatureInsightCaveatSpecifications = {
92
90
  [SnapCaveatType.SignatureOrigin]: Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"signature-insight.mjs","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionConstraint,\n CaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SignatureInsight;\n\ntype SignatureInsightEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:signature-insight` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to show information on the signature confirmation screen.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the signature-insight endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SignatureInsightEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.SignatureOrigin],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.SignatureOrigin, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const signatureInsightEndowmentBuilder = 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 assert(\n typeof value === 'boolean',\n 'Expected caveat value to have type \"boolean\"',\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 * PermissionController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getSignatureInsightCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (\n !value ||\n !isObject(value) ||\n (isObject(value) && Object.keys(value).length === 0)\n ) {\n return { caveats: null };\n }\n return {\n caveats: [\n {\n type: SnapCaveatType.SignatureOrigin,\n value:\n hasProperty(value, 'allowSignatureOrigin') &&\n (value.allowSignatureOrigin as boolean),\n },\n ],\n };\n}\n\n/**\n * Getter function to get the signature origin 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 signature origin caveat from.\n * @returns The signature origin, or `null` if the permission does not have a\n * signature origin caveat.\n */\nexport function getSignatureOriginCaveat(\n permission?: PermissionConstraint,\n): boolean | null {\n if (!permission?.caveats) {\n return null;\n }\n\n assert(permission.caveats.length === 1);\n assert(permission.caveats[0].type === SnapCaveatType.SignatureOrigin);\n\n const caveat = permission.caveats[0] as Caveat<string, boolean>;\n\n return caveat.value ?? null;\n}\n\nexport const signatureInsightCaveatSpecifications: Record<\n SnapCaveatType.SignatureOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SignatureOrigin]: Object.freeze({\n type: SnapCaveatType.SignatureOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"]}
1
+ {"version":3,"file":"signature-insight.mjs","sourceRoot":"","sources":["../../src/endowments/signature-insight.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionConstraint,\n CaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.SignatureInsight;\n\ntype SignatureInsightEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:signature-insight` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to show information on the signature confirmation screen.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the signature-insight endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n SignatureInsightEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.SignatureOrigin,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.SignatureOrigin, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const signatureInsightEndowmentBuilder = 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 assert(\n typeof value === 'boolean',\n 'Expected caveat value to have type \"boolean\"',\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 * PermissionController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getSignatureInsightCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (\n !value ||\n !isObject(value) ||\n (isObject(value) && Object.keys(value).length === 0)\n ) {\n return { caveats: null };\n }\n return {\n caveats: [\n {\n type: SnapCaveatType.SignatureOrigin,\n value:\n hasProperty(value, 'allowSignatureOrigin') &&\n (value.allowSignatureOrigin as boolean),\n },\n ],\n };\n}\n\n/**\n * Getter function to get the signature origin 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 signature origin caveat from.\n * @returns The signature origin, or `null` if the permission does not have a\n * signature origin caveat.\n */\nexport function getSignatureOriginCaveat(\n permission?: PermissionConstraint,\n): boolean | null {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.SignatureOrigin,\n ) as Caveat<string, boolean> | undefined;\n\n return caveat?.value ?? null;\n}\n\nexport const signatureInsightCaveatSpecifications: Record<\n SnapCaveatType.SignatureOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SignatureOrigin]: Object.freeze({\n type: SnapCaveatType.SignatureOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"]}
@@ -87,13 +87,8 @@ exports.getTransactionInsightCaveatMapper = getTransactionInsightCaveatMapper;
87
87
  * transaction origin caveat.
88
88
  */
89
89
  function getTransactionOriginCaveat(permission) {
90
- if (!permission?.caveats) {
91
- return null;
92
- }
93
- (0, utils_1.assert)(permission.caveats.length === 1);
94
- (0, utils_1.assert)(permission.caveats[0].type === snaps_utils_1.SnapCaveatType.TransactionOrigin);
95
- const caveat = permission.caveats[0];
96
- return caveat.value ?? null;
90
+ const caveat = permission?.caveats?.find((permCaveat) => permCaveat.type === snaps_utils_1.SnapCaveatType.TransactionOrigin);
91
+ return caveat?.value ?? null;
97
92
  }
98
93
  exports.getTransactionOriginCaveat = getTransactionOriginCaveat;
99
94
  exports.transactionInsightCaveatSpecifications = {
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-insight.cjs","sourceRoot":"","sources":["../../src/endowments/transaction-insight.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionConstraint,\n CaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.TransactionInsight;\n\ntype TransactionInsightEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:transaction-insight` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to show information on the transaction confirmation screen.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the transaction-insight endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n TransactionInsightEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.TransactionOrigin,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.TransactionOrigin, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const transactionInsightEndowmentBuilder = 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 assert(\n typeof value === 'boolean',\n 'Expected caveat value to have type \"boolean\"',\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 getTransactionInsightCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (\n !value ||\n !isObject(value) ||\n (isObject(value) && Object.keys(value).length === 0)\n ) {\n return { caveats: null };\n }\n return {\n caveats: [\n {\n type: SnapCaveatType.TransactionOrigin,\n value:\n hasProperty(value, 'allowTransactionOrigin') &&\n (value.allowTransactionOrigin as boolean),\n },\n ],\n };\n}\n\n/**\n * Getter function to get the transaction origin 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 transaction origin caveat from.\n * @returns The transaction origin, or `null` if the permission does not have a\n * transaction origin caveat.\n */\nexport function getTransactionOriginCaveat(\n permission?: PermissionConstraint,\n): boolean | null {\n if (!permission?.caveats) {\n return null;\n }\n\n assert(permission.caveats.length === 1);\n assert(permission.caveats[0].type === SnapCaveatType.TransactionOrigin);\n\n const caveat = permission.caveats[0] as Caveat<string, boolean>;\n\n return caveat.value ?? null;\n}\n\nexport const transactionInsightCaveatSpecifications: Record<\n SnapCaveatType.TransactionOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.TransactionOrigin]: Object.freeze({\n type: SnapCaveatType.TransactionOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"]}
1
+ {"version":3,"file":"transaction-insight.cjs","sourceRoot":"","sources":["../../src/endowments/transaction-insight.ts"],"names":[],"mappings":";;;AASA,2EAA8E;AAC9E,qDAAiD;AACjD,uDAAuD;AAEvD,2CAA+E;AAE/E,iDAA6D;AAC7D,qCAAwC;AAExC,MAAM,cAAc,GAAG,qBAAc,CAAC,kBAAkB,CAAC;AAUzD;;;;;;GAMG;AACH,MAAM,oBAAoB,GAItB,CAAC,eAAyB,EAAE,EAAE;IAChC,OAAO;QACL,cAAc,EAAE,sCAAc,CAAC,SAAS;QACxC,UAAU,EAAE,cAAc;QAC1B,cAAc,EAAE;YACd,4BAAc,CAAC,iBAAiB;YAChC,4BAAc,CAAC,cAAc;SAC9B;QACD,eAAe,EAAE,CAAC,cAAsC,EAAE,EAAE,CAAC,IAAI;QACjE,SAAS,EAAE,IAAA,0CAAgC,EAAC;YAC1C,EAAE,IAAI,EAAE,4BAAc,CAAC,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC1D,EAAE,IAAI,EAAE,4BAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,YAAY,EAAE,CAAC,mCAAW,CAAC,IAAI,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,kCAAkC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9D,UAAU,EAAE,cAAc;IAC1B,oBAAoB;CACZ,CAAC,CAAC;AAEZ;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAA2B;IACjD,IAAI,CAAC,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAA,cAAM,EACJ,OAAO,KAAK,KAAK,SAAS,EAC1B,8CAA8C,CAC/C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iCAAiC,CAC/C,KAAW;IAEX,IACE,CAAC,KAAK;QACN,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC;QAChB,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EACpD,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,4BAAc,CAAC,iBAAiB;gBACtC,KAAK,EACH,IAAA,mBAAW,EAAC,KAAK,EAAE,wBAAwB,CAAC;oBAC3C,KAAK,CAAC,sBAAkC;aAC5C;SACF;KACF,CAAC;AACJ,CAAC;AApBD,8EAoBC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,0BAA0B,CACxC,UAAiC;IAEjC,MAAM,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,CACtC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,4BAAc,CAAC,iBAAiB,CAC9B,CAAC;IAEzC,OAAO,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;AAC/B,CAAC;AARD,gEAQC;AAEY,QAAA,sCAAsC,GAG/C;IACF,CAAC,4BAAc,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAChD,IAAI,EAAE,4BAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;KACnE,CAAC;CACH,CAAC","sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionConstraint,\n CaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isObject, isPlainObject } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.TransactionInsight;\n\ntype TransactionInsightEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => null;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * `endowment:transaction-insight` returns nothing; it is intended to be used as a flag\n * by the extension to detect whether the snap has the capability to show information on the transaction confirmation screen.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the transaction-insight endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n TransactionInsightEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [\n SnapCaveatType.TransactionOrigin,\n SnapCaveatType.MaxRequestTime,\n ],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.TransactionOrigin, optional: true },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const transactionInsightEndowmentBuilder = 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 assert(\n typeof value === 'boolean',\n 'Expected caveat value to have type \"boolean\"',\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 getTransactionInsightCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n if (\n !value ||\n !isObject(value) ||\n (isObject(value) && Object.keys(value).length === 0)\n ) {\n return { caveats: null };\n }\n return {\n caveats: [\n {\n type: SnapCaveatType.TransactionOrigin,\n value:\n hasProperty(value, 'allowTransactionOrigin') &&\n (value.allowTransactionOrigin as boolean),\n },\n ],\n };\n}\n\n/**\n * Getter function to get the transaction origin 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 transaction origin caveat from.\n * @returns The transaction origin, or `null` if the permission does not have a\n * transaction origin caveat.\n */\nexport function getTransactionOriginCaveat(\n permission?: PermissionConstraint,\n): boolean | null {\n const caveat = permission?.caveats?.find(\n (permCaveat) => permCaveat.type === SnapCaveatType.TransactionOrigin,\n ) as Caveat<string, boolean> | undefined;\n\n return caveat?.value ?? null;\n}\n\nexport const transactionInsightCaveatSpecifications: Record<\n SnapCaveatType.TransactionOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.TransactionOrigin]: Object.freeze({\n type: SnapCaveatType.TransactionOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveat(caveat),\n }),\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-insight.d.cts","sourceRoot":"","sources":["../../src/endowments/transaction-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,oCAAoC,CAAC;AAsCzD,eAAO,MAAM,kCAAkC;;;wBAnC7B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EAkC/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAWhB;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CACzD,cAAc,CAAC,iBAAiB,EAChC,6BAA6B,CAM9B,CAAC"}
1
+ {"version":3,"file":"transaction-insight.d.cts","sourceRoot":"","sources":["../../src/endowments/transaction-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,oCAAoC,CAAC;AAsCzD,eAAO,MAAM,kCAAkC;;;wBAnC7B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EAkC/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAMhB;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CACzD,cAAc,CAAC,iBAAiB,EAChC,6BAA6B,CAM9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-insight.d.mts","sourceRoot":"","sources":["../../src/endowments/transaction-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,oCAAoC,CAAC;AAsCzD,eAAO,MAAM,kCAAkC;;;wBAnC7B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EAkC/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAWhB;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CACzD,cAAc,CAAC,iBAAiB,EAChC,6BAA6B,CAM9B,CAAC"}
1
+ {"version":3,"file":"transaction-insight.d.mts","sourceRoot":"","sources":["../../src/endowments/transaction-insight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EAErB,6BAA6B,EAC7B,oBAAoB,EACpB,6BAA6B,EAE9B,wCAAwC;AACzC,OAAO,EAAE,cAAc,EAAe,wCAAwC;AAE9E,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAI3D,OAAO,EAAE,cAAc,EAAE,mBAAe;AAExC,QAAA,MAAM,cAAc,oCAAoC,CAAC;AAsCzD,eAAO,MAAM,kCAAkC;;;wBAnC7B,eAAe,SAAS;oBAC5B,qBAAqB;qCACJ,qBAAqB,KAAK,IAAI;wBAC3C,SAAS,cAAc,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC3C,6BAA6B;;EAkC/B,CAAC;AAuBZ;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,IAAI,GACV,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,CAAC,EAAE,oBAAoB,GAChC,OAAO,GAAG,IAAI,CAMhB;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CACzD,cAAc,CAAC,iBAAiB,EAChC,6BAA6B,CAM9B,CAAC"}