@metamask/snaps-rpc-methods 14.3.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.
- package/CHANGELOG.md +17 -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 +1 -1
- package/dist/restricted/index.d.mts +1 -1
- package/dist/restricted/invokeSnap.cjs +22 -0
- package/dist/restricted/invokeSnap.cjs.map +1 -1
- package/dist/restricted/invokeSnap.d.cts +24 -6
- package/dist/restricted/invokeSnap.d.cts.map +1 -1
- package/dist/restricted/invokeSnap.d.mts +24 -6
- package/dist/restricted/invokeSnap.d.mts.map +1 -1
- package/dist/restricted/invokeSnap.mjs +22 -0
- 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 +74 -0
- package/dist/restricted/notify.d.cts.map +1 -1
- package/dist/restricted/notify.d.mts +74 -0
- 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 +11 -7
- 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,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { CloseWebSocketParams, CloseWebSocketResult } from "@metamask/snaps-sdk";
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { JsonRpcRequest, CloseWebSocketParams, CloseWebSocketResult } from "@metamask/snaps-sdk";
|
|
3
3
|
import type { InferMatching } from "@metamask/snaps-utils";
|
|
4
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
+
import type { MethodHooksObject } from "../utils.cjs";
|
|
4
6
|
export type CloseWebSocketMethodHooks = {
|
|
5
7
|
hasPermission: (permissionName: string) => boolean;
|
|
6
8
|
closeWebSocket: (id: string) => void;
|
|
@@ -12,8 +14,41 @@ declare const CloseWebSocketParametersStruct: import("@metamask/superstruct").St
|
|
|
12
14
|
}>;
|
|
13
15
|
export type CloseWebSocketParameters = InferMatching<typeof CloseWebSocketParametersStruct, CloseWebSocketParams>;
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
17
|
+
* Closes a WebSocket connection that was previously opened with
|
|
18
|
+
* [`snap_openWebSocket`](https://docs.metamask.io/snaps/reference/snaps-api/snap_openwebsocket).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```json name="Manifest"
|
|
22
|
+
* {
|
|
23
|
+
* "initialPermissions": {
|
|
24
|
+
* "endowment:network-access": {}
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
* ```ts name="Usage"
|
|
29
|
+
* await snap.request({
|
|
30
|
+
* method: 'snap_closeWebSocket',
|
|
31
|
+
* params: { id: 'websocket-1' },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
16
34
|
*/
|
|
17
|
-
export declare const closeWebSocketHandler:
|
|
35
|
+
export declare const closeWebSocketHandler: {
|
|
36
|
+
methodNames: ["snap_closeWebSocket"];
|
|
37
|
+
implementation: typeof closeWebSocketImplementation;
|
|
38
|
+
hookNames: MethodHooksObject<CloseWebSocketMethodHooks>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* The `snap_closeWebSocket` method implementation.
|
|
42
|
+
*
|
|
43
|
+
* @param req - The JSON-RPC request object.
|
|
44
|
+
* @param res - The JSON-RPC response object.
|
|
45
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
|
|
46
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
47
|
+
* @param hooks - The RPC method hooks.
|
|
48
|
+
* @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.
|
|
49
|
+
* @param hooks.closeWebSocket - The function to close a WebSocket.
|
|
50
|
+
* @returns Nothing.
|
|
51
|
+
*/
|
|
52
|
+
declare function closeWebSocketImplementation(req: JsonRpcRequest<CloseWebSocketParameters>, res: PendingJsonRpcResponse<CloseWebSocketResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, closeWebSocket }: CloseWebSocketMethodHooks): void;
|
|
18
53
|
export {};
|
|
19
54
|
//# sourceMappingURL=closeWebSocket.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closeWebSocket.d.cts","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"closeWebSocket.d.cts","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACrB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,QAAA,MAAM,8BAA8B;;;;EAElC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAClD,OAAO,8BAA8B,EACrC,oBAAoB,CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB;;;;CAQjC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAS,4BAA4B,CACnC,GAAG,EAAE,cAAc,CAAC,wBAAwB,CAAC,EAC7C,GAAG,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,EACjD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,yBAAyB,GAC3D,IAAI,CAgBN"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { CloseWebSocketParams, CloseWebSocketResult } from "@metamask/snaps-sdk";
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { JsonRpcRequest, CloseWebSocketParams, CloseWebSocketResult } from "@metamask/snaps-sdk";
|
|
3
3
|
import type { InferMatching } from "@metamask/snaps-utils";
|
|
4
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
+
import type { MethodHooksObject } from "../utils.mjs";
|
|
4
6
|
export type CloseWebSocketMethodHooks = {
|
|
5
7
|
hasPermission: (permissionName: string) => boolean;
|
|
6
8
|
closeWebSocket: (id: string) => void;
|
|
@@ -12,8 +14,41 @@ declare const CloseWebSocketParametersStruct: import("@metamask/superstruct").St
|
|
|
12
14
|
}>;
|
|
13
15
|
export type CloseWebSocketParameters = InferMatching<typeof CloseWebSocketParametersStruct, CloseWebSocketParams>;
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
17
|
+
* Closes a WebSocket connection that was previously opened with
|
|
18
|
+
* [`snap_openWebSocket`](https://docs.metamask.io/snaps/reference/snaps-api/snap_openwebsocket).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```json name="Manifest"
|
|
22
|
+
* {
|
|
23
|
+
* "initialPermissions": {
|
|
24
|
+
* "endowment:network-access": {}
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
* ```ts name="Usage"
|
|
29
|
+
* await snap.request({
|
|
30
|
+
* method: 'snap_closeWebSocket',
|
|
31
|
+
* params: { id: 'websocket-1' },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
16
34
|
*/
|
|
17
|
-
export declare const closeWebSocketHandler:
|
|
35
|
+
export declare const closeWebSocketHandler: {
|
|
36
|
+
methodNames: ["snap_closeWebSocket"];
|
|
37
|
+
implementation: typeof closeWebSocketImplementation;
|
|
38
|
+
hookNames: MethodHooksObject<CloseWebSocketMethodHooks>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* The `snap_closeWebSocket` method implementation.
|
|
42
|
+
*
|
|
43
|
+
* @param req - The JSON-RPC request object.
|
|
44
|
+
* @param res - The JSON-RPC response object.
|
|
45
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
|
|
46
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
47
|
+
* @param hooks - The RPC method hooks.
|
|
48
|
+
* @param hooks.hasPermission - The function to check if a snap has the `endowment:network-access` permission.
|
|
49
|
+
* @param hooks.closeWebSocket - The function to close a WebSocket.
|
|
50
|
+
* @returns Nothing.
|
|
51
|
+
*/
|
|
52
|
+
declare function closeWebSocketImplementation(req: JsonRpcRequest<CloseWebSocketParameters>, res: PendingJsonRpcResponse<CloseWebSocketResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, closeWebSocket }: CloseWebSocketMethodHooks): void;
|
|
18
53
|
export {};
|
|
19
54
|
//# sourceMappingURL=closeWebSocket.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closeWebSocket.d.mts","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"closeWebSocket.d.mts","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACrB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AASlD,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,QAAA,MAAM,8BAA8B;;;;EAElC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAClD,OAAO,8BAA8B,EACrC,oBAAoB,CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB;;;;CAQjC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,iBAAS,4BAA4B,CACnC,GAAG,EAAE,cAAc,CAAC,wBAAwB,CAAC,EAC7C,GAAG,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,EACjD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,yBAAyB,GAC3D,IAAI,CAgBN"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
|
|
2
2
|
import { create, object, string, StructError } from "@metamask/superstruct";
|
|
3
3
|
import { SnapEndowments } from "../endowments/index.mjs";
|
|
4
|
+
const methodName = 'snap_closeWebSocket';
|
|
4
5
|
const hookNames = {
|
|
5
6
|
hasPermission: true,
|
|
6
7
|
closeWebSocket: true,
|
|
@@ -9,10 +10,26 @@ const CloseWebSocketParametersStruct = object({
|
|
|
9
10
|
id: string(),
|
|
10
11
|
});
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* Closes a WebSocket connection that was previously opened with
|
|
14
|
+
* [`snap_openWebSocket`](https://docs.metamask.io/snaps/reference/snaps-api/snap_openwebsocket).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```json name="Manifest"
|
|
18
|
+
* {
|
|
19
|
+
* "initialPermissions": {
|
|
20
|
+
* "endowment:network-access": {}
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
* ```ts name="Usage"
|
|
25
|
+
* await snap.request({
|
|
26
|
+
* method: 'snap_closeWebSocket',
|
|
27
|
+
* params: { id: 'websocket-1' },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
13
30
|
*/
|
|
14
31
|
export const closeWebSocketHandler = {
|
|
15
|
-
methodNames: [
|
|
32
|
+
methodNames: [methodName],
|
|
16
33
|
implementation: closeWebSocketImplementation,
|
|
17
34
|
hookNames,
|
|
18
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closeWebSocket.mjs","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAOjE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B;AAG5E,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAG/C,MAAM,SAAS,GAAiD;IAC9D,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;CACrB,CAAC;AAOF,MAAM,8BAA8B,GAAG,MAAM,CAAC;IAC5C,EAAE,EAAE,MAAM,EAAE;CACb,CAAC,CAAC;AAOH
|
|
1
|
+
{"version":3,"file":"closeWebSocket.mjs","sourceRoot":"","sources":["../../src/permitted/closeWebSocket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AAOjE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B;AAG5E,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAG/C,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,MAAM,SAAS,GAAiD;IAC9D,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;CACrB,CAAC;AAOF,MAAM,8BAA8B,GAAG,MAAM,CAAC;IAC5C,EAAE,EAAE,MAAM,EAAE;CACb,CAAC,CAAC;AAOH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,4BAA4B;IAC5C,SAAS;CAKV,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CACnC,GAA6C,EAC7C,GAAiD,EACjD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,cAAc,EAA6B;IAE5D,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,cAAc,CAAC,EAAE,CAAC,CAAC;QACnB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n CloseWebSocketParams,\n CloseWebSocketResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport { create, object, string, StructError } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type { MethodHooksObject } from '../utils';\n\nconst methodName = 'snap_closeWebSocket';\n\nconst hookNames: MethodHooksObject<CloseWebSocketMethodHooks> = {\n hasPermission: true,\n closeWebSocket: true,\n};\n\nexport type CloseWebSocketMethodHooks = {\n hasPermission: (permissionName: string) => boolean;\n closeWebSocket: (id: string) => void;\n};\n\nconst CloseWebSocketParametersStruct = object({\n id: string(),\n});\n\nexport type CloseWebSocketParameters = InferMatching<\n typeof CloseWebSocketParametersStruct,\n CloseWebSocketParams\n>;\n\n/**\n * Closes a WebSocket connection that was previously opened with\n * [`snap_openWebSocket`](https://docs.metamask.io/snaps/reference/snaps-api/snap_openwebsocket).\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * await snap.request({\n * method: 'snap_closeWebSocket',\n * params: { id: 'websocket-1' },\n * });\n * ```\n */\nexport const closeWebSocketHandler = {\n methodNames: [methodName] as const,\n implementation: closeWebSocketImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CloseWebSocketMethodHooks,\n CloseWebSocketParams,\n CloseWebSocketResult\n>;\n\n/**\n * The `snap_closeWebSocket` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this 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 a snap has the `endowment:network-access` permission.\n * @param hooks.closeWebSocket - The function to close a WebSocket.\n * @returns Nothing.\n */\nfunction closeWebSocketImplementation(\n req: JsonRpcRequest<CloseWebSocketParameters>,\n res: PendingJsonRpcResponse<CloseWebSocketResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, closeWebSocket }: CloseWebSocketMethodHooks,\n): void {\n if (!hasPermission(SnapEndowments.NetworkAccess)) {\n return end(providerErrors.unauthorized());\n }\n\n const { params } = req;\n\n try {\n const { id } = getValidatedParams(params);\n closeWebSocket(id);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_closeWebSocket method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): CloseWebSocketParameters {\n try {\n return create(params, CloseWebSocketParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -4,11 +4,35 @@ exports.createInterfaceHandler = void 0;
|
|
|
4
4
|
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
5
|
const snaps_sdk_1 = require("@metamask/snaps-sdk");
|
|
6
6
|
const superstruct_1 = require("@metamask/superstruct");
|
|
7
|
+
const utils_1 = require("../utils.cjs");
|
|
8
|
+
const methodName = 'snap_createInterface';
|
|
7
9
|
const hookNames = {
|
|
10
|
+
hasPermission: true,
|
|
8
11
|
createInterface: true,
|
|
9
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* Create the interactive interface for use in the
|
|
15
|
+
* [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
|
|
20
|
+
*
|
|
21
|
+
* const interfaceId = snap.request({
|
|
22
|
+
* method: 'snap_createInterface',
|
|
23
|
+
* params: {
|
|
24
|
+
* ui: (
|
|
25
|
+
* <Box>
|
|
26
|
+
* <Heading>Example Interface</Heading>
|
|
27
|
+
* <Text>This is an example interface created by "snap_createInterface".</Text>
|
|
28
|
+
* </Box>
|
|
29
|
+
* ),
|
|
30
|
+
* },
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
10
34
|
exports.createInterfaceHandler = {
|
|
11
|
-
methodNames: [
|
|
35
|
+
methodNames: [methodName],
|
|
12
36
|
implementation: getCreateInterfaceImplementation,
|
|
13
37
|
hookNames,
|
|
14
38
|
};
|
|
@@ -25,10 +49,17 @@ const CreateInterfaceParametersStruct = (0, superstruct_1.object)({
|
|
|
25
49
|
* function.
|
|
26
50
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
27
51
|
* @param hooks - The RPC method hooks.
|
|
52
|
+
* @param hooks.hasPermission - The function to check if the Snap has a given
|
|
53
|
+
* permission.
|
|
28
54
|
* @param hooks.createInterface - The function to create the interface.
|
|
29
55
|
* @returns Nothing.
|
|
30
56
|
*/
|
|
31
|
-
function getCreateInterfaceImplementation(req, res, _next, end, { createInterface }) {
|
|
57
|
+
function getCreateInterfaceImplementation(req, res, _next, end, { hasPermission, createInterface }) {
|
|
58
|
+
if (!utils_1.UI_PERMISSIONS.some(hasPermission)) {
|
|
59
|
+
return end(rpc_errors_1.providerErrors.unauthorized({
|
|
60
|
+
message: `This method can only be used if the Snap has one of the following permissions: ${utils_1.UI_PERMISSIONS.join(', ')}.`,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
32
63
|
const { params } = req;
|
|
33
64
|
try {
|
|
34
65
|
const validatedParams = getValidatedParams(params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInterface.cjs","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"createInterface.cjs","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":";;;AAEA,qDAAiE;AASjE,mDAG6B;AAE7B,uDAA8E;AAI9E,wCAA0C;AAE1C,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,SAAS,GAAkD;IAC/D,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;CACtB,CAAC;AAsBF;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,sBAAsB,GAAG;IACpC,WAAW,EAAE,CAAC,UAAU,CAAU;IAClC,cAAc,EAAE,gCAAgC;IAChD,SAAS;CAKV,CAAC;AAEF,MAAM,+BAA+B,GAAG,IAAA,oBAAM,EAAC;IAC7C,EAAE,EAAE,oCAAwB;IAC5B,OAAO,EAAE,IAAA,sBAAQ,EAAC,kCAAsB,CAAC;CAC1C,CAAC,CAAC;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,gCAAgC,CACvC,GAA8C,EAC9C,GAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,aAAa,EAAE,eAAe,EAA8B;IAE9D,IAAI,CAAC,sBAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CACR,2BAAc,CAAC,YAAY,CAAC;YAC1B,OAAO,EAAE,kFAAkF,sBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACxH,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;QAExC,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type {\n CreateInterfaceParams,\n CreateInterfaceResult,\n JsonRpcRequest,\n ComponentOrElement,\n InterfaceContext,\n ContentType,\n} from '@metamask/snaps-sdk';\nimport {\n ComponentOrElementStruct,\n InterfaceContextStruct,\n} from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport { StructError, create, object, optional } from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\nimport { UI_PERMISSIONS } from '../utils';\n\nconst methodName = 'snap_createInterface';\n\nconst hookNames: MethodHooksObject<CreateInterfaceMethodHooks> = {\n hasPermission: true,\n createInterface: true,\n};\n\nexport type CreateInterfaceMethodHooks = {\n /**\n * @param permissionName - The name of the permission to check.\n * @returns Whether the Snap has the permission.\n */\n hasPermission: (permissionName: string) => boolean;\n\n /**\n * @param ui - The UI components.\n * @param context - An optional interface context object.\n * @param contentType - The optional content type.\n * @returns The unique identifier of the interface.\n */\n createInterface: (\n ui: ComponentOrElement,\n context?: InterfaceContext,\n contentType?: ContentType,\n ) => string;\n};\n\n/**\n * Create the interactive interface for use in the\n * [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).\n *\n * @example\n * ```tsx\n * import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';\n *\n * const interfaceId = snap.request({\n * method: 'snap_createInterface',\n * params: {\n * ui: (\n * <Box>\n * <Heading>Example Interface</Heading>\n * <Text>This is an example interface created by \"snap_createInterface\".</Text>\n * </Box>\n * ),\n * },\n * });\n * ```\n */\nexport const createInterfaceHandler = {\n methodNames: [methodName] as const,\n implementation: getCreateInterfaceImplementation,\n hookNames,\n} satisfies PermittedHandlerExport<\n CreateInterfaceMethodHooks,\n CreateInterfaceParameters,\n CreateInterfaceResult\n>;\n\nconst CreateInterfaceParametersStruct = object({\n ui: ComponentOrElementStruct,\n context: optional(InterfaceContextStruct),\n});\n\nexport type CreateInterfaceParameters = InferMatching<\n typeof CreateInterfaceParametersStruct,\n CreateInterfaceParams\n>;\n\n/**\n * The `snap_createInterface` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.hasPermission - The function to check if the Snap has a given\n * permission.\n * @param hooks.createInterface - The function to create the interface.\n * @returns Nothing.\n */\nfunction getCreateInterfaceImplementation(\n req: JsonRpcRequest<CreateInterfaceParameters>,\n res: PendingJsonRpcResponse<CreateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { hasPermission, createInterface }: CreateInterfaceMethodHooks,\n): void {\n if (!UI_PERMISSIONS.some(hasPermission)) {\n return end(\n providerErrors.unauthorized({\n message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,\n }),\n );\n }\n\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { ui, context } = validatedParams;\n\n res.result = createInterface(ui, context);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the createInterface method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated createInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CreateInterfaceParameters {\n try {\n return create(params, CreateInterfaceParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -1,14 +1,48 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { CreateInterfaceParams, CreateInterfaceResult, ComponentOrElement, InterfaceContext, ContentType } from "@metamask/snaps-sdk";
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { CreateInterfaceParams, CreateInterfaceResult, JsonRpcRequest, ComponentOrElement, InterfaceContext, ContentType } from "@metamask/snaps-sdk";
|
|
3
3
|
import { type InferMatching } from "@metamask/snaps-utils";
|
|
4
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
+
import type { MethodHooksObject } from "../utils.cjs";
|
|
4
6
|
export type CreateInterfaceMethodHooks = {
|
|
7
|
+
/**
|
|
8
|
+
* @param permissionName - The name of the permission to check.
|
|
9
|
+
* @returns Whether the Snap has the permission.
|
|
10
|
+
*/
|
|
11
|
+
hasPermission: (permissionName: string) => boolean;
|
|
5
12
|
/**
|
|
6
13
|
* @param ui - The UI components.
|
|
14
|
+
* @param context - An optional interface context object.
|
|
15
|
+
* @param contentType - The optional content type.
|
|
7
16
|
* @returns The unique identifier of the interface.
|
|
8
17
|
*/
|
|
9
18
|
createInterface: (ui: ComponentOrElement, context?: InterfaceContext, contentType?: ContentType) => string;
|
|
10
19
|
};
|
|
11
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Create the interactive interface for use in the
|
|
22
|
+
* [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
|
|
27
|
+
*
|
|
28
|
+
* const interfaceId = snap.request({
|
|
29
|
+
* method: 'snap_createInterface',
|
|
30
|
+
* params: {
|
|
31
|
+
* ui: (
|
|
32
|
+
* <Box>
|
|
33
|
+
* <Heading>Example Interface</Heading>
|
|
34
|
+
* <Text>This is an example interface created by "snap_createInterface".</Text>
|
|
35
|
+
* </Box>
|
|
36
|
+
* ),
|
|
37
|
+
* },
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const createInterfaceHandler: {
|
|
42
|
+
methodNames: ["snap_createInterface"];
|
|
43
|
+
implementation: typeof getCreateInterfaceImplementation;
|
|
44
|
+
hookNames: MethodHooksObject<CreateInterfaceMethodHooks>;
|
|
45
|
+
};
|
|
12
46
|
declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").Struct<{
|
|
13
47
|
ui: import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DateTimePickerProps, "DateTimePicker"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | {
|
|
14
48
|
value: string;
|
|
@@ -21,13 +55,7 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
21
55
|
type: import("@metamask/snaps-sdk").NodeType.Heading;
|
|
22
56
|
} | {
|
|
23
57
|
value: string;
|
|
24
|
-
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
25
|
-
* Validate the createInterface method `params` and returns them cast to the correct
|
|
26
|
-
* type. Throws if validation fails.
|
|
27
|
-
*
|
|
28
|
-
* @param params - The unvalidated params object from the method request.
|
|
29
|
-
* @returns The validated createInterface method parameter object.
|
|
30
|
-
*/
|
|
58
|
+
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
31
59
|
} | {
|
|
32
60
|
type: import("@metamask/snaps-sdk").NodeType.Spinner;
|
|
33
61
|
} | {
|
|
@@ -70,6 +98,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
70
98
|
type: import("@metamask/snaps-sdk").NodeType.Form;
|
|
71
99
|
name: string;
|
|
72
100
|
children: ({
|
|
101
|
+
/**
|
|
102
|
+
* Validate the createInterface method `params` and returns them cast to the correct
|
|
103
|
+
* type. Throws if validation fails.
|
|
104
|
+
*
|
|
105
|
+
* @param params - The unvalidated params object from the method request.
|
|
106
|
+
* @returns The validated createInterface method parameter object.
|
|
107
|
+
*/
|
|
73
108
|
type: import("@metamask/snaps-sdk").NodeType.Input;
|
|
74
109
|
name: string;
|
|
75
110
|
value?: string | undefined;
|
|
@@ -116,13 +151,7 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
116
151
|
type: import("@metamask/snaps-sdk").NodeType.Heading;
|
|
117
152
|
} | {
|
|
118
153
|
value: string;
|
|
119
|
-
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
120
|
-
* Validate the createInterface method `params` and returns them cast to the correct
|
|
121
|
-
* type. Throws if validation fails.
|
|
122
|
-
*
|
|
123
|
-
* @param params - The unvalidated params object from the method request.
|
|
124
|
-
* @returns The validated createInterface method parameter object.
|
|
125
|
-
*/
|
|
154
|
+
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
126
155
|
} | {
|
|
127
156
|
type: import("@metamask/snaps-sdk").NodeType.Spinner;
|
|
128
157
|
} | {
|
|
@@ -165,6 +194,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
165
194
|
type: import("@metamask/snaps-sdk").NodeType.Form;
|
|
166
195
|
name: string;
|
|
167
196
|
children: ({
|
|
197
|
+
/**
|
|
198
|
+
* Validate the createInterface method `params` and returns them cast to the correct
|
|
199
|
+
* type. Throws if validation fails.
|
|
200
|
+
*
|
|
201
|
+
* @param params - The unvalidated params object from the method request.
|
|
202
|
+
* @returns The validated createInterface method parameter object.
|
|
203
|
+
*/
|
|
168
204
|
type: import("@metamask/snaps-sdk").NodeType.Input;
|
|
169
205
|
name: string;
|
|
170
206
|
value?: string | undefined;
|
|
@@ -201,5 +237,20 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
201
237
|
context: import("@metamask/superstruct").Struct<Record<string, import("@metamask/snaps-sdk").Json> | undefined, null>;
|
|
202
238
|
}>;
|
|
203
239
|
export type CreateInterfaceParameters = InferMatching<typeof CreateInterfaceParametersStruct, CreateInterfaceParams>;
|
|
240
|
+
/**
|
|
241
|
+
* The `snap_createInterface` method implementation.
|
|
242
|
+
*
|
|
243
|
+
* @param req - The JSON-RPC request object.
|
|
244
|
+
* @param res - The JSON-RPC response object.
|
|
245
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
246
|
+
* function.
|
|
247
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
248
|
+
* @param hooks - The RPC method hooks.
|
|
249
|
+
* @param hooks.hasPermission - The function to check if the Snap has a given
|
|
250
|
+
* permission.
|
|
251
|
+
* @param hooks.createInterface - The function to create the interface.
|
|
252
|
+
* @returns Nothing.
|
|
253
|
+
*/
|
|
254
|
+
declare function getCreateInterfaceImplementation(req: JsonRpcRequest<CreateInterfaceParameters>, res: PendingJsonRpcResponse<CreateInterfaceResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, createInterface }: CreateInterfaceMethodHooks): void;
|
|
204
255
|
export {};
|
|
205
256
|
//# sourceMappingURL=createInterface.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInterface.d.cts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createInterface.d.cts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACZ,4BAA4B;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAUlD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;;;OAKG;IACH,eAAe,EAAE,CACf,EAAE,EAAE,kBAAkB,EACtB,OAAO,CAAC,EAAE,gBAAgB,EAC1B,WAAW,CAAC,EAAE,WAAW,KACtB,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB;;;;CAQlC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsDrC;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YANH;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAzDD,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,OAAO,+BAA+B,EACtC,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,gCAAgC,CACvC,GAAG,EAAE,cAAc,CAAC,yBAAyB,CAAC,EAC9C,GAAG,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,0BAA0B,GAC7D,IAAI,CAsBN"}
|
|
@@ -1,14 +1,48 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { CreateInterfaceParams, CreateInterfaceResult, ComponentOrElement, InterfaceContext, ContentType } from "@metamask/snaps-sdk";
|
|
1
|
+
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { CreateInterfaceParams, CreateInterfaceResult, JsonRpcRequest, ComponentOrElement, InterfaceContext, ContentType } from "@metamask/snaps-sdk";
|
|
3
3
|
import { type InferMatching } from "@metamask/snaps-utils";
|
|
4
|
+
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
+
import type { MethodHooksObject } from "../utils.mjs";
|
|
4
6
|
export type CreateInterfaceMethodHooks = {
|
|
7
|
+
/**
|
|
8
|
+
* @param permissionName - The name of the permission to check.
|
|
9
|
+
* @returns Whether the Snap has the permission.
|
|
10
|
+
*/
|
|
11
|
+
hasPermission: (permissionName: string) => boolean;
|
|
5
12
|
/**
|
|
6
13
|
* @param ui - The UI components.
|
|
14
|
+
* @param context - An optional interface context object.
|
|
15
|
+
* @param contentType - The optional content type.
|
|
7
16
|
* @returns The unique identifier of the interface.
|
|
8
17
|
*/
|
|
9
18
|
createInterface: (ui: ComponentOrElement, context?: InterfaceContext, contentType?: ContentType) => string;
|
|
10
19
|
};
|
|
11
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Create the interactive interface for use in the
|
|
22
|
+
* [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
|
|
27
|
+
*
|
|
28
|
+
* const interfaceId = snap.request({
|
|
29
|
+
* method: 'snap_createInterface',
|
|
30
|
+
* params: {
|
|
31
|
+
* ui: (
|
|
32
|
+
* <Box>
|
|
33
|
+
* <Heading>Example Interface</Heading>
|
|
34
|
+
* <Text>This is an example interface created by "snap_createInterface".</Text>
|
|
35
|
+
* </Box>
|
|
36
|
+
* ),
|
|
37
|
+
* },
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const createInterfaceHandler: {
|
|
42
|
+
methodNames: ["snap_createInterface"];
|
|
43
|
+
implementation: typeof getCreateInterfaceImplementation;
|
|
44
|
+
hookNames: MethodHooksObject<CreateInterfaceMethodHooks>;
|
|
45
|
+
};
|
|
12
46
|
declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").Struct<{
|
|
13
47
|
ui: import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DateTimePickerProps, "DateTimePicker"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | {
|
|
14
48
|
value: string;
|
|
@@ -21,13 +55,7 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
21
55
|
type: import("@metamask/snaps-sdk").NodeType.Heading;
|
|
22
56
|
} | {
|
|
23
57
|
value: string;
|
|
24
|
-
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
25
|
-
* Validate the createInterface method `params` and returns them cast to the correct
|
|
26
|
-
* type. Throws if validation fails.
|
|
27
|
-
*
|
|
28
|
-
* @param params - The unvalidated params object from the method request.
|
|
29
|
-
* @returns The validated createInterface method parameter object.
|
|
30
|
-
*/
|
|
58
|
+
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
31
59
|
} | {
|
|
32
60
|
type: import("@metamask/snaps-sdk").NodeType.Spinner;
|
|
33
61
|
} | {
|
|
@@ -70,6 +98,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
70
98
|
type: import("@metamask/snaps-sdk").NodeType.Form;
|
|
71
99
|
name: string;
|
|
72
100
|
children: ({
|
|
101
|
+
/**
|
|
102
|
+
* Validate the createInterface method `params` and returns them cast to the correct
|
|
103
|
+
* type. Throws if validation fails.
|
|
104
|
+
*
|
|
105
|
+
* @param params - The unvalidated params object from the method request.
|
|
106
|
+
* @returns The validated createInterface method parameter object.
|
|
107
|
+
*/
|
|
73
108
|
type: import("@metamask/snaps-sdk").NodeType.Input;
|
|
74
109
|
name: string;
|
|
75
110
|
value?: string | undefined;
|
|
@@ -116,13 +151,7 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
116
151
|
type: import("@metamask/snaps-sdk").NodeType.Heading;
|
|
117
152
|
} | {
|
|
118
153
|
value: string;
|
|
119
|
-
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
120
|
-
* Validate the createInterface method `params` and returns them cast to the correct
|
|
121
|
-
* type. Throws if validation fails.
|
|
122
|
-
*
|
|
123
|
-
* @param params - The unvalidated params object from the method request.
|
|
124
|
-
* @returns The validated createInterface method parameter object.
|
|
125
|
-
*/
|
|
154
|
+
type: import("@metamask/snaps-sdk").NodeType.Image;
|
|
126
155
|
} | {
|
|
127
156
|
type: import("@metamask/snaps-sdk").NodeType.Spinner;
|
|
128
157
|
} | {
|
|
@@ -165,6 +194,13 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
165
194
|
type: import("@metamask/snaps-sdk").NodeType.Form;
|
|
166
195
|
name: string;
|
|
167
196
|
children: ({
|
|
197
|
+
/**
|
|
198
|
+
* Validate the createInterface method `params` and returns them cast to the correct
|
|
199
|
+
* type. Throws if validation fails.
|
|
200
|
+
*
|
|
201
|
+
* @param params - The unvalidated params object from the method request.
|
|
202
|
+
* @returns The validated createInterface method parameter object.
|
|
203
|
+
*/
|
|
168
204
|
type: import("@metamask/snaps-sdk").NodeType.Input;
|
|
169
205
|
name: string;
|
|
170
206
|
value?: string | undefined;
|
|
@@ -201,5 +237,20 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
|
|
|
201
237
|
context: import("@metamask/superstruct").Struct<Record<string, import("@metamask/snaps-sdk").Json> | undefined, null>;
|
|
202
238
|
}>;
|
|
203
239
|
export type CreateInterfaceParameters = InferMatching<typeof CreateInterfaceParametersStruct, CreateInterfaceParams>;
|
|
240
|
+
/**
|
|
241
|
+
* The `snap_createInterface` method implementation.
|
|
242
|
+
*
|
|
243
|
+
* @param req - The JSON-RPC request object.
|
|
244
|
+
* @param res - The JSON-RPC response object.
|
|
245
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
246
|
+
* function.
|
|
247
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
248
|
+
* @param hooks - The RPC method hooks.
|
|
249
|
+
* @param hooks.hasPermission - The function to check if the Snap has a given
|
|
250
|
+
* permission.
|
|
251
|
+
* @param hooks.createInterface - The function to create the interface.
|
|
252
|
+
* @returns Nothing.
|
|
253
|
+
*/
|
|
254
|
+
declare function getCreateInterfaceImplementation(req: JsonRpcRequest<CreateInterfaceParameters>, res: PendingJsonRpcResponse<CreateInterfaceResult>, _next: unknown, end: JsonRpcEngineEndCallback, { hasPermission, createInterface }: CreateInterfaceMethodHooks): void;
|
|
204
255
|
export {};
|
|
205
256
|
//# sourceMappingURL=createInterface.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInterface.d.mts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createInterface.d.mts","sourceRoot":"","sources":["../../src/permitted/createInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAG1E,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACZ,4BAA4B;AAK7B,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAUlD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC;IAEnD;;;;;OAKG;IACH,eAAe,EAAE,CACf,EAAE,EAAE,kBAAkB,EACtB,OAAO,CAAC,EAAE,gBAAgB,EAC1B,WAAW,CAAC,EAAE,WAAW,KACtB,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB;;;;CAQlC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsDrC;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YANH;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAzDD,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,OAAO,+BAA+B,EACtC,qBAAqB,CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,iBAAS,gCAAgC,CACvC,GAAG,EAAE,cAAc,CAAC,yBAAyB,CAAC,EAC9C,GAAG,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,0BAA0B,GAC7D,IAAI,CAsBN"}
|
|
@@ -1,11 +1,35 @@
|
|
|
1
|
-
import { rpcErrors } from "@metamask/rpc-errors";
|
|
1
|
+
import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
|
|
2
2
|
import { ComponentOrElementStruct, InterfaceContextStruct } from "@metamask/snaps-sdk";
|
|
3
3
|
import { StructError, create, object, optional } from "@metamask/superstruct";
|
|
4
|
+
import { UI_PERMISSIONS } from "../utils.mjs";
|
|
5
|
+
const methodName = 'snap_createInterface';
|
|
4
6
|
const hookNames = {
|
|
7
|
+
hasPermission: true,
|
|
5
8
|
createInterface: true,
|
|
6
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Create the interactive interface for use in the
|
|
12
|
+
* [interactive UI](https://docs.metamask.io/snaps/features/custom-ui/interactive-ui/).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* import { Box, Heading, Text } from '@metamask/snaps-sdk/jsx';
|
|
17
|
+
*
|
|
18
|
+
* const interfaceId = snap.request({
|
|
19
|
+
* method: 'snap_createInterface',
|
|
20
|
+
* params: {
|
|
21
|
+
* ui: (
|
|
22
|
+
* <Box>
|
|
23
|
+
* <Heading>Example Interface</Heading>
|
|
24
|
+
* <Text>This is an example interface created by "snap_createInterface".</Text>
|
|
25
|
+
* </Box>
|
|
26
|
+
* ),
|
|
27
|
+
* },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
7
31
|
export const createInterfaceHandler = {
|
|
8
|
-
methodNames: [
|
|
32
|
+
methodNames: [methodName],
|
|
9
33
|
implementation: getCreateInterfaceImplementation,
|
|
10
34
|
hookNames,
|
|
11
35
|
};
|
|
@@ -22,10 +46,17 @@ const CreateInterfaceParametersStruct = object({
|
|
|
22
46
|
* function.
|
|
23
47
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
24
48
|
* @param hooks - The RPC method hooks.
|
|
49
|
+
* @param hooks.hasPermission - The function to check if the Snap has a given
|
|
50
|
+
* permission.
|
|
25
51
|
* @param hooks.createInterface - The function to create the interface.
|
|
26
52
|
* @returns Nothing.
|
|
27
53
|
*/
|
|
28
|
-
function getCreateInterfaceImplementation(req, res, _next, end, { createInterface }) {
|
|
54
|
+
function getCreateInterfaceImplementation(req, res, _next, end, { hasPermission, createInterface }) {
|
|
55
|
+
if (!UI_PERMISSIONS.some(hasPermission)) {
|
|
56
|
+
return end(providerErrors.unauthorized({
|
|
57
|
+
message: `This method can only be used if the Snap has one of the following permissions: ${UI_PERMISSIONS.join(', ')}.`,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
29
60
|
const { params } = req;
|
|
30
61
|
try {
|
|
31
62
|
const validatedParams = getValidatedParams(params);
|