@metamask/snaps-rpc-methods 14.3.0 → 15.0.1
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.
- package/CHANGELOG.md +24 -1
- package/dist/permitted/cancelBackgroundEvent.cjs +20 -0
- package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.d.cts +43 -3
- package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.d.mts +43 -3
- package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.mjs +20 -0
- package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
- package/dist/permitted/clearState.cjs +13 -2
- package/dist/permitted/clearState.cjs.map +1 -1
- package/dist/permitted/clearState.d.cts +35 -3
- package/dist/permitted/clearState.d.cts.map +1 -1
- package/dist/permitted/clearState.d.mts +35 -3
- package/dist/permitted/clearState.d.mts.map +1 -1
- package/dist/permitted/clearState.mjs +13 -2
- package/dist/permitted/clearState.mjs.map +1 -1
- package/dist/permitted/closeWebSocket.cjs +19 -2
- package/dist/permitted/closeWebSocket.cjs.map +1 -1
- package/dist/permitted/closeWebSocket.d.cts +39 -4
- package/dist/permitted/closeWebSocket.d.cts.map +1 -1
- package/dist/permitted/closeWebSocket.d.mts +39 -4
- package/dist/permitted/closeWebSocket.d.mts.map +1 -1
- package/dist/permitted/closeWebSocket.mjs +19 -2
- package/dist/permitted/closeWebSocket.mjs.map +1 -1
- package/dist/permitted/createInterface.cjs +33 -2
- package/dist/permitted/createInterface.cjs.map +1 -1
- package/dist/permitted/createInterface.d.cts +68 -17
- package/dist/permitted/createInterface.d.cts.map +1 -1
- package/dist/permitted/createInterface.d.mts +68 -17
- package/dist/permitted/createInterface.d.mts.map +1 -1
- package/dist/permitted/createInterface.mjs +34 -3
- package/dist/permitted/createInterface.mjs.map +1 -1
- package/dist/permitted/endTrace.cjs +6 -2
- package/dist/permitted/endTrace.cjs.map +1 -1
- package/dist/permitted/endTrace.d.cts +28 -4
- package/dist/permitted/endTrace.d.cts.map +1 -1
- package/dist/permitted/endTrace.d.mts +28 -4
- package/dist/permitted/endTrace.d.mts.map +1 -1
- package/dist/permitted/endTrace.mjs +6 -2
- package/dist/permitted/endTrace.mjs.map +1 -1
- package/dist/permitted/getAllSnaps.cjs +4 -1
- package/dist/permitted/getAllSnaps.cjs.map +1 -1
- package/dist/permitted/getAllSnaps.d.cts +25 -3
- package/dist/permitted/getAllSnaps.d.cts.map +1 -1
- package/dist/permitted/getAllSnaps.d.mts +25 -3
- package/dist/permitted/getAllSnaps.d.mts.map +1 -1
- package/dist/permitted/getAllSnaps.mjs +4 -1
- package/dist/permitted/getAllSnaps.mjs.map +1 -1
- package/dist/permitted/getBackgroundEvents.cjs +24 -0
- package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
- package/dist/permitted/getBackgroundEvents.d.cts +48 -3
- package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
- package/dist/permitted/getBackgroundEvents.d.mts +48 -3
- package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
- package/dist/permitted/getBackgroundEvents.mjs +24 -0
- package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
- package/dist/permitted/getClientStatus.cjs +27 -2
- package/dist/permitted/getClientStatus.cjs.map +1 -1
- package/dist/permitted/getClientStatus.d.cts +50 -4
- package/dist/permitted/getClientStatus.d.cts.map +1 -1
- package/dist/permitted/getClientStatus.d.mts +50 -4
- package/dist/permitted/getClientStatus.d.mts.map +1 -1
- package/dist/permitted/getClientStatus.mjs +27 -2
- package/dist/permitted/getClientStatus.mjs.map +1 -1
- package/dist/permitted/getFile.cjs +28 -1
- package/dist/permitted/getFile.cjs.map +1 -1
- package/dist/permitted/getFile.d.cts +49 -3
- package/dist/permitted/getFile.d.cts.map +1 -1
- package/dist/permitted/getFile.d.mts +49 -3
- package/dist/permitted/getFile.d.mts.map +1 -1
- package/dist/permitted/getFile.mjs +28 -1
- package/dist/permitted/getFile.mjs.map +1 -1
- package/dist/permitted/getInterfaceContext.cjs +49 -3
- package/dist/permitted/getInterfaceContext.cjs.map +1 -1
- package/dist/permitted/getInterfaceContext.d.cts +65 -3
- package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
- package/dist/permitted/getInterfaceContext.d.mts +65 -3
- package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
- package/dist/permitted/getInterfaceContext.mjs +50 -4
- package/dist/permitted/getInterfaceContext.mjs.map +1 -1
- package/dist/permitted/getInterfaceState.cjs +27 -3
- package/dist/permitted/getInterfaceState.cjs.map +1 -1
- package/dist/permitted/getInterfaceState.d.cts +43 -3
- package/dist/permitted/getInterfaceState.d.cts.map +1 -1
- package/dist/permitted/getInterfaceState.d.mts +43 -3
- package/dist/permitted/getInterfaceState.d.mts.map +1 -1
- package/dist/permitted/getInterfaceState.mjs +28 -4
- package/dist/permitted/getInterfaceState.mjs.map +1 -1
- package/dist/permitted/getSnaps.cjs +21 -2
- package/dist/permitted/getSnaps.cjs.map +1 -1
- package/dist/permitted/getSnaps.d.cts +42 -4
- package/dist/permitted/getSnaps.d.cts.map +1 -1
- package/dist/permitted/getSnaps.d.mts +42 -4
- package/dist/permitted/getSnaps.d.mts.map +1 -1
- package/dist/permitted/getSnaps.mjs +21 -2
- package/dist/permitted/getSnaps.mjs.map +1 -1
- package/dist/permitted/getState.cjs +24 -2
- package/dist/permitted/getState.cjs.map +1 -1
- package/dist/permitted/getState.d.cts +46 -4
- package/dist/permitted/getState.d.cts.map +1 -1
- package/dist/permitted/getState.d.mts +46 -4
- package/dist/permitted/getState.d.mts.map +1 -1
- package/dist/permitted/getState.mjs +24 -2
- package/dist/permitted/getState.mjs.map +1 -1
- package/dist/permitted/getWebSockets.cjs +29 -2
- package/dist/permitted/getWebSockets.cjs.map +1 -1
- package/dist/permitted/getWebSockets.d.cts +50 -4
- package/dist/permitted/getWebSockets.d.cts.map +1 -1
- package/dist/permitted/getWebSockets.d.mts +50 -4
- package/dist/permitted/getWebSockets.d.mts.map +1 -1
- package/dist/permitted/getWebSockets.mjs +29 -2
- package/dist/permitted/getWebSockets.mjs.map +1 -1
- package/dist/permitted/handlers.cjs +0 -4
- package/dist/permitted/handlers.cjs.map +1 -1
- package/dist/permitted/handlers.d.cts +274 -56
- package/dist/permitted/handlers.d.cts.map +1 -1
- package/dist/permitted/handlers.d.mts +274 -56
- package/dist/permitted/handlers.d.mts.map +1 -1
- package/dist/permitted/handlers.mjs +0 -4
- package/dist/permitted/handlers.mjs.map +1 -1
- package/dist/permitted/index.cjs.map +1 -1
- package/dist/permitted/index.d.cts +1 -3
- package/dist/permitted/index.d.cts.map +1 -1
- package/dist/permitted/index.d.mts +1 -3
- package/dist/permitted/index.d.mts.map +1 -1
- package/dist/permitted/index.mjs.map +1 -1
- package/dist/permitted/invokeKeyring.cjs +8 -2
- package/dist/permitted/invokeKeyring.cjs.map +1 -1
- package/dist/permitted/invokeKeyring.d.cts +34 -4
- package/dist/permitted/invokeKeyring.d.cts.map +1 -1
- package/dist/permitted/invokeKeyring.d.mts +34 -4
- package/dist/permitted/invokeKeyring.d.mts.map +1 -1
- package/dist/permitted/invokeKeyring.mjs +8 -2
- package/dist/permitted/invokeKeyring.mjs.map +1 -1
- package/dist/permitted/invokeSnapSugar.cjs +25 -2
- package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
- package/dist/permitted/invokeSnapSugar.d.cts +30 -3
- package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
- package/dist/permitted/invokeSnapSugar.d.mts +30 -3
- package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
- package/dist/permitted/invokeSnapSugar.mjs +25 -2
- package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
- package/dist/permitted/listEntropySources.cjs +40 -1
- package/dist/permitted/listEntropySources.cjs.map +1 -1
- package/dist/permitted/listEntropySources.d.cts +64 -3
- package/dist/permitted/listEntropySources.d.cts.map +1 -1
- package/dist/permitted/listEntropySources.d.mts +64 -3
- package/dist/permitted/listEntropySources.d.mts.map +1 -1
- package/dist/permitted/listEntropySources.mjs +40 -1
- package/dist/permitted/listEntropySources.mjs.map +1 -1
- package/dist/permitted/openWebSocket.cjs +46 -2
- package/dist/permitted/openWebSocket.cjs.map +1 -1
- package/dist/permitted/openWebSocket.d.cts +66 -4
- package/dist/permitted/openWebSocket.d.cts.map +1 -1
- package/dist/permitted/openWebSocket.d.mts +66 -4
- package/dist/permitted/openWebSocket.d.mts.map +1 -1
- package/dist/permitted/openWebSocket.mjs +46 -2
- package/dist/permitted/openWebSocket.mjs.map +1 -1
- package/dist/permitted/requestSnaps.cjs +25 -2
- package/dist/permitted/requestSnaps.cjs.map +1 -1
- package/dist/permitted/requestSnaps.d.cts +51 -3
- package/dist/permitted/requestSnaps.d.cts.map +1 -1
- package/dist/permitted/requestSnaps.d.mts +51 -3
- package/dist/permitted/requestSnaps.d.mts.map +1 -1
- package/dist/permitted/requestSnaps.mjs +25 -2
- package/dist/permitted/requestSnaps.mjs.map +1 -1
- package/dist/permitted/resolveInterface.cjs +38 -2
- package/dist/permitted/resolveInterface.cjs.map +1 -1
- package/dist/permitted/resolveInterface.d.cts +55 -4
- package/dist/permitted/resolveInterface.d.cts.map +1 -1
- package/dist/permitted/resolveInterface.d.mts +55 -4
- package/dist/permitted/resolveInterface.d.mts.map +1 -1
- package/dist/permitted/resolveInterface.mjs +39 -3
- package/dist/permitted/resolveInterface.mjs.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.cjs +26 -0
- package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.d.cts +49 -3
- package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.d.mts +49 -3
- package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.mjs +26 -0
- package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
- package/dist/permitted/sendWebSocketMessage.cjs +24 -2
- package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
- package/dist/permitted/sendWebSocketMessage.d.cts +44 -4
- package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
- package/dist/permitted/sendWebSocketMessage.d.mts +44 -4
- package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
- package/dist/permitted/sendWebSocketMessage.mjs +24 -2
- package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
- package/dist/permitted/setState.cjs +48 -2
- package/dist/permitted/setState.cjs.map +1 -1
- package/dist/permitted/setState.d.cts +72 -4
- package/dist/permitted/setState.d.cts.map +1 -1
- package/dist/permitted/setState.d.mts +72 -4
- package/dist/permitted/setState.d.mts.map +1 -1
- package/dist/permitted/setState.mjs +48 -2
- package/dist/permitted/setState.mjs.map +1 -1
- package/dist/permitted/startTrace.cjs +4 -1
- package/dist/permitted/startTrace.cjs.map +1 -1
- package/dist/permitted/startTrace.d.cts +26 -3
- package/dist/permitted/startTrace.d.cts.map +1 -1
- package/dist/permitted/startTrace.d.mts +26 -3
- package/dist/permitted/startTrace.d.mts.map +1 -1
- package/dist/permitted/startTrace.mjs +4 -1
- package/dist/permitted/startTrace.mjs.map +1 -1
- package/dist/permitted/trackError.cjs +4 -1
- package/dist/permitted/trackError.cjs.map +1 -1
- package/dist/permitted/trackError.d.cts +26 -3
- package/dist/permitted/trackError.d.cts.map +1 -1
- package/dist/permitted/trackError.d.mts +26 -3
- package/dist/permitted/trackError.d.mts.map +1 -1
- package/dist/permitted/trackError.mjs +4 -1
- package/dist/permitted/trackError.mjs.map +1 -1
- package/dist/permitted/trackEvent.cjs +4 -1
- package/dist/permitted/trackEvent.cjs.map +1 -1
- package/dist/permitted/trackEvent.d.cts +25 -4
- package/dist/permitted/trackEvent.d.cts.map +1 -1
- package/dist/permitted/trackEvent.d.mts +25 -4
- package/dist/permitted/trackEvent.d.mts.map +1 -1
- package/dist/permitted/trackEvent.mjs +4 -1
- package/dist/permitted/trackEvent.mjs.map +1 -1
- package/dist/permitted/updateInterface.cjs +47 -2
- package/dist/permitted/updateInterface.cjs.map +1 -1
- package/dist/permitted/updateInterface.d.cts +64 -3
- package/dist/permitted/updateInterface.d.cts.map +1 -1
- package/dist/permitted/updateInterface.d.mts +64 -3
- package/dist/permitted/updateInterface.d.mts.map +1 -1
- package/dist/permitted/updateInterface.mjs +48 -3
- package/dist/permitted/updateInterface.mjs.map +1 -1
- package/dist/restricted/caveats/snapIds.cjs.map +1 -1
- package/dist/restricted/caveats/snapIds.d.cts.map +1 -1
- package/dist/restricted/caveats/snapIds.d.mts.map +1 -1
- package/dist/restricted/caveats/snapIds.mjs.map +1 -1
- package/dist/restricted/dialog.cjs +49 -1
- package/dist/restricted/dialog.cjs.map +1 -1
- package/dist/restricted/dialog.d.cts +52 -2
- package/dist/restricted/dialog.d.cts.map +1 -1
- package/dist/restricted/dialog.d.mts +52 -2
- package/dist/restricted/dialog.d.mts.map +1 -1
- package/dist/restricted/dialog.mjs +49 -1
- package/dist/restricted/dialog.mjs.map +1 -1
- package/dist/restricted/getBip32Entropy.cjs +55 -0
- package/dist/restricted/getBip32Entropy.cjs.map +1 -1
- package/dist/restricted/getBip32Entropy.d.cts +55 -0
- package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
- package/dist/restricted/getBip32Entropy.d.mts +55 -0
- package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
- package/dist/restricted/getBip32Entropy.mjs +55 -0
- package/dist/restricted/getBip32Entropy.mjs.map +1 -1
- package/dist/restricted/getBip32PublicKey.cjs +36 -0
- package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
- package/dist/restricted/getBip32PublicKey.d.cts +36 -0
- package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
- package/dist/restricted/getBip32PublicKey.d.mts +36 -0
- package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
- package/dist/restricted/getBip32PublicKey.mjs +36 -0
- package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
- package/dist/restricted/getBip44Entropy.cjs +53 -0
- package/dist/restricted/getBip44Entropy.cjs.map +1 -1
- package/dist/restricted/getBip44Entropy.d.cts +53 -0
- package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
- package/dist/restricted/getBip44Entropy.d.mts +53 -0
- package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
- package/dist/restricted/getBip44Entropy.mjs +53 -0
- package/dist/restricted/getBip44Entropy.mjs.map +1 -1
- package/dist/restricted/getEntropy.cjs +35 -0
- package/dist/restricted/getEntropy.cjs.map +1 -1
- package/dist/restricted/getEntropy.d.cts +35 -0
- package/dist/restricted/getEntropy.d.cts.map +1 -1
- package/dist/restricted/getEntropy.d.mts +35 -0
- package/dist/restricted/getEntropy.d.mts.map +1 -1
- package/dist/restricted/getEntropy.mjs +35 -0
- package/dist/restricted/getEntropy.mjs.map +1 -1
- package/dist/restricted/getLocale.cjs +11 -0
- package/dist/restricted/getLocale.cjs.map +1 -1
- package/dist/restricted/getLocale.d.cts +11 -0
- package/dist/restricted/getLocale.d.cts.map +1 -1
- package/dist/restricted/getLocale.d.mts +11 -0
- package/dist/restricted/getLocale.d.mts.map +1 -1
- package/dist/restricted/getLocale.mjs +11 -0
- package/dist/restricted/getLocale.mjs.map +1 -1
- package/dist/restricted/getPreferences.cjs +24 -0
- package/dist/restricted/getPreferences.cjs.map +1 -1
- package/dist/restricted/getPreferences.d.cts +24 -0
- package/dist/restricted/getPreferences.d.cts.map +1 -1
- package/dist/restricted/getPreferences.d.mts +24 -0
- package/dist/restricted/getPreferences.d.mts.map +1 -1
- package/dist/restricted/getPreferences.mjs +24 -0
- package/dist/restricted/getPreferences.mjs.map +1 -1
- package/dist/restricted/index.d.cts +2 -2
- package/dist/restricted/index.d.mts +2 -2
- package/dist/restricted/invokeSnap.cjs +24 -2
- package/dist/restricted/invokeSnap.cjs.map +1 -1
- package/dist/restricted/invokeSnap.d.cts +29 -11
- package/dist/restricted/invokeSnap.d.cts.map +1 -1
- package/dist/restricted/invokeSnap.d.mts +29 -11
- package/dist/restricted/invokeSnap.d.mts.map +1 -1
- package/dist/restricted/invokeSnap.mjs +24 -2
- package/dist/restricted/invokeSnap.mjs.map +1 -1
- package/dist/restricted/manageAccounts.cjs +10 -0
- package/dist/restricted/manageAccounts.cjs.map +1 -1
- package/dist/restricted/manageAccounts.d.cts +10 -0
- package/dist/restricted/manageAccounts.d.cts.map +1 -1
- package/dist/restricted/manageAccounts.d.mts +10 -0
- package/dist/restricted/manageAccounts.d.mts.map +1 -1
- package/dist/restricted/manageAccounts.mjs +10 -0
- package/dist/restricted/manageAccounts.mjs.map +1 -1
- package/dist/restricted/manageState.cjs +42 -0
- package/dist/restricted/manageState.cjs.map +1 -1
- package/dist/restricted/manageState.d.cts +42 -0
- package/dist/restricted/manageState.d.cts.map +1 -1
- package/dist/restricted/manageState.d.mts +42 -0
- package/dist/restricted/manageState.d.mts.map +1 -1
- package/dist/restricted/manageState.mjs +42 -0
- package/dist/restricted/manageState.mjs.map +1 -1
- package/dist/restricted/notify.cjs +74 -0
- package/dist/restricted/notify.cjs.map +1 -1
- package/dist/restricted/notify.d.cts +75 -1
- package/dist/restricted/notify.d.cts.map +1 -1
- package/dist/restricted/notify.d.mts +75 -1
- package/dist/restricted/notify.d.mts.map +1 -1
- package/dist/restricted/notify.mjs +74 -0
- package/dist/restricted/notify.mjs.map +1 -1
- package/dist/utils.cjs +14 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +6 -0
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +6 -0
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +13 -0
- package/dist/utils.mjs.map +1 -1
- package/package.json +12 -8
- package/dist/permitted/experimentalProviderRequest.cjs +0 -152
- package/dist/permitted/experimentalProviderRequest.cjs.map +0 -1
- package/dist/permitted/experimentalProviderRequest.d.cts +0 -39
- package/dist/permitted/experimentalProviderRequest.d.cts.map +0 -1
- package/dist/permitted/experimentalProviderRequest.d.mts +0 -39
- package/dist/permitted/experimentalProviderRequest.d.mts.map +0 -1
- package/dist/permitted/experimentalProviderRequest.mjs +0 -149
- package/dist/permitted/experimentalProviderRequest.mjs.map +0 -1
- package/dist/permitted/getCurrencyRate.cjs +0 -63
- package/dist/permitted/getCurrencyRate.cjs.map +0 -1
- package/dist/permitted/getCurrencyRate.d.cts +0 -20
- package/dist/permitted/getCurrencyRate.d.cts.map +0 -1
- package/dist/permitted/getCurrencyRate.d.mts +0 -20
- package/dist/permitted/getCurrencyRate.d.mts.map +0 -1
- package/dist/permitted/getCurrencyRate.mjs +0 -60
- package/dist/permitted/getCurrencyRate.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeKeyring.cjs","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAOjD,uDAAgF;AAMhF,2CAA8C;AAE9C,2DAAuD;AAGvD,MAAM,SAAS,GAA0C;IACvD,aAAa,EAAE,IAAI;IACnB,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,IAAI;IACb,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"invokeKeyring.cjs","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAOjD,uDAAgF;AAMhF,2CAA8C;AAE9C,2DAAuD;AAGvD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,SAAS,GAA0C;IACvD,aAAa,EAAE,IAAI;IACnB,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,IAAI;IACb,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG;IAClC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAgBF;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,2BAA2B,CACxC,GAAwC;AACxC,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,+BAA+B;AAC/B,4EAA4E;AAC5E,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,EACE,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,wBAAwB,GACL;IAErB,IAAI,MAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,oCAAkB,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,yEAAyE;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,GAA0C,CAAC;IAC9D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEnC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,wCAA0B,CAAC,EAAE,CAAC;QAC1D,OAAO,GAAG,CACR,sBAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,aAAa,MAAM,0BAA0B,MAAM,6CAA6C;SAC1G,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG;QACR,4CAA4C;QAC5C,sBAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,aAAa,MAAM,2DAA2D;SACxF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAA,mBAAW,EAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,GAAG,CACR,sBAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,iCAAiC;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAClD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CACR,sBAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,eAAe,MAAM,0CAA0C,OAAO,CAAC,MAAM,IAAI;SAC3F,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,oBAAoB,CAAC;YACvC,MAAM;YACN,OAAO;YACP,OAAO,EAAE,yBAAW,CAAC,gBAAgB;SACtC,CAAC,CAAS,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n InvokeKeyringParams,\n InvokeKeyringResult,\n InvokeSnapParams,\n} from '@metamask/snaps-sdk';\nimport type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils';\nimport { HandlerType, WALLET_SNAP_PERMISSION_KEY } from '@metamask/snaps-utils';\nimport type {\n PendingJsonRpcResponse,\n Json,\n JsonRpcRequest,\n} from '@metamask/utils';\nimport { hasProperty } from '@metamask/utils';\n\nimport { getValidatedParams } from './invokeSnapSugar';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'wallet_invokeKeyring';\n\nconst hookNames: MethodHooksObject<InvokeKeyringHooks> = {\n hasPermission: true,\n handleSnapRpcRequest: true,\n getSnap: true,\n getAllowedKeyringMethods: true,\n};\n\n/**\n * Invoke a keyring method of a Snap. This calls the `onKeyringRequest` handler\n * of the Snap.\n *\n * The Snap must be installed and the dapp must have permission to communicate\n * with the Snap, or the request is rejected. The dapp can install the Snap and\n * request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).\n */\nexport const invokeKeyringHandler = {\n methodNames: [methodName] as const,\n implementation: invokeKeyringImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n InvokeKeyringHooks,\n InvokeSnapParams,\n InvokeKeyringResult\n>;\n\nexport type InvokeKeyringHooks = {\n hasPermission: (permissionName: string) => boolean;\n\n handleSnapRpcRequest: ({\n snapId,\n handler,\n request,\n }: Omit<SnapRpcHookArgs, 'origin'> & { snapId: string }) => Promise<unknown>;\n\n getSnap: (snapId: string) => Snap | undefined;\n\n getAllowedKeyringMethods: () => string[];\n};\n\n/**\n * The `wallet_invokeKeyring` method implementation.\n * Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.handleSnapRpcRequest - Invokes a snap with a given RPC request.\n * @param hooks.hasPermission - Checks whether a given origin has a given permission.\n * @param hooks.getSnap - Gets information about a given snap.\n * @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring\n * methods for a given origin.\n * @returns Nothing.\n */\nasync function invokeKeyringImplementation(\n req: JsonRpcRequest<InvokeKeyringParams>,\n // `InvokeKeyringResult` is an alias for `Json` (which is the default type\n // argument for `PendingJsonRpcResponse`), but that may not be the case in the\n // future. We use `InvokeKeyringResult` here to make it clear that this is the\n // expected type of the result.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments\n res: PendingJsonRpcResponse<InvokeKeyringResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n {\n handleSnapRpcRequest,\n hasPermission,\n getSnap,\n getAllowedKeyringMethods,\n }: InvokeKeyringHooks,\n): Promise<void> {\n let params: InvokeSnapParams;\n try {\n params = getValidatedParams(req.params);\n } catch (error) {\n return end(error);\n }\n\n // We expect the MM middleware stack to always add the origin to requests\n const { origin } = req as JsonRpcRequest & { origin: string };\n const { snapId, request } = params;\n\n if (!origin || !hasPermission(WALLET_SNAP_PERMISSION_KEY)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not connected to \"${origin}\". Please connect before invoking the snap.`,\n }),\n );\n }\n\n if (!getSnap(snapId)) {\n return end(\n // Mirror error message from SnapController.\n rpcErrors.invalidRequest({\n message: `The Snap \"${snapId}\" is not installed. Please install it before invoking it.`,\n }),\n );\n }\n\n if (!hasProperty(request, 'method') || typeof request.method !== 'string') {\n return end(\n rpcErrors.invalidRequest({\n message: 'The request must have a method.',\n }),\n );\n }\n\n const allowedMethods = getAllowedKeyringMethods();\n if (!allowedMethods.includes(request.method)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The origin \"${origin}\" is not allowed to invoke the method \"${request.method}\".`,\n }),\n );\n }\n\n try {\n res.result = (await handleSnapRpcRequest({\n snapId,\n request,\n handler: HandlerType.OnKeyringRequest,\n })) as Json;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { InvokeKeyringParams, InvokeKeyringResult } from "@metamask/snaps-sdk";
|
|
3
3
|
import type { Snap, SnapRpcHookArgs } from "@metamask/snaps-utils";
|
|
4
|
+
import type { PendingJsonRpcResponse, JsonRpcRequest } from "@metamask/utils";
|
|
5
|
+
import type { MethodHooksObject } from "../utils.cjs";
|
|
4
6
|
/**
|
|
5
|
-
*
|
|
7
|
+
* Invoke a keyring method of a Snap. This calls the `onKeyringRequest` handler
|
|
8
|
+
* of the Snap.
|
|
9
|
+
*
|
|
10
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
11
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
12
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
6
13
|
*/
|
|
7
|
-
export declare const invokeKeyringHandler:
|
|
14
|
+
export declare const invokeKeyringHandler: {
|
|
15
|
+
methodNames: ["wallet_invokeKeyring"];
|
|
16
|
+
implementation: typeof invokeKeyringImplementation;
|
|
17
|
+
hookNames: MethodHooksObject<InvokeKeyringHooks>;
|
|
18
|
+
};
|
|
8
19
|
export type InvokeKeyringHooks = {
|
|
9
20
|
hasPermission: (permissionName: string) => boolean;
|
|
10
21
|
handleSnapRpcRequest: ({ snapId, handler, request, }: Omit<SnapRpcHookArgs, 'origin'> & {
|
|
@@ -13,4 +24,23 @@ export type InvokeKeyringHooks = {
|
|
|
13
24
|
getSnap: (snapId: string) => Snap | undefined;
|
|
14
25
|
getAllowedKeyringMethods: () => string[];
|
|
15
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* The `wallet_invokeKeyring` method implementation.
|
|
29
|
+
* Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.
|
|
30
|
+
*
|
|
31
|
+
* @param req - The JSON-RPC request object.
|
|
32
|
+
* @param res - The JSON-RPC response object.
|
|
33
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
34
|
+
* function.
|
|
35
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
36
|
+
* @param hooks - The RPC method hooks.
|
|
37
|
+
* @param hooks.handleSnapRpcRequest - Invokes a snap with a given RPC request.
|
|
38
|
+
* @param hooks.hasPermission - Checks whether a given origin has a given permission.
|
|
39
|
+
* @param hooks.getSnap - Gets information about a given snap.
|
|
40
|
+
* @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring
|
|
41
|
+
* methods for a given origin.
|
|
42
|
+
* @returns Nothing.
|
|
43
|
+
*/
|
|
44
|
+
declare function invokeKeyringImplementation(req: JsonRpcRequest<InvokeKeyringParams>, res: PendingJsonRpcResponse<InvokeKeyringResult>, _next: unknown, end: JsonRpcEngineEndCallback, { handleSnapRpcRequest, hasPermission, getSnap, getAllowedKeyringMethods, }: InvokeKeyringHooks): Promise<void>;
|
|
45
|
+
export {};
|
|
16
46
|
//# sourceMappingURL=invokeKeyring.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeKeyring.d.cts","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invokeKeyring.d.cts","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EAEpB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,8BAA8B;AAEnE,OAAO,KAAK,EACV,sBAAsB,EAEtB,cAAc,EACf,wBAAwB;AAIzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAWlD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;;;;CAQhC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD,oBAAoB,EAAE,CAAC,EACrB,MAAM,EACN,OAAO,EACP,OAAO,GACR,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7E,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAE9C,wBAAwB,EAAE,MAAM,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAe,2BAA2B,CACxC,GAAG,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAMxC,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EACE,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,wBAAwB,GACzB,EAAE,kBAAkB,GACpB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { InvokeKeyringParams, InvokeKeyringResult } from "@metamask/snaps-sdk";
|
|
3
3
|
import type { Snap, SnapRpcHookArgs } from "@metamask/snaps-utils";
|
|
4
|
+
import type { PendingJsonRpcResponse, JsonRpcRequest } from "@metamask/utils";
|
|
5
|
+
import type { MethodHooksObject } from "../utils.mjs";
|
|
4
6
|
/**
|
|
5
|
-
*
|
|
7
|
+
* Invoke a keyring method of a Snap. This calls the `onKeyringRequest` handler
|
|
8
|
+
* of the Snap.
|
|
9
|
+
*
|
|
10
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
11
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
12
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
6
13
|
*/
|
|
7
|
-
export declare const invokeKeyringHandler:
|
|
14
|
+
export declare const invokeKeyringHandler: {
|
|
15
|
+
methodNames: ["wallet_invokeKeyring"];
|
|
16
|
+
implementation: typeof invokeKeyringImplementation;
|
|
17
|
+
hookNames: MethodHooksObject<InvokeKeyringHooks>;
|
|
18
|
+
};
|
|
8
19
|
export type InvokeKeyringHooks = {
|
|
9
20
|
hasPermission: (permissionName: string) => boolean;
|
|
10
21
|
handleSnapRpcRequest: ({ snapId, handler, request, }: Omit<SnapRpcHookArgs, 'origin'> & {
|
|
@@ -13,4 +24,23 @@ export type InvokeKeyringHooks = {
|
|
|
13
24
|
getSnap: (snapId: string) => Snap | undefined;
|
|
14
25
|
getAllowedKeyringMethods: () => string[];
|
|
15
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* The `wallet_invokeKeyring` method implementation.
|
|
29
|
+
* Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.
|
|
30
|
+
*
|
|
31
|
+
* @param req - The JSON-RPC request object.
|
|
32
|
+
* @param res - The JSON-RPC response object.
|
|
33
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
34
|
+
* function.
|
|
35
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
36
|
+
* @param hooks - The RPC method hooks.
|
|
37
|
+
* @param hooks.handleSnapRpcRequest - Invokes a snap with a given RPC request.
|
|
38
|
+
* @param hooks.hasPermission - Checks whether a given origin has a given permission.
|
|
39
|
+
* @param hooks.getSnap - Gets information about a given snap.
|
|
40
|
+
* @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring
|
|
41
|
+
* methods for a given origin.
|
|
42
|
+
* @returns Nothing.
|
|
43
|
+
*/
|
|
44
|
+
declare function invokeKeyringImplementation(req: JsonRpcRequest<InvokeKeyringParams>, res: PendingJsonRpcResponse<InvokeKeyringResult>, _next: unknown, end: JsonRpcEngineEndCallback, { handleSnapRpcRequest, hasPermission, getSnap, getAllowedKeyringMethods, }: InvokeKeyringHooks): Promise<void>;
|
|
45
|
+
export {};
|
|
16
46
|
//# sourceMappingURL=invokeKeyring.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeKeyring.d.mts","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invokeKeyring.d.mts","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EAEpB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,8BAA8B;AAEnE,OAAO,KAAK,EACV,sBAAsB,EAEtB,cAAc,EACf,wBAAwB;AAIzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAWlD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;;;;CAQhC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD,oBAAoB,EAAE,CAAC,EACrB,MAAM,EACN,OAAO,EACP,OAAO,GACR,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7E,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAE9C,wBAAwB,EAAE,MAAM,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAe,2BAA2B,CACxC,GAAG,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAMxC,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EACE,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,wBAAwB,GACzB,EAAE,kBAAkB,GACpB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -2,6 +2,7 @@ import { rpcErrors } from "@metamask/rpc-errors";
|
|
|
2
2
|
import { HandlerType, WALLET_SNAP_PERMISSION_KEY } from "@metamask/snaps-utils";
|
|
3
3
|
import { hasProperty } from "@metamask/utils";
|
|
4
4
|
import { getValidatedParams } from "./invokeSnapSugar.mjs";
|
|
5
|
+
const methodName = 'wallet_invokeKeyring';
|
|
5
6
|
const hookNames = {
|
|
6
7
|
hasPermission: true,
|
|
7
8
|
handleSnapRpcRequest: true,
|
|
@@ -9,10 +10,15 @@ const hookNames = {
|
|
|
9
10
|
getAllowedKeyringMethods: true,
|
|
10
11
|
};
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* Invoke a keyring method of a Snap. This calls the `onKeyringRequest` handler
|
|
14
|
+
* of the Snap.
|
|
15
|
+
*
|
|
16
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
17
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
18
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
13
19
|
*/
|
|
14
20
|
export const invokeKeyringHandler = {
|
|
15
|
-
methodNames: [
|
|
21
|
+
methodNames: [methodName],
|
|
16
22
|
implementation: invokeKeyringImplementation,
|
|
17
23
|
hookNames,
|
|
18
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeKeyring.mjs","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAOjD,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,8BAA8B;AAMhF,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,OAAO,EAAE,kBAAkB,EAAE,8BAA0B;AAGvD,MAAM,SAAS,GAA0C;IACvD,aAAa,EAAE,IAAI;IACnB,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,IAAI;IACb,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"invokeKeyring.mjs","sourceRoot":"","sources":["../../src/permitted/invokeKeyring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAOjD,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,8BAA8B;AAMhF,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,OAAO,EAAE,kBAAkB,EAAE,8BAA0B;AAGvD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,SAAS,GAA0C;IACvD,aAAa,EAAE,IAAI;IACnB,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,IAAI;IACb,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CAKV,CAAC;AAgBF;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,2BAA2B,CACxC,GAAwC;AACxC,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,+BAA+B;AAC/B,4EAA4E;AAC5E,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,EACE,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,wBAAwB,GACL;IAErB,IAAI,MAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,yEAAyE;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,GAA0C,CAAC;IAC9D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEnC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC1D,OAAO,GAAG,CACR,SAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,aAAa,MAAM,0BAA0B,MAAM,6CAA6C;SAC1G,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG;QACR,4CAA4C;QAC5C,SAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,aAAa,MAAM,2DAA2D;SACxF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,GAAG,CACR,SAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,iCAAiC;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAClD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CACR,SAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,eAAe,MAAM,0CAA0C,OAAO,CAAC,MAAM,IAAI;SAC3F,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,oBAAoB,CAAC;YACvC,MAAM;YACN,OAAO;YACP,OAAO,EAAE,WAAW,CAAC,gBAAgB;SACtC,CAAC,CAAS,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n InvokeKeyringParams,\n InvokeKeyringResult,\n InvokeSnapParams,\n} from '@metamask/snaps-sdk';\nimport type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils';\nimport { HandlerType, WALLET_SNAP_PERMISSION_KEY } from '@metamask/snaps-utils';\nimport type {\n PendingJsonRpcResponse,\n Json,\n JsonRpcRequest,\n} from '@metamask/utils';\nimport { hasProperty } from '@metamask/utils';\n\nimport { getValidatedParams } from './invokeSnapSugar';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'wallet_invokeKeyring';\n\nconst hookNames: MethodHooksObject<InvokeKeyringHooks> = {\n hasPermission: true,\n handleSnapRpcRequest: true,\n getSnap: true,\n getAllowedKeyringMethods: true,\n};\n\n/**\n * Invoke a keyring method of a Snap. This calls the `onKeyringRequest` handler\n * of the Snap.\n *\n * The Snap must be installed and the dapp must have permission to communicate\n * with the Snap, or the request is rejected. The dapp can install the Snap and\n * request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).\n */\nexport const invokeKeyringHandler = {\n methodNames: [methodName] as const,\n implementation: invokeKeyringImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n InvokeKeyringHooks,\n InvokeSnapParams,\n InvokeKeyringResult\n>;\n\nexport type InvokeKeyringHooks = {\n hasPermission: (permissionName: string) => boolean;\n\n handleSnapRpcRequest: ({\n snapId,\n handler,\n request,\n }: Omit<SnapRpcHookArgs, 'origin'> & { snapId: string }) => Promise<unknown>;\n\n getSnap: (snapId: string) => Snap | undefined;\n\n getAllowedKeyringMethods: () => string[];\n};\n\n/**\n * The `wallet_invokeKeyring` method implementation.\n * Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.handleSnapRpcRequest - Invokes a snap with a given RPC request.\n * @param hooks.hasPermission - Checks whether a given origin has a given permission.\n * @param hooks.getSnap - Gets information about a given snap.\n * @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring\n * methods for a given origin.\n * @returns Nothing.\n */\nasync function invokeKeyringImplementation(\n req: JsonRpcRequest<InvokeKeyringParams>,\n // `InvokeKeyringResult` is an alias for `Json` (which is the default type\n // argument for `PendingJsonRpcResponse`), but that may not be the case in the\n // future. We use `InvokeKeyringResult` here to make it clear that this is the\n // expected type of the result.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments\n res: PendingJsonRpcResponse<InvokeKeyringResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n {\n handleSnapRpcRequest,\n hasPermission,\n getSnap,\n getAllowedKeyringMethods,\n }: InvokeKeyringHooks,\n): Promise<void> {\n let params: InvokeSnapParams;\n try {\n params = getValidatedParams(req.params);\n } catch (error) {\n return end(error);\n }\n\n // We expect the MM middleware stack to always add the origin to requests\n const { origin } = req as JsonRpcRequest & { origin: string };\n const { snapId, request } = params;\n\n if (!origin || !hasPermission(WALLET_SNAP_PERMISSION_KEY)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not connected to \"${origin}\". Please connect before invoking the snap.`,\n }),\n );\n }\n\n if (!getSnap(snapId)) {\n return end(\n // Mirror error message from SnapController.\n rpcErrors.invalidRequest({\n message: `The Snap \"${snapId}\" is not installed. Please install it before invoking it.`,\n }),\n );\n }\n\n if (!hasProperty(request, 'method') || typeof request.method !== 'string') {\n return end(\n rpcErrors.invalidRequest({\n message: 'The request must have a method.',\n }),\n );\n }\n\n const allowedMethods = getAllowedKeyringMethods();\n if (!allowedMethods.includes(request.method)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The origin \"${origin}\" is not allowed to invoke the method \"${request.method}\".`,\n }),\n );\n }\n\n try {\n res.result = (await handleSnapRpcRequest({\n snapId,\n request,\n handler: HandlerType.OnKeyringRequest,\n })) as Json;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
|
|
@@ -3,11 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getValidatedParams = exports.invokeSnapSugar = exports.invokeSnapSugarHandler = void 0;
|
|
4
4
|
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
5
|
const utils_1 = require("@metamask/utils");
|
|
6
|
+
const methodName = 'wallet_invokeSnap';
|
|
6
7
|
/**
|
|
7
|
-
*
|
|
8
|
+
* Invoke a method of a Snap, designated by the `snapId` parameter, with a
|
|
9
|
+
* JSON-RPC request specified in the `request` parameter. This is effectively a
|
|
10
|
+
* wrapper around [`wallet_snap`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_snap)
|
|
11
|
+
* that allows for more convenient invocation of Snap methods without needing to
|
|
12
|
+
* specify the full `wallet_snap` parameters.
|
|
13
|
+
*
|
|
14
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
15
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
16
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const result = await snap.request({
|
|
21
|
+
* method: 'wallet_invokeSnap',
|
|
22
|
+
* params: {
|
|
23
|
+
* snapId: 'npm:@metamask/example-snap',
|
|
24
|
+
* request: {
|
|
25
|
+
* method: 'someMethod',
|
|
26
|
+
* params: { some: 'params' },
|
|
27
|
+
* },
|
|
28
|
+
* },
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
8
31
|
*/
|
|
9
32
|
exports.invokeSnapSugarHandler = {
|
|
10
|
-
methodNames: [
|
|
33
|
+
methodNames: [methodName],
|
|
11
34
|
implementation: invokeSnapSugar,
|
|
12
35
|
hookNames: {
|
|
13
36
|
invokeSnap: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeSnapSugar.cjs","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":";;;AAKA,qDAAiD;AAGjD,2CAA2C;AAE3C
|
|
1
|
+
{"version":3,"file":"invokeSnapSugar.cjs","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":";;;AAKA,qDAAiD;AAGjD,2CAA2C;AAE3C,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACU,QAAA,sBAAsB,GAAG;IACpC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,eAAe;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,IAAI;KACjB;CAKF,CAAC;AAMF;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,eAAe,CACnC,GAAqC;AACrC,uEAAuE;AACvE,8EAA8E;AAC9E,2EAA2E;AAC3E,+BAA+B;AAC/B,4EAA4E;AAC5E,GAA6C,EAC7C,KAAgC,EAChC,GAA6B,EAC7B,EAAE,UAAU,EAAwB;IAEpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAnBD,0CAmBC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,MAAe;IAChD,IAAI,CAAC,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,wCAAwC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEnC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAA,gBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,sBAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAA0B,CAAC;AACpC,CAAC;AAtBD,gDAsBC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { InvokeSnapParams, InvokeSnapResult } from '@metamask/snaps-sdk';\nimport type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';\nimport { isObject } from '@metamask/utils';\n\nconst methodName = 'wallet_invokeSnap';\n\n/**\n * Invoke a method of a Snap, designated by the `snapId` parameter, with a\n * JSON-RPC request specified in the `request` parameter. This is effectively a\n * wrapper around [`wallet_snap`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_snap)\n * that allows for more convenient invocation of Snap methods without needing to\n * specify the full `wallet_snap` parameters.\n *\n * The Snap must be installed and the dapp must have permission to communicate\n * with the Snap, or the request is rejected. The dapp can install the Snap and\n * request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).\n *\n * @example\n * ```ts\n * const result = await snap.request({\n * method: 'wallet_invokeSnap',\n * params: {\n * snapId: 'npm:@metamask/example-snap',\n * request: {\n * method: 'someMethod',\n * params: { some: 'params' },\n * },\n * },\n * });\n * ```\n */\nexport const invokeSnapSugarHandler = {\n methodNames: [methodName] as const,\n implementation: invokeSnapSugar,\n hookNames: {\n invokeSnap: true,\n },\n} satisfies PermittedHandlerExport<\n InvokeSnapSugarHooks,\n InvokeSnapParams,\n InvokeSnapResult\n>;\n\nexport type InvokeSnapSugarHooks = {\n invokeSnap: (params: InvokeSnapParams) => Promise<InvokeSnapResult>;\n};\n\n/**\n * The `wallet_invokeSnap` method implementation.\n * Effectively calls `wallet_snap` under the hood.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.invokeSnap - A function to invoke a snap designated by its parameters,\n * bound to the requesting origin.\n * @returns Nothing.\n * @throws If the params are invalid.\n */\nexport async function invokeSnapSugar(\n req: JsonRpcRequest<InvokeSnapParams>,\n // `InvokeSnapResult` is an alias for `Json` (which is the default type\n // argument for `PendingJsonRpcResponse`), but that may not be the case in the\n // future. We use `InvokeSnapResult` here to make it clear that this is the\n // expected type of the result.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments\n res: PendingJsonRpcResponse<InvokeSnapResult>,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n { invokeSnap }: InvokeSnapSugarHooks,\n): Promise<void> {\n try {\n const params = getValidatedParams(req.params);\n res.result = await invokeSnap(params);\n } catch (error) {\n return end(error);\n }\n return end();\n}\n\n/**\n * Validates the wallet_invokeSnap method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated method parameter object.\n */\nexport function getValidatedParams(params: unknown): InvokeSnapParams {\n if (!isObject(params)) {\n throw rpcErrors.invalidParams({\n message: 'Expected params to be a single object.',\n });\n }\n\n const { snapId, request } = params;\n\n if (!snapId || typeof snapId !== 'string' || snapId === '') {\n throw rpcErrors.invalidParams({\n message: 'Must specify a valid snap ID.',\n });\n }\n\n if (!isObject(request)) {\n throw rpcErrors.invalidParams({\n message: 'Expected request to be a single object.',\n });\n }\n\n return params as InvokeSnapParams;\n}\n"]}
|
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type { PermittedHandlerExport } from "@metamask/permission-controller";
|
|
3
2
|
import type { InvokeSnapParams, InvokeSnapResult } from "@metamask/snaps-sdk";
|
|
4
3
|
import type { JsonRpcRequest, PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
5
|
+
* Invoke a method of a Snap, designated by the `snapId` parameter, with a
|
|
6
|
+
* JSON-RPC request specified in the `request` parameter. This is effectively a
|
|
7
|
+
* wrapper around [`wallet_snap`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_snap)
|
|
8
|
+
* that allows for more convenient invocation of Snap methods without needing to
|
|
9
|
+
* specify the full `wallet_snap` parameters.
|
|
10
|
+
*
|
|
11
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
12
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
13
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const result = await snap.request({
|
|
18
|
+
* method: 'wallet_invokeSnap',
|
|
19
|
+
* params: {
|
|
20
|
+
* snapId: 'npm:@metamask/example-snap',
|
|
21
|
+
* request: {
|
|
22
|
+
* method: 'someMethod',
|
|
23
|
+
* params: { some: 'params' },
|
|
24
|
+
* },
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
7
28
|
*/
|
|
8
|
-
export declare const invokeSnapSugarHandler:
|
|
29
|
+
export declare const invokeSnapSugarHandler: {
|
|
30
|
+
methodNames: ["wallet_invokeSnap"];
|
|
31
|
+
implementation: typeof invokeSnapSugar;
|
|
32
|
+
hookNames: {
|
|
33
|
+
invokeSnap: true;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
9
36
|
export type InvokeSnapSugarHooks = {
|
|
10
37
|
invokeSnap: (params: InvokeSnapParams) => Promise<InvokeSnapResult>;
|
|
11
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeSnapSugar.d.cts","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;
|
|
1
|
+
{"version":3,"file":"invokeSnapSugar.d.cts","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AAGnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,wBAAwB;AAK9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,sBAAsB;;;;;;CAUlC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAMrC,GAAG,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAC7C,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,oBAAoB,GACnC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAsBpE"}
|
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback, JsonRpcEngineNextCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import type { PermittedHandlerExport } from "@metamask/permission-controller";
|
|
3
2
|
import type { InvokeSnapParams, InvokeSnapResult } from "@metamask/snaps-sdk";
|
|
4
3
|
import type { JsonRpcRequest, PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
5
|
+
* Invoke a method of a Snap, designated by the `snapId` parameter, with a
|
|
6
|
+
* JSON-RPC request specified in the `request` parameter. This is effectively a
|
|
7
|
+
* wrapper around [`wallet_snap`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_snap)
|
|
8
|
+
* that allows for more convenient invocation of Snap methods without needing to
|
|
9
|
+
* specify the full `wallet_snap` parameters.
|
|
10
|
+
*
|
|
11
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
12
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
13
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const result = await snap.request({
|
|
18
|
+
* method: 'wallet_invokeSnap',
|
|
19
|
+
* params: {
|
|
20
|
+
* snapId: 'npm:@metamask/example-snap',
|
|
21
|
+
* request: {
|
|
22
|
+
* method: 'someMethod',
|
|
23
|
+
* params: { some: 'params' },
|
|
24
|
+
* },
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
7
28
|
*/
|
|
8
|
-
export declare const invokeSnapSugarHandler:
|
|
29
|
+
export declare const invokeSnapSugarHandler: {
|
|
30
|
+
methodNames: ["wallet_invokeSnap"];
|
|
31
|
+
implementation: typeof invokeSnapSugar;
|
|
32
|
+
hookNames: {
|
|
33
|
+
invokeSnap: true;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
9
36
|
export type InvokeSnapSugarHooks = {
|
|
10
37
|
invokeSnap: (params: InvokeSnapParams) => Promise<InvokeSnapResult>;
|
|
11
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeSnapSugar.d.mts","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;
|
|
1
|
+
{"version":3,"file":"invokeSnapSugar.d.mts","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AAGnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,wBAAwB;AAK9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,sBAAsB;;;;;;CAUlC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAMrC,GAAG,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,EAC7C,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,wBAAwB,EAC7B,EAAE,UAAU,EAAE,EAAE,oBAAoB,GACnC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAsBpE"}
|
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import { rpcErrors } from "@metamask/rpc-errors";
|
|
2
2
|
import { isObject } from "@metamask/utils";
|
|
3
|
+
const methodName = 'wallet_invokeSnap';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Invoke a method of a Snap, designated by the `snapId` parameter, with a
|
|
6
|
+
* JSON-RPC request specified in the `request` parameter. This is effectively a
|
|
7
|
+
* wrapper around [`wallet_snap`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_snap)
|
|
8
|
+
* that allows for more convenient invocation of Snap methods without needing to
|
|
9
|
+
* specify the full `wallet_snap` parameters.
|
|
10
|
+
*
|
|
11
|
+
* The Snap must be installed and the dapp must have permission to communicate
|
|
12
|
+
* with the Snap, or the request is rejected. The dapp can install the Snap and
|
|
13
|
+
* request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const result = await snap.request({
|
|
18
|
+
* method: 'wallet_invokeSnap',
|
|
19
|
+
* params: {
|
|
20
|
+
* snapId: 'npm:@metamask/example-snap',
|
|
21
|
+
* request: {
|
|
22
|
+
* method: 'someMethod',
|
|
23
|
+
* params: { some: 'params' },
|
|
24
|
+
* },
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
5
28
|
*/
|
|
6
29
|
export const invokeSnapSugarHandler = {
|
|
7
|
-
methodNames: [
|
|
30
|
+
methodNames: [methodName],
|
|
8
31
|
implementation: invokeSnapSugar,
|
|
9
32
|
hookNames: {
|
|
10
33
|
invokeSnap: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invokeSnapSugar.mjs","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAGjD,OAAO,EAAE,QAAQ,EAAE,wBAAwB;AAE3C
|
|
1
|
+
{"version":3,"file":"invokeSnapSugar.mjs","sourceRoot":"","sources":["../../src/permitted/invokeSnapSugar.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAGjD,OAAO,EAAE,QAAQ,EAAE,wBAAwB;AAE3C,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,eAAe;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,IAAI;KACjB;CAKF,CAAC;AAMF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAqC;AACrC,uEAAuE;AACvE,8EAA8E;AAC9E,2EAA2E;AAC3E,+BAA+B;AAC/B,4EAA4E;AAC5E,GAA6C,EAC7C,KAAgC,EAChC,GAA6B,EAC7B,EAAE,UAAU,EAAwB;IAEpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,wCAAwC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEnC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,SAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAA0B,CAAC;AACpC,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { InvokeSnapParams, InvokeSnapResult } from '@metamask/snaps-sdk';\nimport type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';\nimport { isObject } from '@metamask/utils';\n\nconst methodName = 'wallet_invokeSnap';\n\n/**\n * Invoke a method of a Snap, designated by the `snapId` parameter, with a\n * JSON-RPC request specified in the `request` parameter. This is effectively a\n * wrapper around [`wallet_snap`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_snap)\n * that allows for more convenient invocation of Snap methods without needing to\n * specify the full `wallet_snap` parameters.\n *\n * The Snap must be installed and the dapp must have permission to communicate\n * with the Snap, or the request is rejected. The dapp can install the Snap and\n * request permission to communicate with it using [`wallet_requestSnaps`](https://docs.metamask.io/snaps/reference/snaps-api/wallet_requestsnaps).\n *\n * @example\n * ```ts\n * const result = await snap.request({\n * method: 'wallet_invokeSnap',\n * params: {\n * snapId: 'npm:@metamask/example-snap',\n * request: {\n * method: 'someMethod',\n * params: { some: 'params' },\n * },\n * },\n * });\n * ```\n */\nexport const invokeSnapSugarHandler = {\n methodNames: [methodName] as const,\n implementation: invokeSnapSugar,\n hookNames: {\n invokeSnap: true,\n },\n} satisfies PermittedHandlerExport<\n InvokeSnapSugarHooks,\n InvokeSnapParams,\n InvokeSnapResult\n>;\n\nexport type InvokeSnapSugarHooks = {\n invokeSnap: (params: InvokeSnapParams) => Promise<InvokeSnapResult>;\n};\n\n/**\n * The `wallet_invokeSnap` method implementation.\n * Effectively calls `wallet_snap` under the hood.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.invokeSnap - A function to invoke a snap designated by its parameters,\n * bound to the requesting origin.\n * @returns Nothing.\n * @throws If the params are invalid.\n */\nexport async function invokeSnapSugar(\n req: JsonRpcRequest<InvokeSnapParams>,\n // `InvokeSnapResult` is an alias for `Json` (which is the default type\n // argument for `PendingJsonRpcResponse`), but that may not be the case in the\n // future. We use `InvokeSnapResult` here to make it clear that this is the\n // expected type of the result.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-arguments\n res: PendingJsonRpcResponse<InvokeSnapResult>,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n { invokeSnap }: InvokeSnapSugarHooks,\n): Promise<void> {\n try {\n const params = getValidatedParams(req.params);\n res.result = await invokeSnap(params);\n } catch (error) {\n return end(error);\n }\n return end();\n}\n\n/**\n * Validates the wallet_invokeSnap method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated method parameter object.\n */\nexport function getValidatedParams(params: unknown): InvokeSnapParams {\n if (!isObject(params)) {\n throw rpcErrors.invalidParams({\n message: 'Expected params to be a single object.',\n });\n }\n\n const { snapId, request } = params;\n\n if (!snapId || typeof snapId !== 'string' || snapId === '') {\n throw rpcErrors.invalidParams({\n message: 'Must specify a valid snap ID.',\n });\n }\n\n if (!isObject(request)) {\n throw rpcErrors.invalidParams({\n message: 'Expected request to be a single object.',\n });\n }\n\n return params as InvokeSnapParams;\n}\n"]}
|
|
@@ -16,13 +16,52 @@ const REQUIRED_PERMISSIONS = [
|
|
|
16
16
|
getBip44Entropy_1.getBip44EntropyBuilder.targetName,
|
|
17
17
|
getEntropy_1.getEntropyBuilder.targetName,
|
|
18
18
|
];
|
|
19
|
+
const methodName = 'snap_listEntropySources';
|
|
19
20
|
const hookNames = {
|
|
20
21
|
hasPermission: true,
|
|
21
22
|
getEntropySources: true,
|
|
22
23
|
getUnlockPromise: true,
|
|
23
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Get a list of entropy sources available to the Snap. The requesting origin
|
|
27
|
+
* must have at least one of the following permissions to access entropy source
|
|
28
|
+
* metadata:
|
|
29
|
+
*
|
|
30
|
+
* - `snap_getBip32Entropy`
|
|
31
|
+
* - `snap_getBip32PublicKey`
|
|
32
|
+
* - `snap_getBip44Entropy`
|
|
33
|
+
* - `snap_getEntropy`
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```json name="Manifest"
|
|
37
|
+
* {
|
|
38
|
+
* "initialPermissions": {
|
|
39
|
+
* "snap_getBip32Entropy": {}
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
* ```ts name="Usage"
|
|
44
|
+
* const entropySources = await snap.request({ method: 'snap_listEntropySources' });
|
|
45
|
+
* console.log(entropySources);
|
|
46
|
+
* // Example output:
|
|
47
|
+
* // [
|
|
48
|
+
* // {
|
|
49
|
+
* // name: 'Mnemonic 1',
|
|
50
|
+
* // id: 'mnemonic-1',
|
|
51
|
+
* // type: 'mnemonic',
|
|
52
|
+
* // primary: true,
|
|
53
|
+
* // },
|
|
54
|
+
* // {
|
|
55
|
+
* // name: 'Mnemonic 2',
|
|
56
|
+
* // id: 'mnemonic-2',
|
|
57
|
+
* // type: 'mnemonic',
|
|
58
|
+
* // primary: false,
|
|
59
|
+
* // },
|
|
60
|
+
* // ]
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
24
63
|
exports.listEntropySourcesHandler = {
|
|
25
|
-
methodNames: [
|
|
64
|
+
methodNames: [methodName],
|
|
26
65
|
implementation: listEntropySourcesImplementation,
|
|
27
66
|
hookNames,
|
|
28
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listEntropySources.cjs","sourceRoot":"","sources":["../../src/permitted/listEntropySources.ts"],"names":[],"mappings":";;;AAEA,qDAAsD;AAStD,uEAAuE;AACvE,2EAA2E;AAC3E,uEAAuE;AACvE,6DAA6D;AAG7D;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,wCAAsB,CAAC,UAAU;IACjC,4CAAwB,CAAC,UAAU;IACnC,wCAAsB,CAAC,UAAU;IACjC,8BAAiB,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAM,SAAS,GAA+C;IAC5D,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"listEntropySources.cjs","sourceRoot":"","sources":["../../src/permitted/listEntropySources.ts"],"names":[],"mappings":";;;AAEA,qDAAsD;AAStD,uEAAuE;AACvE,2EAA2E;AAC3E,uEAAuE;AACvE,6DAA6D;AAG7D;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,wCAAsB,CAAC,UAAU;IACjC,4CAAwB,CAAC,UAAU;IACnC,wCAAsB,CAAC,UAAU;IACjC,8BAAiB,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAE7C,MAAM,SAAS,GAA+C;IAC5D,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC;AA0BF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACU,QAAA,yBAAyB,GAAG;IACvC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,gCAAgC;IAChD,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,gCAAgC,CAC7C,QAAkD,EAClD,QAA0D,EAC1D,KAAc,EACd,GAA6B,EAC7B,EACE,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACQ;IAE1B,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE7B,QAAQ,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACtC,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n EntropySource,\n JsonRpcRequest,\n ListEntropySourcesParams,\n ListEntropySourcesResult,\n} from '@metamask/snaps-sdk';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { getBip32EntropyBuilder } from '../restricted/getBip32Entropy';\nimport { getBip32PublicKeyBuilder } from '../restricted/getBip32PublicKey';\nimport { getBip44EntropyBuilder } from '../restricted/getBip44Entropy';\nimport { getEntropyBuilder } from '../restricted/getEntropy';\nimport type { MethodHooksObject } from '../utils';\n\n/**\n * A list of permissions that the requesting origin must have at least one of\n * in order to call this method.\n */\nconst REQUIRED_PERMISSIONS = [\n getBip32EntropyBuilder.targetName,\n getBip32PublicKeyBuilder.targetName,\n getBip44EntropyBuilder.targetName,\n getEntropyBuilder.targetName,\n];\n\nconst methodName = 'snap_listEntropySources';\n\nconst hookNames: MethodHooksObject<ListEntropySourcesHooks> = {\n hasPermission: true,\n getEntropySources: true,\n getUnlockPromise: true,\n};\n\nexport type ListEntropySourcesHooks = {\n /**\n * Check if the requesting origin has a given permission.\n *\n * @param permissionName - The name of the permission to check.\n * @returns Whether the origin has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n\n /**\n * Get the entropy sources from the client.\n *\n * @returns The entropy sources.\n */\n getEntropySources: () => EntropySource[];\n\n /**\n * Wait for the extension to be unlocked.\n *\n * @returns A promise that resolves once the extension is unlocked.\n */\n getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;\n};\n\n/**\n * Get a list of entropy sources available to the Snap. The requesting origin\n * must have at least one of the following permissions to access entropy source\n * metadata:\n *\n * - `snap_getBip32Entropy`\n * - `snap_getBip32PublicKey`\n * - `snap_getBip44Entropy`\n * - `snap_getEntropy`\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"snap_getBip32Entropy\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * const entropySources = await snap.request({ method: 'snap_listEntropySources' });\n * console.log(entropySources);\n * // Example output:\n * // [\n * // {\n * // name: 'Mnemonic 1',\n * // id: 'mnemonic-1',\n * // type: 'mnemonic',\n * // primary: true,\n * // },\n * // {\n * // name: 'Mnemonic 2',\n * // id: 'mnemonic-2',\n * // type: 'mnemonic',\n * // primary: false,\n * // },\n * // ]\n * ```\n */\nexport const listEntropySourcesHandler = {\n methodNames: [methodName] as const,\n implementation: listEntropySourcesImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n ListEntropySourcesHooks,\n ListEntropySourcesParams,\n ListEntropySourcesResult\n>;\n\n/**\n * The `snap_listEntropySources` method implementation.\n *\n * @param _request - The JSON-RPC request object. Not used by this function.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - The function to check if the origin has a\n * permission.\n * @param hooks.getEntropySources - The function to get the entropy sources.\n * @param hooks.getUnlockPromise - The function to get the unlock promise.\n * @returns Noting.\n */\nasync function listEntropySourcesImplementation(\n _request: JsonRpcRequest<ListEntropySourcesParams>,\n response: PendingJsonRpcResponse<ListEntropySourcesResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n {\n hasPermission,\n getEntropySources,\n getUnlockPromise,\n }: ListEntropySourcesHooks,\n): Promise<void> {\n const isPermitted = REQUIRED_PERMISSIONS.some(hasPermission);\n if (!isPermitted) {\n return end(providerErrors.unauthorized());\n }\n\n await getUnlockPromise(true);\n\n response.result = getEntropySources();\n return end();\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { EntropySource, ListEntropySourcesParams, ListEntropySourcesResult } from "@metamask/snaps-sdk";
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { EntropySource, JsonRpcRequest, ListEntropySourcesParams, ListEntropySourcesResult } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
4
|
+
import type { MethodHooksObject } from "../utils.cjs";
|
|
3
5
|
export type ListEntropySourcesHooks = {
|
|
4
6
|
/**
|
|
5
7
|
* Check if the requesting origin has a given permission.
|
|
@@ -21,5 +23,64 @@ export type ListEntropySourcesHooks = {
|
|
|
21
23
|
*/
|
|
22
24
|
getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Get a list of entropy sources available to the Snap. The requesting origin
|
|
28
|
+
* must have at least one of the following permissions to access entropy source
|
|
29
|
+
* metadata:
|
|
30
|
+
*
|
|
31
|
+
* - `snap_getBip32Entropy`
|
|
32
|
+
* - `snap_getBip32PublicKey`
|
|
33
|
+
* - `snap_getBip44Entropy`
|
|
34
|
+
* - `snap_getEntropy`
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```json name="Manifest"
|
|
38
|
+
* {
|
|
39
|
+
* "initialPermissions": {
|
|
40
|
+
* "snap_getBip32Entropy": {}
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
* ```ts name="Usage"
|
|
45
|
+
* const entropySources = await snap.request({ method: 'snap_listEntropySources' });
|
|
46
|
+
* console.log(entropySources);
|
|
47
|
+
* // Example output:
|
|
48
|
+
* // [
|
|
49
|
+
* // {
|
|
50
|
+
* // name: 'Mnemonic 1',
|
|
51
|
+
* // id: 'mnemonic-1',
|
|
52
|
+
* // type: 'mnemonic',
|
|
53
|
+
* // primary: true,
|
|
54
|
+
* // },
|
|
55
|
+
* // {
|
|
56
|
+
* // name: 'Mnemonic 2',
|
|
57
|
+
* // id: 'mnemonic-2',
|
|
58
|
+
* // type: 'mnemonic',
|
|
59
|
+
* // primary: false,
|
|
60
|
+
* // },
|
|
61
|
+
* // ]
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare const listEntropySourcesHandler: {
|
|
65
|
+
methodNames: ["snap_listEntropySources"];
|
|
66
|
+
implementation: typeof listEntropySourcesImplementation;
|
|
67
|
+
hookNames: MethodHooksObject<ListEntropySourcesHooks>;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* The `snap_listEntropySources` method implementation.
|
|
71
|
+
*
|
|
72
|
+
* @param _request - The JSON-RPC request object. Not used by this function.
|
|
73
|
+
* @param response - The JSON-RPC response object.
|
|
74
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
75
|
+
* function.
|
|
76
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
77
|
+
* @param hooks - The RPC method hooks.
|
|
78
|
+
* @param hooks.hasPermission - The function to check if the origin has a
|
|
79
|
+
* permission.
|
|
80
|
+
* @param hooks.getEntropySources - The function to get the entropy sources.
|
|
81
|
+
* @param hooks.getUnlockPromise - The function to get the unlock promise.
|
|
82
|
+
* @returns Noting.
|
|
83
|
+
*/
|
|
84
|
+
declare function listEntropySourcesImplementation(_request: JsonRpcRequest<ListEntropySourcesParams>, response: PendingJsonRpcResponse<ListEntropySourcesResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, getEntropySources, getUnlockPromise, }: ListEntropySourcesHooks): Promise<void>;
|
|
85
|
+
export {};
|
|
25
86
|
//# sourceMappingURL=listEntropySources.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listEntropySources.d.cts","sourceRoot":"","sources":["../../src/permitted/listEntropySources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listEntropySources.d.cts","sourceRoot":"","sources":["../../src/permitted/listEntropySources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACzB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAM9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAqBlD,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;;;OAKG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,aAAa,EAAE,CAAC;IAEzC;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,yBAAyB;;;;CAQrC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,iBAAe,gCAAgC,CAC7C,QAAQ,EAAE,cAAc,CAAC,wBAAwB,CAAC,EAClD,QAAQ,EAAE,sBAAsB,CAAC,wBAAwB,CAAC,EAC1D,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EACE,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,EAAE,uBAAuB,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf"}
|