@metamask-previews/keyring-snap-sdk 7.0.0-45ee2b8 → 7.0.0-50e2da5

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.
@@ -20,10 +20,9 @@ exports.MethodNotSupportedError = MethodNotSupportedError;
20
20
  *
21
21
  * @param keyring - Keyring instance.
22
22
  * @param request - Keyring JSON-RPC request.
23
- * @param handleBatch - Batched requests handler.
24
23
  * @returns A promise that resolves to the keyring response.
25
24
  */
26
- async function dispatchRequest(keyring, request, handleBatch) {
25
+ async function dispatchRequest(keyring, request) {
27
26
  // We first have to make sure that the request is a valid JSON-RPC request so
28
27
  // we can check its method name.
29
28
  (0, superstruct_1.assert)(request, keyring_utils_1.JsonRpcRequestStruct);
@@ -76,7 +75,7 @@ async function dispatchRequest(keyring, request, handleBatch) {
76
75
  return keyring.resolveAccountAddress(request.params.scope, request.params.request);
77
76
  }
78
77
  case `${keyring_api_1.KeyringRpcMethod.FilterAccountChains}`: {
79
- (0, superstruct_1.assert)(request, keyring_api_1.FilterAccountChainsRequestStruct);
78
+ (0, superstruct_1.assert)(request, keyring_api_1.FilterAccountChainsStruct);
80
79
  return keyring.filterAccountChains(request.params.id, request.params.chains);
81
80
  }
82
81
  case `${keyring_api_1.KeyringRpcMethod.UpdateAccount}`: {
@@ -126,29 +125,6 @@ async function dispatchRequest(keyring, request, handleBatch) {
126
125
  (0, superstruct_1.assert)(request, keyring_api_1.RejectRequestRequestStruct);
127
126
  return keyring.rejectRequest(request.params.id);
128
127
  }
129
- case `${keyring_api_1.KeyringRpcMethod.Batch}`: {
130
- (0, superstruct_1.assert)(request, keyring_api_1.BatchRequestStruct);
131
- if (handleBatch) {
132
- return handleBatch(request);
133
- }
134
- // If there's no custom handler for batched requests, we just fallback by executing them 1
135
- // by 1.
136
- const responses = await Promise.all(request.params.requests.map(async (subRequest) => {
137
- try {
138
- let response = await dispatchRequest(keyring, subRequest);
139
- // For batch responses, we "convert" any `void` return type to null so it can
140
- // be casted to a normal `Json` type.
141
- if (response === undefined) {
142
- response = null;
143
- }
144
- return { response };
145
- }
146
- catch (error) {
147
- return { error: error.message };
148
- }
149
- }));
150
- return responses;
151
- }
152
128
  default: {
153
129
  throw new MethodNotSupportedError(request.method);
154
130
  }
@@ -162,7 +138,6 @@ async function dispatchRequest(keyring, request, handleBatch) {
162
138
  *
163
139
  * @param keyring - Keyring instance.
164
140
  * @param request - Keyring JSON-RPC request.
165
- * @param handleBatch - Batched requests handler.
166
141
  * @returns A promise that resolves to the keyring response.
167
142
  * @example
168
143
  * ```ts
@@ -174,9 +149,9 @@ async function dispatchRequest(keyring, request, handleBatch) {
174
149
  * };
175
150
  * ```
176
151
  */
177
- async function handleKeyringRequest(keyring, request, handleBatch) {
152
+ async function handleKeyringRequest(keyring, request) {
178
153
  try {
179
- return await dispatchRequest(keyring, request, handleBatch);
154
+ return await dispatchRequest(keyring, request);
180
155
  }
181
156
  catch (error) {
182
157
  const message = error instanceof Error && typeof error.message === 'string'
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-handler.cjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Keyring,\n BatchRequest,\n BatchResponse,\n} from '@metamask/keyring-api';\nimport {\n KeyringRpcMethod,\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ListAccountTransactionsRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsRequestStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n ListAccountAssetsRequestStruct,\n ResolveAccountAddressRequestStruct,\n DiscoverAccountsRequestStruct,\n BatchRequestStruct,\n} from '@metamask/keyring-api';\nimport type { JsonRpcRequest } from '@metamask/keyring-utils';\nimport { JsonRpcRequestStruct } from '@metamask/keyring-utils';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @param handleBatch - Batched requests handler.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n handleBatch?: (batched: BatchRequest) => BatchResponse,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.DiscoverAccounts}`: {\n if (keyring.discoverAccounts === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, DiscoverAccountsRequestStruct);\n return keyring.discoverAccounts(\n request.params.scopes,\n request.params.entropySource,\n request.params.groupIndex,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountTransactions}`: {\n if (keyring.listAccountTransactions === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountTransactionsRequestStruct);\n return keyring.listAccountTransactions(\n request.params.id,\n request.params.pagination,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountAssets}`: {\n if (keyring.listAccountAssets === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountAssetsRequestStruct);\n return keyring.listAccountAssets(request.params.id);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.ResolveAccountAddress}`: {\n if (keyring.resolveAccountAddress === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ResolveAccountAddressRequestStruct);\n return keyring.resolveAccountAddress(\n request.params.scope,\n request.params.request,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsRequestStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.Batch}`: {\n assert(request, BatchRequestStruct);\n\n if (handleBatch) {\n return handleBatch(request);\n }\n\n // If there's no custom handler for batched requests, we just fallback by executing them 1\n // by 1.\n const responses: Json = await Promise.all(\n request.params.requests.map(async (subRequest) => {\n try {\n let response = await dispatchRequest(keyring, subRequest);\n\n // For batch responses, we \"convert\" any `void` return type to null so it can\n // be casted to a normal `Json` type.\n if (response === undefined) {\n response = null;\n }\n\n return { response };\n } catch (error) {\n return { error: (error as Error).message };\n }\n }),\n );\n\n return responses;\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @param handleBatch - Batched requests handler.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n handleBatch?: (batched: BatchRequest) => BatchResponse,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request, handleBatch);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
1
+ {"version":3,"file":"rpc-handler.cjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":";;;AAgNA,oDAcC;AA7ND,uDAmB+B;AAE/B,2DAA+D;AAC/D,uDAA+C;AAG/C;;GAEG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,MAAc;QACxB,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AAJD,0DAIC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAC5B,OAAgB,EAChB,OAAuB;IAEvB,6EAA6E;IAC7E,gCAAgC;IAChC,IAAA,oBAAM,EAAC,OAAO,EAAE,oCAAoB,CAAC,CAAC;IAEtC,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,GAAG,8BAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACxC,IAAA,oBAAM,EAAC,OAAO,EAAE,uCAAyB,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACtC,IAAA,oBAAM,EAAC,OAAO,EAAE,qCAAuB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,IAAA,oBAAM,EAAC,OAAO,EAAE,wCAA0B,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC3C,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,2CAA6B,CAAC,CAAC;YAC/C,OAAO,OAAO,CAAC,gBAAgB,CAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EACrB,OAAO,CAAC,MAAM,CAAC,aAAa,EAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,CAC1B,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;gBAClD,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,kDAAoC,CAAC,CAAC;YACtD,OAAO,OAAO,CAAC,uBAAuB,CACpC,OAAO,CAAC,MAAM,CAAC,EAAE,EACjB,OAAO,CAAC,MAAM,CAAC,UAAU,CAC1B,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAC5C,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,4CAA8B,CAAC,CAAC;YAChD,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,6CAA+B,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,kBAAkB,CAC/B,OAAO,CAAC,MAAM,CAAC,EAAE,EACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CACtB,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;gBAChD,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,gDAAkC,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,qBAAqB,CAClC,OAAO,CAAC,MAAM,CAAC,KAAK,EACpB,OAAO,CAAC,MAAM,CAAC,OAAO,CACvB,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAA,oBAAM,EAAC,OAAO,EAAE,uCAAyB,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,mBAAmB,CAChC,OAAO,CAAC,MAAM,CAAC,EAAE,EACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CACtB,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,IAAA,oBAAM,EAAC,OAAO,EAAE,wCAA0B,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,IAAA,oBAAM,EAAC,OAAO,EAAE,wCAA0B,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,wCAA0B,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,uCAAyB,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,qCAAuB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,IAAA,oBAAM,EAAC,OAAO,EAAE,wCAA0B,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACzC,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,yCAA2B,CAAC,CAAC;YAC7C,OAAO,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,GAAG,8BAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,IAAA,oBAAM,EAAC,OAAO,EAAE,wCAA0B,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,oBAAoB,CACxC,OAAgB,EAChB,OAAuB;IAEvB,IAAI,CAAC;QACH,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACzD,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,8DAA8D,CAAC;QAErE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC","sourcesContent":["import type { Keyring } from '@metamask/keyring-api';\nimport {\n KeyringRpcMethod,\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ListAccountTransactionsRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n ListAccountAssetsRequestStruct,\n ResolveAccountAddressRequestStruct,\n DiscoverAccountsRequestStruct,\n} from '@metamask/keyring-api';\nimport type { JsonRpcRequest } from '@metamask/keyring-utils';\nimport { JsonRpcRequestStruct } from '@metamask/keyring-utils';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.DiscoverAccounts}`: {\n if (keyring.discoverAccounts === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, DiscoverAccountsRequestStruct);\n return keyring.discoverAccounts(\n request.params.scopes,\n request.params.entropySource,\n request.params.groupIndex,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountTransactions}`: {\n if (keyring.listAccountTransactions === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountTransactionsRequestStruct);\n return keyring.listAccountTransactions(\n request.params.id,\n request.params.pagination,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountAssets}`: {\n if (keyring.listAccountAssets === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountAssetsRequestStruct);\n return keyring.listAccountAssets(request.params.id);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.ResolveAccountAddress}`: {\n if (keyring.resolveAccountAddress === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ResolveAccountAddressRequestStruct);\n return keyring.resolveAccountAddress(\n request.params.scope,\n request.params.request,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { Keyring, BatchRequest, BatchResponse } from "@metamask/keyring-api";
1
+ import type { Keyring } from "@metamask/keyring-api";
2
2
  import type { JsonRpcRequest } from "@metamask/keyring-utils";
3
3
  import type { Json } from "@metamask/utils";
4
4
  /**
@@ -15,7 +15,6 @@ export declare class MethodNotSupportedError extends Error {
15
15
  *
16
16
  * @param keyring - Keyring instance.
17
17
  * @param request - Keyring JSON-RPC request.
18
- * @param handleBatch - Batched requests handler.
19
18
  * @returns A promise that resolves to the keyring response.
20
19
  * @example
21
20
  * ```ts
@@ -27,5 +26,5 @@ export declare class MethodNotSupportedError extends Error {
27
26
  * };
28
27
  * ```
29
28
  */
30
- export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest, handleBatch?: (batched: BatchRequest) => BatchResponse): Promise<Json | void>;
29
+ export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
31
30
  //# sourceMappingURL=rpc-handler.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-handler.d.cts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,aAAa,EACd,8BAA8B;AAsB/B,OAAO,KAAK,EAAE,cAAc,EAAE,gCAAgC;AAG9D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AA4LD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,aAAa,GACrD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
1
+ {"version":3,"file":"rpc-handler.d.cts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,8BAA8B;AAqBrD,OAAO,KAAK,EAAE,cAAc,EAAE,gCAAgC;AAG9D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AA4JD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
@@ -1,4 +1,4 @@
1
- import type { Keyring, BatchRequest, BatchResponse } from "@metamask/keyring-api";
1
+ import type { Keyring } from "@metamask/keyring-api";
2
2
  import type { JsonRpcRequest } from "@metamask/keyring-utils";
3
3
  import type { Json } from "@metamask/utils";
4
4
  /**
@@ -15,7 +15,6 @@ export declare class MethodNotSupportedError extends Error {
15
15
  *
16
16
  * @param keyring - Keyring instance.
17
17
  * @param request - Keyring JSON-RPC request.
18
- * @param handleBatch - Batched requests handler.
19
18
  * @returns A promise that resolves to the keyring response.
20
19
  * @example
21
20
  * ```ts
@@ -27,5 +26,5 @@ export declare class MethodNotSupportedError extends Error {
27
26
  * };
28
27
  * ```
29
28
  */
30
- export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest, handleBatch?: (batched: BatchRequest) => BatchResponse): Promise<Json | void>;
29
+ export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
31
30
  //# sourceMappingURL=rpc-handler.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-handler.d.mts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,aAAa,EACd,8BAA8B;AAsB/B,OAAO,KAAK,EAAE,cAAc,EAAE,gCAAgC;AAG9D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AA4LD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,aAAa,GACrD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
1
+ {"version":3,"file":"rpc-handler.d.mts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,8BAA8B;AAqBrD,OAAO,KAAK,EAAE,cAAc,EAAE,gCAAgC;AAG9D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AA4JD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
@@ -1,4 +1,4 @@
1
- import { KeyringRpcMethod, GetAccountRequestStruct, CreateAccountRequestStruct, ListAccountTransactionsRequestStruct, ApproveRequestRequestStruct, DeleteAccountRequestStruct, ExportAccountRequestStruct, GetRequestRequestStruct, RejectRequestRequestStruct, SubmitRequestRequestStruct, UpdateAccountRequestStruct, FilterAccountChainsRequestStruct, ListAccountsRequestStruct, ListRequestsRequestStruct, GetAccountBalancesRequestStruct, ListAccountAssetsRequestStruct, ResolveAccountAddressRequestStruct, DiscoverAccountsRequestStruct, BatchRequestStruct } from "@metamask/keyring-api";
1
+ import { KeyringRpcMethod, GetAccountRequestStruct, CreateAccountRequestStruct, ListAccountTransactionsRequestStruct, ApproveRequestRequestStruct, DeleteAccountRequestStruct, ExportAccountRequestStruct, GetRequestRequestStruct, RejectRequestRequestStruct, SubmitRequestRequestStruct, UpdateAccountRequestStruct, FilterAccountChainsStruct, ListAccountsRequestStruct, ListRequestsRequestStruct, GetAccountBalancesRequestStruct, ListAccountAssetsRequestStruct, ResolveAccountAddressRequestStruct, DiscoverAccountsRequestStruct } from "@metamask/keyring-api";
2
2
  import { JsonRpcRequestStruct } from "@metamask/keyring-utils";
3
3
  import { assert } from "@metamask/superstruct";
4
4
  /**
@@ -15,10 +15,9 @@ export class MethodNotSupportedError extends Error {
15
15
  *
16
16
  * @param keyring - Keyring instance.
17
17
  * @param request - Keyring JSON-RPC request.
18
- * @param handleBatch - Batched requests handler.
19
18
  * @returns A promise that resolves to the keyring response.
20
19
  */
21
- async function dispatchRequest(keyring, request, handleBatch) {
20
+ async function dispatchRequest(keyring, request) {
22
21
  // We first have to make sure that the request is a valid JSON-RPC request so
23
22
  // we can check its method name.
24
23
  assert(request, JsonRpcRequestStruct);
@@ -71,7 +70,7 @@ async function dispatchRequest(keyring, request, handleBatch) {
71
70
  return keyring.resolveAccountAddress(request.params.scope, request.params.request);
72
71
  }
73
72
  case `${KeyringRpcMethod.FilterAccountChains}`: {
74
- assert(request, FilterAccountChainsRequestStruct);
73
+ assert(request, FilterAccountChainsStruct);
75
74
  return keyring.filterAccountChains(request.params.id, request.params.chains);
76
75
  }
77
76
  case `${KeyringRpcMethod.UpdateAccount}`: {
@@ -121,29 +120,6 @@ async function dispatchRequest(keyring, request, handleBatch) {
121
120
  assert(request, RejectRequestRequestStruct);
122
121
  return keyring.rejectRequest(request.params.id);
123
122
  }
124
- case `${KeyringRpcMethod.Batch}`: {
125
- assert(request, BatchRequestStruct);
126
- if (handleBatch) {
127
- return handleBatch(request);
128
- }
129
- // If there's no custom handler for batched requests, we just fallback by executing them 1
130
- // by 1.
131
- const responses = await Promise.all(request.params.requests.map(async (subRequest) => {
132
- try {
133
- let response = await dispatchRequest(keyring, subRequest);
134
- // For batch responses, we "convert" any `void` return type to null so it can
135
- // be casted to a normal `Json` type.
136
- if (response === undefined) {
137
- response = null;
138
- }
139
- return { response };
140
- }
141
- catch (error) {
142
- return { error: error.message };
143
- }
144
- }));
145
- return responses;
146
- }
147
123
  default: {
148
124
  throw new MethodNotSupportedError(request.method);
149
125
  }
@@ -157,7 +133,6 @@ async function dispatchRequest(keyring, request, handleBatch) {
157
133
  *
158
134
  * @param keyring - Keyring instance.
159
135
  * @param request - Keyring JSON-RPC request.
160
- * @param handleBatch - Batched requests handler.
161
136
  * @returns A promise that resolves to the keyring response.
162
137
  * @example
163
138
  * ```ts
@@ -169,9 +144,9 @@ async function dispatchRequest(keyring, request, handleBatch) {
169
144
  * };
170
145
  * ```
171
146
  */
172
- export async function handleKeyringRequest(keyring, request, handleBatch) {
147
+ export async function handleKeyringRequest(keyring, request) {
173
148
  try {
174
- return await dispatchRequest(keyring, request, handleBatch);
149
+ return await dispatchRequest(keyring, request);
175
150
  }
176
151
  catch (error) {
177
152
  const message = error instanceof Error && typeof error.message === 'string'
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-handler.mjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Keyring,\n BatchRequest,\n BatchResponse,\n} from '@metamask/keyring-api';\nimport {\n KeyringRpcMethod,\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ListAccountTransactionsRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsRequestStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n ListAccountAssetsRequestStruct,\n ResolveAccountAddressRequestStruct,\n DiscoverAccountsRequestStruct,\n BatchRequestStruct,\n} from '@metamask/keyring-api';\nimport type { JsonRpcRequest } from '@metamask/keyring-utils';\nimport { JsonRpcRequestStruct } from '@metamask/keyring-utils';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @param handleBatch - Batched requests handler.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n handleBatch?: (batched: BatchRequest) => BatchResponse,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.DiscoverAccounts}`: {\n if (keyring.discoverAccounts === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, DiscoverAccountsRequestStruct);\n return keyring.discoverAccounts(\n request.params.scopes,\n request.params.entropySource,\n request.params.groupIndex,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountTransactions}`: {\n if (keyring.listAccountTransactions === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountTransactionsRequestStruct);\n return keyring.listAccountTransactions(\n request.params.id,\n request.params.pagination,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountAssets}`: {\n if (keyring.listAccountAssets === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountAssetsRequestStruct);\n return keyring.listAccountAssets(request.params.id);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.ResolveAccountAddress}`: {\n if (keyring.resolveAccountAddress === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ResolveAccountAddressRequestStruct);\n return keyring.resolveAccountAddress(\n request.params.scope,\n request.params.request,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsRequestStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.Batch}`: {\n assert(request, BatchRequestStruct);\n\n if (handleBatch) {\n return handleBatch(request);\n }\n\n // If there's no custom handler for batched requests, we just fallback by executing them 1\n // by 1.\n const responses: Json = await Promise.all(\n request.params.requests.map(async (subRequest) => {\n try {\n let response = await dispatchRequest(keyring, subRequest);\n\n // For batch responses, we \"convert\" any `void` return type to null so it can\n // be casted to a normal `Json` type.\n if (response === undefined) {\n response = null;\n }\n\n return { response };\n } catch (error) {\n return { error: (error as Error).message };\n }\n }),\n );\n\n return responses;\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @param handleBatch - Batched requests handler.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n handleBatch?: (batched: BatchRequest) => BatchResponse,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request, handleBatch);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
1
+ {"version":3,"file":"rpc-handler.mjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Keyring } from '@metamask/keyring-api';\nimport {\n KeyringRpcMethod,\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ListAccountTransactionsRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n ListAccountAssetsRequestStruct,\n ResolveAccountAddressRequestStruct,\n DiscoverAccountsRequestStruct,\n} from '@metamask/keyring-api';\nimport type { JsonRpcRequest } from '@metamask/keyring-utils';\nimport { JsonRpcRequestStruct } from '@metamask/keyring-utils';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.DiscoverAccounts}`: {\n if (keyring.discoverAccounts === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, DiscoverAccountsRequestStruct);\n return keyring.discoverAccounts(\n request.params.scopes,\n request.params.entropySource,\n request.params.groupIndex,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountTransactions}`: {\n if (keyring.listAccountTransactions === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountTransactionsRequestStruct);\n return keyring.listAccountTransactions(\n request.params.id,\n request.params.pagination,\n );\n }\n\n case `${KeyringRpcMethod.ListAccountAssets}`: {\n if (keyring.listAccountAssets === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListAccountAssetsRequestStruct);\n return keyring.listAccountAssets(request.params.id);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.ResolveAccountAddress}`: {\n if (keyring.resolveAccountAddress === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ResolveAccountAddressRequestStruct);\n return keyring.resolveAccountAddress(\n request.params.scope,\n request.params.request,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emitSnapKeyringEvent = emitSnapKeyringEvent;
4
+ exports.getSelectedAccounts = getSelectedAccounts;
5
+ const keyring_api_1 = require("@metamask/keyring-api");
6
+ const superstruct_1 = require("@metamask/superstruct");
4
7
  /**
5
8
  * Emit a keyring event from a snap.
6
9
  *
@@ -17,4 +20,20 @@ async function emitSnapKeyringEvent(snap, event, data) {
17
20
  },
18
21
  });
19
22
  }
23
+ /**
24
+ * Get the selected accounts from a snap.
25
+ *
26
+ * @param snap - The global snap object.
27
+ * @returns The selected accounts.
28
+ */
29
+ async function getSelectedAccounts(snap) {
30
+ const response = await snap.request({
31
+ method: 'snap_manageAccounts',
32
+ params: {
33
+ method: keyring_api_1.KeyringMethod.GetSelectedAccounts,
34
+ },
35
+ });
36
+ (0, superstruct_1.assert)(response, keyring_api_1.GetSelectedAccountsReponseStruct);
37
+ return response;
38
+ }
20
39
  //# sourceMappingURL=snap-utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"snap-utils.cjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":";;AAUA,oDAYC;AAnBD;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAY,EACZ,IAAgC;IAEhC,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { KeyringEvent, KeyringEventPayload } from '@metamask/keyring-api';\nimport type { SnapsProvider } from '@metamask/snaps-sdk';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent<Event extends KeyringEvent>(\n snap: SnapsProvider,\n event: Event,\n data: KeyringEventPayload<Event>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
1
+ {"version":3,"file":"snap-utils.cjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":";;AAiBA,oDAYC;AAQD,kDAWC;AAhDD,uDAM+B;AAE/B,uDAA+C;AAE/C;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAY,EACZ,IAAgC;IAEhC,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,2BAAa,CAAC,mBAAmB;SAC1C;KACF,CAAC,CAAC;IACH,IAAA,oBAAM,EAAC,QAAQ,EAAE,8CAAgC,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import {\n GetSelectedAccountsReponseStruct,\n KeyringMethod,\n type KeyringEvent,\n type KeyringEventPayload,\n type GetSelectedAccountsResponse,\n} from '@metamask/keyring-api';\nimport type { SnapsProvider } from '@metamask/snaps-sdk';\nimport { assert } from '@metamask/superstruct';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent<Event extends KeyringEvent>(\n snap: SnapsProvider,\n event: Event,\n data: KeyringEventPayload<Event>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n\n/**\n * Get the selected accounts from a snap.\n *\n * @param snap - The global snap object.\n * @returns The selected accounts.\n */\nexport async function getSelectedAccounts(\n snap: SnapsProvider,\n): Promise<GetSelectedAccountsResponse> {\n const response = await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: KeyringMethod.GetSelectedAccounts,\n },\n });\n assert(response, GetSelectedAccountsReponseStruct);\n return response;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { KeyringEvent, KeyringEventPayload } from "@metamask/keyring-api";
1
+ import { type KeyringEvent, type KeyringEventPayload, type GetSelectedAccountsResponse } from "@metamask/keyring-api";
2
2
  import type { SnapsProvider } from "@metamask/snaps-sdk";
3
3
  /**
4
4
  * Emit a keyring event from a snap.
@@ -8,4 +8,11 @@ import type { SnapsProvider } from "@metamask/snaps-sdk";
8
8
  * @param data - The event data.
9
9
  */
10
10
  export declare function emitSnapKeyringEvent<Event extends KeyringEvent>(snap: SnapsProvider, event: Event, data: KeyringEventPayload<Event>): Promise<void>;
11
+ /**
12
+ * Get the selected accounts from a snap.
13
+ *
14
+ * @param snap - The global snap object.
15
+ * @returns The selected accounts.
16
+ */
17
+ export declare function getSelectedAccounts(snap: SnapsProvider): Promise<GetSelectedAccountsResponse>;
11
18
  //# sourceMappingURL=snap-utils.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snap-utils.d.cts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,8BAA8B;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AAEzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,SAAS,YAAY,EACnE,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf"}
1
+ {"version":3,"file":"snap-utils.d.cts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EACjC,8BAA8B;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AAGzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,SAAS,YAAY,EACnE,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,2BAA2B,CAAC,CAStC"}
@@ -1,4 +1,4 @@
1
- import type { KeyringEvent, KeyringEventPayload } from "@metamask/keyring-api";
1
+ import { type KeyringEvent, type KeyringEventPayload, type GetSelectedAccountsResponse } from "@metamask/keyring-api";
2
2
  import type { SnapsProvider } from "@metamask/snaps-sdk";
3
3
  /**
4
4
  * Emit a keyring event from a snap.
@@ -8,4 +8,11 @@ import type { SnapsProvider } from "@metamask/snaps-sdk";
8
8
  * @param data - The event data.
9
9
  */
10
10
  export declare function emitSnapKeyringEvent<Event extends KeyringEvent>(snap: SnapsProvider, event: Event, data: KeyringEventPayload<Event>): Promise<void>;
11
+ /**
12
+ * Get the selected accounts from a snap.
13
+ *
14
+ * @param snap - The global snap object.
15
+ * @returns The selected accounts.
16
+ */
17
+ export declare function getSelectedAccounts(snap: SnapsProvider): Promise<GetSelectedAccountsResponse>;
11
18
  //# sourceMappingURL=snap-utils.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snap-utils.d.mts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,8BAA8B;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AAEzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,SAAS,YAAY,EACnE,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf"}
1
+ {"version":3,"file":"snap-utils.d.mts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EACjC,8BAA8B;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AAGzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,SAAS,YAAY,EACnE,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,2BAA2B,CAAC,CAStC"}
@@ -1,3 +1,5 @@
1
+ import { GetSelectedAccountsReponseStruct, KeyringMethod } from "@metamask/keyring-api";
2
+ import { assert } from "@metamask/superstruct";
1
3
  /**
2
4
  * Emit a keyring event from a snap.
3
5
  *
@@ -14,4 +16,20 @@ export async function emitSnapKeyringEvent(snap, event, data) {
14
16
  },
15
17
  });
16
18
  }
19
+ /**
20
+ * Get the selected accounts from a snap.
21
+ *
22
+ * @param snap - The global snap object.
23
+ * @returns The selected accounts.
24
+ */
25
+ export async function getSelectedAccounts(snap) {
26
+ const response = await snap.request({
27
+ method: 'snap_manageAccounts',
28
+ params: {
29
+ method: KeyringMethod.GetSelectedAccounts,
30
+ },
31
+ });
32
+ assert(response, GetSelectedAccountsReponseStruct);
33
+ return response;
34
+ }
17
35
  //# sourceMappingURL=snap-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"snap-utils.mjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAY,EACZ,IAAgC;IAEhC,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { KeyringEvent, KeyringEventPayload } from '@metamask/keyring-api';\nimport type { SnapsProvider } from '@metamask/snaps-sdk';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent<Event extends KeyringEvent>(\n snap: SnapsProvider,\n event: Event,\n data: KeyringEventPayload<Event>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
1
+ {"version":3,"file":"snap-utils.mjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,aAAa,EAId,8BAA8B;AAE/B,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAY,EACZ,IAAgC;IAEhC,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,aAAa,CAAC,mBAAmB;SAC1C;KACF,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import {\n GetSelectedAccountsReponseStruct,\n KeyringMethod,\n type KeyringEvent,\n type KeyringEventPayload,\n type GetSelectedAccountsResponse,\n} from '@metamask/keyring-api';\nimport type { SnapsProvider } from '@metamask/snaps-sdk';\nimport { assert } from '@metamask/superstruct';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent<Event extends KeyringEvent>(\n snap: SnapsProvider,\n event: Event,\n data: KeyringEventPayload<Event>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n\n/**\n * Get the selected accounts from a snap.\n *\n * @param snap - The global snap object.\n * @returns The selected accounts.\n */\nexport async function getSelectedAccounts(\n snap: SnapsProvider,\n): Promise<GetSelectedAccountsResponse> {\n const response = await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: KeyringMethod.GetSelectedAccounts,\n },\n });\n assert(response, GetSelectedAccountsReponseStruct);\n return response;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/keyring-snap-sdk",
3
- "version": "7.0.0-45ee2b8",
3
+ "version": "7.0.0-50e2da5",
4
4
  "description": "MetaMask Keyring Snap SDK",
5
5
  "keywords": [
6
6
  "metamask",