@metamask/keyring-api 0.2.4 → 0.2.6
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 +16 -1
- package/dist/api.d.ts +2 -4
- package/dist/api.js +0 -2
- package/dist/api.js.map +1 -1
- package/dist/internal/api.d.ts +11 -15
- package/dist/internal/events.d.ts +8 -10
- package/dist/internal/types.d.ts +2 -3
- package/dist/rpc-handler.d.ts +7 -14
- package/dist/rpc-handler.js +11 -30
- package/dist/rpc-handler.js.map +1 -1
- package/package.json +7 -13
package/CHANGELOG.md
CHANGED
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [0.2.6]
|
10
|
+
### Changed
|
11
|
+
- Remove unused lavamoat allowed scripts ([#122](https://github.com/MetaMask/keyring-api/pull/122)).
|
12
|
+
- Update events in sequence diagram ([#121](https://github.com/MetaMask/keyring-api/pull/121)).
|
13
|
+
- Update Snap and ESLint dependencies ([#117](https://github.com/MetaMask/keyring-api/pull/117)).
|
14
|
+
- Bump @metamask/rpc-methods from 0.38.1-flask.1 to 2.0.0 ([#120](https://github.com/MetaMask/keyring-api/pull/120)).
|
15
|
+
|
16
|
+
## [0.2.5]
|
17
|
+
### Changed
|
18
|
+
- Remove `buildHandlersChain` ([#114](https://github.com/MetaMask/keyring-api/pull/114)).
|
19
|
+
- Update doc for `eth_signTransaction` ([#111](https://github.com/MetaMask/keyring-api/pull/111)).
|
20
|
+
- Remove un-versioned `eth_signTypedData` method ([#113](https://github.com/MetaMask/keyring-api/pull/113)).
|
21
|
+
|
9
22
|
## [0.2.4]
|
10
23
|
### Changed
|
11
24
|
- Fix linting and compatibility with older `tsc` ([#108](https://github.com/MetaMask/keyring-api/pull/108)).
|
@@ -79,7 +92,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
79
92
|
- SnapController keyring client. It is intended to be used by MetaMask to talk to the snap.
|
80
93
|
- Helper functions to create keyring handler in the snap.
|
81
94
|
|
82
|
-
[Unreleased]: https://github.com/MetaMask/keyring-api/compare/v0.2.
|
95
|
+
[Unreleased]: https://github.com/MetaMask/keyring-api/compare/v0.2.6...HEAD
|
96
|
+
[0.2.6]: https://github.com/MetaMask/keyring-api/compare/v0.2.5...v0.2.6
|
97
|
+
[0.2.5]: https://github.com/MetaMask/keyring-api/compare/v0.2.4...v0.2.5
|
83
98
|
[0.2.4]: https://github.com/MetaMask/keyring-api/compare/v0.2.3...v0.2.4
|
84
99
|
[0.2.3]: https://github.com/MetaMask/keyring-api/compare/v0.2.2...v0.2.3
|
85
100
|
[0.2.2]: https://github.com/MetaMask/keyring-api/compare/v0.2.1...v0.2.2
|
package/dist/api.d.ts
CHANGED
@@ -7,7 +7,6 @@ export declare enum EthMethod {
|
|
7
7
|
PersonalSign = "personal_sign",
|
8
8
|
Sign = "eth_sign",
|
9
9
|
SignTransaction = "eth_signTransaction",
|
10
|
-
SignTypedData = "eth_signTypedData",
|
11
10
|
SignTypedDataV1 = "eth_signTypedData_v1",
|
12
11
|
SignTypedDataV3 = "eth_signTypedData_v3",
|
13
12
|
SignTypedDataV4 = "eth_signTypedData_v4"
|
@@ -24,7 +23,7 @@ export declare const KeyringAccountStruct: import("superstruct").Struct<{
|
|
24
23
|
id: string;
|
25
24
|
address: string;
|
26
25
|
options: Record<string, Json>;
|
27
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
26
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
28
27
|
}, {
|
29
28
|
/**
|
30
29
|
* Account ID (UUIDv4).
|
@@ -41,11 +40,10 @@ export declare const KeyringAccountStruct: import("superstruct").Struct<{
|
|
41
40
|
/**
|
42
41
|
* Account supported methods.
|
43
42
|
*/
|
44
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
43
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
45
44
|
personal_sign: "personal_sign";
|
46
45
|
eth_sign: "eth_sign";
|
47
46
|
eth_signTransaction: "eth_signTransaction";
|
48
|
-
eth_signTypedData: "eth_signTypedData";
|
49
47
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
50
48
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
51
49
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
package/dist/api.js
CHANGED
@@ -13,7 +13,6 @@ var EthMethod;
|
|
13
13
|
EthMethod["PersonalSign"] = "personal_sign";
|
14
14
|
EthMethod["Sign"] = "eth_sign";
|
15
15
|
EthMethod["SignTransaction"] = "eth_signTransaction";
|
16
|
-
EthMethod["SignTypedData"] = "eth_signTypedData";
|
17
16
|
EthMethod["SignTypedDataV1"] = "eth_signTypedData_v1";
|
18
17
|
EthMethod["SignTypedDataV3"] = "eth_signTypedData_v3";
|
19
18
|
EthMethod["SignTypedDataV4"] = "eth_signTypedData_v4";
|
@@ -46,7 +45,6 @@ exports.KeyringAccountStruct = (0, superstruct_2.object)({
|
|
46
45
|
`${EthMethod.PersonalSign}`,
|
47
46
|
`${EthMethod.Sign}`,
|
48
47
|
`${EthMethod.SignTransaction}`,
|
49
|
-
`${EthMethod.SignTypedData}`,
|
50
48
|
`${EthMethod.SignTypedDataV1}`,
|
51
49
|
`${EthMethod.SignTypedDataV3}`,
|
52
50
|
`${EthMethod.SignTypedDataV4}`,
|
package/dist/api.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AACA,2CAA6C;AAE7C,6CAA2E;AAE3E,+CAAsD;AACtD,mCAAqC;AAErC;;GAEG;AACH,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,2CAA8B,CAAA;IAC9B,8BAAiB,CAAA;IACjB,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;AAC1C,CAAC,EARW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAQpB;AAED;;GAEG;AACH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,oCAAkB,CAAA;IAClB,4CAA0B,CAAA;AAC5B,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAEY,QAAA,oBAAoB,GAAG,IAAA,oBAAM,EAAC;IACzC;;OAEG;IACH,EAAE,EAAE,kBAAU;IAEd;;OAEG;IACH,OAAO,EAAE,IAAA,oBAAM,GAAE;IAEjB;;OAEG;IACH,OAAO,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC;IAErC;;OAEG;IACH,OAAO,EAAE,IAAA,mBAAK,EACZ,IAAA,mBAAK,EAAC;QACJ,GAAG,SAAS,CAAC,YAAY,EAAE;QAC3B,GAAG,SAAS,CAAC,IAAI,EAAE;QACnB,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,aAAa,EAAE;QAC5B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;KAC/B,CAAC,CACH;IAED;;OAEG;IACH,IAAI,EAAE,IAAA,mBAAK,EAAC,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;CACpE,CAAC,CAAC;AASU,QAAA,oBAAoB,GAAG,IAAA,oBAAM,EAAC;IACzC;;OAEG;IACH,EAAE,EAAE,kBAAU;IAEd;;OAEG;IACH,KAAK,EAAE,IAAA,oBAAM,GAAE;IAEf;;OAEG;IACH,OAAO,EAAE,kBAAU;IAEnB;;OAEG;IACH,OAAO,EAAE,IAAA,oBAAM,EAAC;QACd,MAAM,EAAE,IAAA,oBAAM,GAAE;QAChB,MAAM,EAAE,IAAA,2BAAa,EACnB,IAAA,mBAAK,EAAC,CAAC,IAAA,mBAAK,EAAC,kBAAU,CAAC,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC,CAAC,CACzD;KACF,CAAC;CACH,CAAC,CAAC;AASU,QAAA,wBAAwB,GAAG,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC;AASxD,QAAA,qBAAqB,GAAG,IAAA,mBAAK,EAAC;IACzC,IAAA,oBAAM,EAAC;QACL;;;;;;WAMG;QACH,OAAO,EAAE,IAAA,qBAAO,EAAC,IAAI,CAAC;QAEtB;;;;;;WAMG;QACH,QAAQ,EAAE,IAAA,2BAAa,EACrB,IAAA,oBAAM,EAAC;YACL,OAAO,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;YAChC,GAAG,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;SAC7B,CAAC,CACH;KACF,CAAC;IACF,IAAA,oBAAM,EAAC;QACL;;;;;;WAMG;QACH,OAAO,EAAE,IAAA,qBAAO,EAAC,KAAK,CAAC;QAEvB;;WAEG;QACH,MAAM,EAAE,kBAAU;KACnB,CAAC;CACH,CAAC,CAAC","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\nimport type { Infer } from 'superstruct';\nimport { array, enums, literal, record, string, union } from 'superstruct';\n\nimport { exactOptional, object } from './superstruct';\nimport { UuidStruct } from './utils';\n\n/**\n * Supported Ethereum methods.\n */\nexport enum EthMethod {\n PersonalSign = 'personal_sign',\n Sign = 'eth_sign',\n SignTransaction = 'eth_signTransaction',\n SignTypedData = 'eth_signTypedData',\n SignTypedDataV1 = 'eth_signTypedData_v1',\n SignTypedDataV3 = 'eth_signTypedData_v3',\n SignTypedDataV4 = 'eth_signTypedData_v4',\n}\n\n/**\n * Supported Ethereum account types.\n */\nexport enum EthAccountType {\n Eoa = 'eip155:eoa',\n Eip4337 = 'eip155:eip4337',\n}\n\nexport const KeyringAccountStruct = object({\n /**\n * Account ID (UUIDv4).\n */\n id: UuidStruct,\n\n /**\n * Account address or next receive address (UTXO).\n */\n address: string(),\n\n /**\n * Keyring-dependent account options.\n */\n options: record(string(), JsonStruct),\n\n /**\n * Account supported methods.\n */\n methods: array(\n enums([\n `${EthMethod.PersonalSign}`,\n `${EthMethod.Sign}`,\n `${EthMethod.SignTransaction}`,\n `${EthMethod.SignTypedData}`,\n `${EthMethod.SignTypedDataV1}`,\n `${EthMethod.SignTypedDataV3}`,\n `${EthMethod.SignTypedDataV4}`,\n ]),\n ),\n\n /**\n * Account type.\n */\n type: enums([`${EthAccountType.Eoa}`, `${EthAccountType.Eip4337}`]),\n});\n\n/**\n * Account object.\n *\n * Represents an account with its properties and capabilities.\n */\nexport type KeyringAccount = Infer<typeof KeyringAccountStruct>;\n\nexport const KeyringRequestStruct = object({\n /**\n * Keyring request ID (UUIDv4).\n */\n id: UuidStruct,\n\n /**\n * Request's scope (CAIP-2 chain ID).\n */\n scope: string(),\n\n /**\n * Account ID (UUIDv4).\n */\n account: UuidStruct,\n\n /**\n * Inner request sent by the client application.\n */\n request: object({\n method: string(),\n params: exactOptional(\n union([array(JsonStruct), record(string(), JsonStruct)]),\n ),\n }),\n});\n\n/**\n * Keyring request.\n *\n * Represents a request made to the keyring for account-related operations.\n */\nexport type KeyringRequest = Infer<typeof KeyringRequestStruct>;\n\nexport const KeyringAccountDataStruct = record(string(), JsonStruct);\n\n/**\n * Response to a call to `exportAccount`.\n *\n * The exact response depends on the keyring implementation.\n */\nexport type KeyringAccountData = Infer<typeof KeyringAccountDataStruct>;\n\nexport const KeyringResponseStruct = union([\n object({\n /**\n * Pending flag.\n *\n * Setting the pending flag to true indicates that the request will be\n * handled asynchronously. The keyring must be called with `approveRequest`\n * or `rejectRequest` to resolve the request.\n */\n pending: literal(true),\n\n /**\n * Redirect URL.\n *\n * If present in the response, MetaMask will display a confirmation dialog\n * with a link to the redirect URL. The user can choose to follow the link\n * or cancel the request.\n */\n redirect: exactOptional(\n object({\n message: exactOptional(string()),\n url: exactOptional(string()),\n }),\n ),\n }),\n object({\n /**\n * Pending flag.\n *\n * Setting the pending flag to false indicates that the request will be\n * handled synchronously. The keyring must return the result of the\n * request execution.\n */\n pending: literal(false),\n\n /**\n * Request result.\n */\n result: JsonStruct,\n }),\n]);\n\n/**\n * Response to a call to `submitRequest`.\n *\n * Keyring implementations must return a response with `pending: true` if the\n * request will be handled asynchronously. Otherwise, the response must contain\n * the result of the request and `pending: false`.\n *\n * In the asynchronous case, the keyring can return a redirect URL and message\n * to be shown to the user. The user can choose to follow the link or cancel\n * the request. The main use case for this is to redirect the user to the snap\n * dapp to review the request.\n */\nexport type KeyringResponse = Infer<typeof KeyringResponseStruct>;\n\n/**\n * Keyring interface.\n *\n * Represents the functionality and operations related to managing accounts and\n * handling requests.\n */\nexport type Keyring = {\n /**\n * List accounts.\n *\n * Retrieves an array of KeyringAccount objects representing the available\n * accounts.\n *\n * @returns A promise that resolves to an array of KeyringAccount objects.\n */\n listAccounts(): Promise<KeyringAccount[]>;\n\n /**\n * Get an account.\n *\n * Retrieves the KeyringAccount object for the given account ID.\n *\n * @param id - The ID of the account to retrieve.\n * @returns A promise that resolves to the KeyringAccount object if found, or\n * undefined otherwise.\n */\n getAccount(id: string): Promise<KeyringAccount | undefined>;\n\n /**\n * Create an account.\n *\n * Creates a new account with optional, keyring-defined, account options.\n *\n * @param options - Keyring-defined options for the account (optional).\n * @returns A promise that resolves to the newly created KeyringAccount\n * object without any private information.\n */\n createAccount(options?: Record<string, Json>): Promise<KeyringAccount>;\n\n /**\n * Filter supported chains for a given account.\n *\n * @param id - ID of the account to be checked.\n * @param chains - List of chains (CAIP-2) to be checked.\n * @returns A Promise that resolves to a filtered list of CAIP-2 IDs\n * representing the supported chains.\n */\n filterAccountChains(id: string, chains: string[]): Promise<string[]>;\n\n /**\n * Update an account.\n *\n * Updates the account with the given account object. Does nothing if the\n * account does not exist.\n *\n * @param account - The updated account object.\n * @returns A promise that resolves when the account is successfully updated.\n */\n updateAccount(account: KeyringAccount): Promise<void>;\n\n /**\n * Delete an account from the keyring.\n *\n * Deletes the account with the given ID from the keyring.\n *\n * @param id - The ID of the account to delete.\n * @returns A promise that resolves when the account is successfully deleted.\n */\n deleteAccount(id: string): Promise<void>;\n\n /**\n * Exports an account's private key.\n *\n * If the keyring cannot export a private key, this function should throw an\n * error.\n *\n * @param id - The ID of the account to export.\n * @returns A promise that resolves to the exported account.\n */\n exportAccount?(id: string): Promise<KeyringAccountData>;\n\n /**\n * List all submitted requests.\n *\n * Retrieves an array of KeyringRequest objects representing the submitted\n * requests.\n *\n * @returns A promise that resolves to an array of KeyringRequest objects.\n */\n listRequests?(): Promise<KeyringRequest[]>;\n\n /**\n * Get a request.\n *\n * Retrieves the KeyringRequest object for the given request ID.\n *\n * @param id - The ID of the request to retrieve.\n * @returns A promise that resolves to the KeyringRequest object if found, or\n * undefined otherwise.\n */\n getRequest?(id: string): Promise<KeyringRequest | undefined>;\n\n /**\n * Submit a request.\n *\n * Submits the given KeyringRequest object.\n *\n * @param request - The KeyringRequest object to submit.\n * @returns A promise that resolves to the request response.\n */\n submitRequest(request: KeyringRequest): Promise<KeyringResponse>;\n\n /**\n * Approve a request.\n *\n * Approves the request with the given ID and sets the response if provided.\n *\n * @param id - The ID of the request to approve.\n * @param data - The response to the request (optional).\n * @returns A promise that resolves when the request is successfully\n * approved.\n */\n approveRequest?(id: string, data?: Record<string, Json>): Promise<void>;\n\n /**\n * Reject a request.\n *\n * Rejects the request with the given ID.\n *\n * @param id - The ID of the request to reject.\n * @returns A promise that resolves when the request is successfully\n * rejected.\n */\n rejectRequest?(id: string): Promise<void>;\n};\n"]}
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AACA,2CAA6C;AAE7C,6CAA2E;AAE3E,+CAAsD;AACtD,mCAAqC;AAErC;;GAEG;AACH,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,2CAA8B,CAAA;IAC9B,8BAAiB,CAAA;IACjB,oDAAuC,CAAA;IACvC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;AAC1C,CAAC,EAPW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAOpB;AAED;;GAEG;AACH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,oCAAkB,CAAA;IAClB,4CAA0B,CAAA;AAC5B,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAEY,QAAA,oBAAoB,GAAG,IAAA,oBAAM,EAAC;IACzC;;OAEG;IACH,EAAE,EAAE,kBAAU;IAEd;;OAEG;IACH,OAAO,EAAE,IAAA,oBAAM,GAAE;IAEjB;;OAEG;IACH,OAAO,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC;IAErC;;OAEG;IACH,OAAO,EAAE,IAAA,mBAAK,EACZ,IAAA,mBAAK,EAAC;QACJ,GAAG,SAAS,CAAC,YAAY,EAAE;QAC3B,GAAG,SAAS,CAAC,IAAI,EAAE;QACnB,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;QAC9B,GAAG,SAAS,CAAC,eAAe,EAAE;KAC/B,CAAC,CACH;IAED;;OAEG;IACH,IAAI,EAAE,IAAA,mBAAK,EAAC,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;CACpE,CAAC,CAAC;AASU,QAAA,oBAAoB,GAAG,IAAA,oBAAM,EAAC;IACzC;;OAEG;IACH,EAAE,EAAE,kBAAU;IAEd;;OAEG;IACH,KAAK,EAAE,IAAA,oBAAM,GAAE;IAEf;;OAEG;IACH,OAAO,EAAE,kBAAU;IAEnB;;OAEG;IACH,OAAO,EAAE,IAAA,oBAAM,EAAC;QACd,MAAM,EAAE,IAAA,oBAAM,GAAE;QAChB,MAAM,EAAE,IAAA,2BAAa,EACnB,IAAA,mBAAK,EAAC,CAAC,IAAA,mBAAK,EAAC,kBAAU,CAAC,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC,CAAC,CACzD;KACF,CAAC;CACH,CAAC,CAAC;AASU,QAAA,wBAAwB,GAAG,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC;AASxD,QAAA,qBAAqB,GAAG,IAAA,mBAAK,EAAC;IACzC,IAAA,oBAAM,EAAC;QACL;;;;;;WAMG;QACH,OAAO,EAAE,IAAA,qBAAO,EAAC,IAAI,CAAC;QAEtB;;;;;;WAMG;QACH,QAAQ,EAAE,IAAA,2BAAa,EACrB,IAAA,oBAAM,EAAC;YACL,OAAO,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;YAChC,GAAG,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;SAC7B,CAAC,CACH;KACF,CAAC;IACF,IAAA,oBAAM,EAAC;QACL;;;;;;WAMG;QACH,OAAO,EAAE,IAAA,qBAAO,EAAC,KAAK,CAAC;QAEvB;;WAEG;QACH,MAAM,EAAE,kBAAU;KACnB,CAAC;CACH,CAAC,CAAC","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\nimport type { Infer } from 'superstruct';\nimport { array, enums, literal, record, string, union } from 'superstruct';\n\nimport { exactOptional, object } from './superstruct';\nimport { UuidStruct } from './utils';\n\n/**\n * Supported Ethereum methods.\n */\nexport enum EthMethod {\n PersonalSign = 'personal_sign',\n Sign = 'eth_sign',\n SignTransaction = 'eth_signTransaction',\n SignTypedDataV1 = 'eth_signTypedData_v1',\n SignTypedDataV3 = 'eth_signTypedData_v3',\n SignTypedDataV4 = 'eth_signTypedData_v4',\n}\n\n/**\n * Supported Ethereum account types.\n */\nexport enum EthAccountType {\n Eoa = 'eip155:eoa',\n Eip4337 = 'eip155:eip4337',\n}\n\nexport const KeyringAccountStruct = object({\n /**\n * Account ID (UUIDv4).\n */\n id: UuidStruct,\n\n /**\n * Account address or next receive address (UTXO).\n */\n address: string(),\n\n /**\n * Keyring-dependent account options.\n */\n options: record(string(), JsonStruct),\n\n /**\n * Account supported methods.\n */\n methods: array(\n enums([\n `${EthMethod.PersonalSign}`,\n `${EthMethod.Sign}`,\n `${EthMethod.SignTransaction}`,\n `${EthMethod.SignTypedDataV1}`,\n `${EthMethod.SignTypedDataV3}`,\n `${EthMethod.SignTypedDataV4}`,\n ]),\n ),\n\n /**\n * Account type.\n */\n type: enums([`${EthAccountType.Eoa}`, `${EthAccountType.Eip4337}`]),\n});\n\n/**\n * Account object.\n *\n * Represents an account with its properties and capabilities.\n */\nexport type KeyringAccount = Infer<typeof KeyringAccountStruct>;\n\nexport const KeyringRequestStruct = object({\n /**\n * Keyring request ID (UUIDv4).\n */\n id: UuidStruct,\n\n /**\n * Request's scope (CAIP-2 chain ID).\n */\n scope: string(),\n\n /**\n * Account ID (UUIDv4).\n */\n account: UuidStruct,\n\n /**\n * Inner request sent by the client application.\n */\n request: object({\n method: string(),\n params: exactOptional(\n union([array(JsonStruct), record(string(), JsonStruct)]),\n ),\n }),\n});\n\n/**\n * Keyring request.\n *\n * Represents a request made to the keyring for account-related operations.\n */\nexport type KeyringRequest = Infer<typeof KeyringRequestStruct>;\n\nexport const KeyringAccountDataStruct = record(string(), JsonStruct);\n\n/**\n * Response to a call to `exportAccount`.\n *\n * The exact response depends on the keyring implementation.\n */\nexport type KeyringAccountData = Infer<typeof KeyringAccountDataStruct>;\n\nexport const KeyringResponseStruct = union([\n object({\n /**\n * Pending flag.\n *\n * Setting the pending flag to true indicates that the request will be\n * handled asynchronously. The keyring must be called with `approveRequest`\n * or `rejectRequest` to resolve the request.\n */\n pending: literal(true),\n\n /**\n * Redirect URL.\n *\n * If present in the response, MetaMask will display a confirmation dialog\n * with a link to the redirect URL. The user can choose to follow the link\n * or cancel the request.\n */\n redirect: exactOptional(\n object({\n message: exactOptional(string()),\n url: exactOptional(string()),\n }),\n ),\n }),\n object({\n /**\n * Pending flag.\n *\n * Setting the pending flag to false indicates that the request will be\n * handled synchronously. The keyring must return the result of the\n * request execution.\n */\n pending: literal(false),\n\n /**\n * Request result.\n */\n result: JsonStruct,\n }),\n]);\n\n/**\n * Response to a call to `submitRequest`.\n *\n * Keyring implementations must return a response with `pending: true` if the\n * request will be handled asynchronously. Otherwise, the response must contain\n * the result of the request and `pending: false`.\n *\n * In the asynchronous case, the keyring can return a redirect URL and message\n * to be shown to the user. The user can choose to follow the link or cancel\n * the request. The main use case for this is to redirect the user to the snap\n * dapp to review the request.\n */\nexport type KeyringResponse = Infer<typeof KeyringResponseStruct>;\n\n/**\n * Keyring interface.\n *\n * Represents the functionality and operations related to managing accounts and\n * handling requests.\n */\nexport type Keyring = {\n /**\n * List accounts.\n *\n * Retrieves an array of KeyringAccount objects representing the available\n * accounts.\n *\n * @returns A promise that resolves to an array of KeyringAccount objects.\n */\n listAccounts(): Promise<KeyringAccount[]>;\n\n /**\n * Get an account.\n *\n * Retrieves the KeyringAccount object for the given account ID.\n *\n * @param id - The ID of the account to retrieve.\n * @returns A promise that resolves to the KeyringAccount object if found, or\n * undefined otherwise.\n */\n getAccount(id: string): Promise<KeyringAccount | undefined>;\n\n /**\n * Create an account.\n *\n * Creates a new account with optional, keyring-defined, account options.\n *\n * @param options - Keyring-defined options for the account (optional).\n * @returns A promise that resolves to the newly created KeyringAccount\n * object without any private information.\n */\n createAccount(options?: Record<string, Json>): Promise<KeyringAccount>;\n\n /**\n * Filter supported chains for a given account.\n *\n * @param id - ID of the account to be checked.\n * @param chains - List of chains (CAIP-2) to be checked.\n * @returns A Promise that resolves to a filtered list of CAIP-2 IDs\n * representing the supported chains.\n */\n filterAccountChains(id: string, chains: string[]): Promise<string[]>;\n\n /**\n * Update an account.\n *\n * Updates the account with the given account object. Does nothing if the\n * account does not exist.\n *\n * @param account - The updated account object.\n * @returns A promise that resolves when the account is successfully updated.\n */\n updateAccount(account: KeyringAccount): Promise<void>;\n\n /**\n * Delete an account from the keyring.\n *\n * Deletes the account with the given ID from the keyring.\n *\n * @param id - The ID of the account to delete.\n * @returns A promise that resolves when the account is successfully deleted.\n */\n deleteAccount(id: string): Promise<void>;\n\n /**\n * Exports an account's private key.\n *\n * If the keyring cannot export a private key, this function should throw an\n * error.\n *\n * @param id - The ID of the account to export.\n * @returns A promise that resolves to the exported account.\n */\n exportAccount?(id: string): Promise<KeyringAccountData>;\n\n /**\n * List all submitted requests.\n *\n * Retrieves an array of KeyringRequest objects representing the submitted\n * requests.\n *\n * @returns A promise that resolves to an array of KeyringRequest objects.\n */\n listRequests?(): Promise<KeyringRequest[]>;\n\n /**\n * Get a request.\n *\n * Retrieves the KeyringRequest object for the given request ID.\n *\n * @param id - The ID of the request to retrieve.\n * @returns A promise that resolves to the KeyringRequest object if found, or\n * undefined otherwise.\n */\n getRequest?(id: string): Promise<KeyringRequest | undefined>;\n\n /**\n * Submit a request.\n *\n * Submits the given KeyringRequest object.\n *\n * @param request - The KeyringRequest object to submit.\n * @returns A promise that resolves to the request response.\n */\n submitRequest(request: KeyringRequest): Promise<KeyringResponse>;\n\n /**\n * Approve a request.\n *\n * Approves the request with the given ID and sets the response if provided.\n *\n * @param id - The ID of the request to approve.\n * @param data - The response to the request (optional).\n * @returns A promise that resolves when the request is successfully\n * approved.\n */\n approveRequest?(id: string, data?: Record<string, Json>): Promise<void>;\n\n /**\n * Reject a request.\n *\n * Rejects the request with the given ID.\n *\n * @param id - The ID of the request to reject.\n * @returns A promise that resolves when the request is successfully\n * rejected.\n */\n rejectRequest?(id: string): Promise<void>;\n};\n"]}
|
package/dist/internal/api.d.ts
CHANGED
@@ -14,22 +14,21 @@ export declare const ListAccountsResponseStruct: import("superstruct").Struct<{
|
|
14
14
|
id: string;
|
15
15
|
address: string;
|
16
16
|
options: Record<string, import("@metamask/utils").Json>;
|
17
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
17
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
18
18
|
}[], import("superstruct").Struct<{
|
19
19
|
type: "eip155:eoa" | "eip155:eip4337";
|
20
20
|
id: string;
|
21
21
|
address: string;
|
22
22
|
options: Record<string, import("@metamask/utils").Json>;
|
23
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
23
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
24
24
|
}, {
|
25
25
|
id: import("superstruct").Struct<string, null>;
|
26
26
|
address: import("superstruct").Struct<string, null>;
|
27
27
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
28
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
28
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
29
29
|
personal_sign: "personal_sign";
|
30
30
|
eth_sign: "eth_sign";
|
31
31
|
eth_signTransaction: "eth_signTransaction";
|
32
|
-
eth_signTypedData: "eth_signTypedData";
|
33
32
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
34
33
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
35
34
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
@@ -63,16 +62,15 @@ export declare const GetAccountResponseStruct: import("superstruct").Struct<{
|
|
63
62
|
id: string;
|
64
63
|
address: string;
|
65
64
|
options: Record<string, import("@metamask/utils").Json>;
|
66
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
65
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
67
66
|
}, {
|
68
67
|
id: import("superstruct").Struct<string, null>;
|
69
68
|
address: import("superstruct").Struct<string, null>;
|
70
69
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
71
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
70
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
72
71
|
personal_sign: "personal_sign";
|
73
72
|
eth_sign: "eth_sign";
|
74
73
|
eth_signTransaction: "eth_signTransaction";
|
75
|
-
eth_signTypedData: "eth_signTypedData";
|
76
74
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
77
75
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
78
76
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
@@ -106,16 +104,15 @@ export declare const CreateAccountResponseStruct: import("superstruct").Struct<{
|
|
106
104
|
id: string;
|
107
105
|
address: string;
|
108
106
|
options: Record<string, import("@metamask/utils").Json>;
|
109
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
107
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
110
108
|
}, {
|
111
109
|
id: import("superstruct").Struct<string, null>;
|
112
110
|
address: import("superstruct").Struct<string, null>;
|
113
111
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
114
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
112
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
115
113
|
personal_sign: "personal_sign";
|
116
114
|
eth_sign: "eth_sign";
|
117
115
|
eth_signTransaction: "eth_signTransaction";
|
118
|
-
eth_signTypedData: "eth_signTypedData";
|
119
116
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
120
117
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
121
118
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
@@ -159,7 +156,7 @@ export declare const UpdateAccountRequestStruct: import("superstruct").Struct<{
|
|
159
156
|
id: string;
|
160
157
|
address: string;
|
161
158
|
options: Record<string, import("@metamask/utils").Json>;
|
162
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
159
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
163
160
|
};
|
164
161
|
};
|
165
162
|
}, {
|
@@ -170,7 +167,7 @@ export declare const UpdateAccountRequestStruct: import("superstruct").Struct<{
|
|
170
167
|
id: string;
|
171
168
|
address: string;
|
172
169
|
options: Record<string, import("@metamask/utils").Json>;
|
173
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
170
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
174
171
|
};
|
175
172
|
}, {
|
176
173
|
account: import("superstruct").Struct<{
|
@@ -178,16 +175,15 @@ export declare const UpdateAccountRequestStruct: import("superstruct").Struct<{
|
|
178
175
|
id: string;
|
179
176
|
address: string;
|
180
177
|
options: Record<string, import("@metamask/utils").Json>;
|
181
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
178
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
182
179
|
}, {
|
183
180
|
id: import("superstruct").Struct<string, null>;
|
184
181
|
address: import("superstruct").Struct<string, null>;
|
185
182
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
186
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
183
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
187
184
|
personal_sign: "personal_sign";
|
188
185
|
eth_sign: "eth_sign";
|
189
186
|
eth_signTransaction: "eth_signTransaction";
|
190
|
-
eth_signTypedData: "eth_signTypedData";
|
191
187
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
192
188
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
193
189
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
@@ -6,7 +6,7 @@ export declare const AccountCreatedEventStruct: import("superstruct").Struct<{
|
|
6
6
|
id: string;
|
7
7
|
address: string;
|
8
8
|
options: Record<string, import("@metamask/utils").Json>;
|
9
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
9
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
10
10
|
};
|
11
11
|
};
|
12
12
|
}, {
|
@@ -17,7 +17,7 @@ export declare const AccountCreatedEventStruct: import("superstruct").Struct<{
|
|
17
17
|
id: string;
|
18
18
|
address: string;
|
19
19
|
options: Record<string, import("@metamask/utils").Json>;
|
20
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
20
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
21
21
|
};
|
22
22
|
}, {
|
23
23
|
/**
|
@@ -28,16 +28,15 @@ export declare const AccountCreatedEventStruct: import("superstruct").Struct<{
|
|
28
28
|
id: string;
|
29
29
|
address: string;
|
30
30
|
options: Record<string, import("@metamask/utils").Json>;
|
31
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
31
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
32
32
|
}, {
|
33
33
|
id: import("superstruct").Struct<string, null>;
|
34
34
|
address: import("superstruct").Struct<string, null>;
|
35
35
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
36
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
36
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
37
37
|
personal_sign: "personal_sign";
|
38
38
|
eth_sign: "eth_sign";
|
39
39
|
eth_signTransaction: "eth_signTransaction";
|
40
|
-
eth_signTypedData: "eth_signTypedData";
|
41
40
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
42
41
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
43
42
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
@@ -57,7 +56,7 @@ export declare const AccountUpdatedEventStruct: import("superstruct").Struct<{
|
|
57
56
|
id: string;
|
58
57
|
address: string;
|
59
58
|
options: Record<string, import("@metamask/utils").Json>;
|
60
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
59
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
61
60
|
};
|
62
61
|
};
|
63
62
|
}, {
|
@@ -68,7 +67,7 @@ export declare const AccountUpdatedEventStruct: import("superstruct").Struct<{
|
|
68
67
|
id: string;
|
69
68
|
address: string;
|
70
69
|
options: Record<string, import("@metamask/utils").Json>;
|
71
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
70
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
72
71
|
};
|
73
72
|
}, {
|
74
73
|
/**
|
@@ -79,16 +78,15 @@ export declare const AccountUpdatedEventStruct: import("superstruct").Struct<{
|
|
79
78
|
id: string;
|
80
79
|
address: string;
|
81
80
|
options: Record<string, import("@metamask/utils").Json>;
|
82
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
81
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
83
82
|
}, {
|
84
83
|
id: import("superstruct").Struct<string, null>;
|
85
84
|
address: import("superstruct").Struct<string, null>;
|
86
85
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
87
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
86
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
88
87
|
personal_sign: "personal_sign";
|
89
88
|
eth_sign: "eth_sign";
|
90
89
|
eth_signTransaction: "eth_signTransaction";
|
91
|
-
eth_signTypedData: "eth_signTypedData";
|
92
90
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
93
91
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
94
92
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
package/dist/internal/types.d.ts
CHANGED
@@ -4,7 +4,7 @@ export declare const InternalAccountStruct: import("superstruct").Struct<{
|
|
4
4
|
id: string;
|
5
5
|
address: string;
|
6
6
|
options: Record<string, import("@metamask/utils").Json>;
|
7
|
-
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
7
|
+
methods: ("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[];
|
8
8
|
metadata: {
|
9
9
|
name: string;
|
10
10
|
keyring: {
|
@@ -50,11 +50,10 @@ export declare const InternalAccountStruct: import("superstruct").Struct<{
|
|
50
50
|
id: import("superstruct").Struct<string, null>;
|
51
51
|
address: import("superstruct").Struct<string, null>;
|
52
52
|
options: import("superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
|
53
|
-
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "
|
53
|
+
methods: import("superstruct").Struct<("personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4")[], import("superstruct").Struct<"personal_sign" | "eth_sign" | "eth_signTransaction" | "eth_signTypedData_v1" | "eth_signTypedData_v3" | "eth_signTypedData_v4", {
|
54
54
|
personal_sign: "personal_sign";
|
55
55
|
eth_sign: "eth_sign";
|
56
56
|
eth_signTransaction: "eth_signTransaction";
|
57
|
-
eth_signTypedData: "eth_signTypedData";
|
58
57
|
eth_signTypedData_v1: "eth_signTypedData_v1";
|
59
58
|
eth_signTypedData_v3: "eth_signTypedData_v3";
|
60
59
|
eth_signTypedData_v4: "eth_signTypedData_v4";
|
package/dist/rpc-handler.d.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
import type { OnRpcRequestHandler } from '@metamask/snaps-utils';
|
2
1
|
import type { Json } from '@metamask/utils';
|
3
2
|
import type { Keyring } from './api';
|
4
3
|
import type { JsonRpcRequest } from './JsonRpcRequest';
|
@@ -8,19 +7,6 @@ import type { JsonRpcRequest } from './JsonRpcRequest';
|
|
8
7
|
export declare class MethodNotSupportedError extends Error {
|
9
8
|
constructor(method: string);
|
10
9
|
}
|
11
|
-
/**
|
12
|
-
* Build a chain of handlers for a JSON-RPC request.
|
13
|
-
*
|
14
|
-
* If a handler throws a MethodNotSupportedError, the next handler in the chain
|
15
|
-
* is called. If all handlers throw a MethodNotSupportedError, the error is re-
|
16
|
-
* thrown.
|
17
|
-
*
|
18
|
-
* Any other error thrown by a handler is re-thrown.
|
19
|
-
*
|
20
|
-
* @param handlers - Handlers to chain.
|
21
|
-
* @returns A handler that chains the given handlers.
|
22
|
-
*/
|
23
|
-
export declare function buildHandlersChain(...handlers: OnRpcRequestHandler[]): OnRpcRequestHandler;
|
24
10
|
export declare enum KeyringRpcMethod {
|
25
11
|
ListAccounts = "keyring_listAccounts",
|
26
12
|
GetAccount = "keyring_getAccount",
|
@@ -43,3 +29,10 @@ export declare enum KeyringRpcMethod {
|
|
43
29
|
* @returns A promise that resolves to the keyring response.
|
44
30
|
*/
|
45
31
|
export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
|
32
|
+
/**
|
33
|
+
* Check if a method is a keyring RPC method.
|
34
|
+
*
|
35
|
+
* @param method - Method to check.
|
36
|
+
* @returns Whether the method is a keyring RPC method.
|
37
|
+
*/
|
38
|
+
export declare function isKeyringRpcMethod(method: string): boolean;
|
package/dist/rpc-handler.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.isKeyringRpcMethod = exports.handleKeyringRequest = exports.KeyringRpcMethod = exports.MethodNotSupportedError = void 0;
|
4
4
|
const superstruct_1 = require("superstruct");
|
5
5
|
const api_1 = require("./internal/api");
|
6
6
|
const JsonRpcRequest_1 = require("./JsonRpcRequest");
|
@@ -13,35 +13,6 @@ class MethodNotSupportedError extends Error {
|
|
13
13
|
}
|
14
14
|
}
|
15
15
|
exports.MethodNotSupportedError = MethodNotSupportedError;
|
16
|
-
/**
|
17
|
-
* Build a chain of handlers for a JSON-RPC request.
|
18
|
-
*
|
19
|
-
* If a handler throws a MethodNotSupportedError, the next handler in the chain
|
20
|
-
* is called. If all handlers throw a MethodNotSupportedError, the error is re-
|
21
|
-
* thrown.
|
22
|
-
*
|
23
|
-
* Any other error thrown by a handler is re-thrown.
|
24
|
-
*
|
25
|
-
* @param handlers - Handlers to chain.
|
26
|
-
* @returns A handler that chains the given handlers.
|
27
|
-
*/
|
28
|
-
function buildHandlersChain(...handlers) {
|
29
|
-
return async ({ origin, request }) => {
|
30
|
-
for (const handler of handlers) {
|
31
|
-
try {
|
32
|
-
return await handler({ origin, request });
|
33
|
-
}
|
34
|
-
catch (error) {
|
35
|
-
if (!(error instanceof MethodNotSupportedError)) {
|
36
|
-
throw error;
|
37
|
-
}
|
38
|
-
}
|
39
|
-
}
|
40
|
-
// All handlers failed to handle the request.
|
41
|
-
throw new MethodNotSupportedError(request.method);
|
42
|
-
};
|
43
|
-
}
|
44
|
-
exports.buildHandlersChain = buildHandlersChain;
|
45
16
|
var KeyringRpcMethod;
|
46
17
|
(function (KeyringRpcMethod) {
|
47
18
|
KeyringRpcMethod["ListAccounts"] = "keyring_listAccounts";
|
@@ -138,4 +109,14 @@ async function handleKeyringRequest(keyring, request) {
|
|
138
109
|
}
|
139
110
|
}
|
140
111
|
exports.handleKeyringRequest = handleKeyringRequest;
|
112
|
+
/**
|
113
|
+
* Check if a method is a keyring RPC method.
|
114
|
+
*
|
115
|
+
* @param method - Method to check.
|
116
|
+
* @returns Whether the method is a keyring RPC method.
|
117
|
+
*/
|
118
|
+
function isKeyringRpcMethod(method) {
|
119
|
+
return Object.values(KeyringRpcMethod).includes(method);
|
120
|
+
}
|
121
|
+
exports.isKeyringRpcMethod = isKeyringRpcMethod;
|
141
122
|
//# sourceMappingURL=rpc-handler.js.map
|
package/dist/rpc-handler.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { assert } from 'superstruct';\n\nimport type { Keyring } from './api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n} from './internal/api';\nimport type { JsonRpcRequest } from './JsonRpcRequest';\nimport { JsonRpcRequestStruct } from './JsonRpcRequest';\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\nexport enum KeyringRpcMethod {\n ListAccounts = 'keyring_listAccounts',\n GetAccount = 'keyring_getAccount',\n CreateAccount = 'keyring_createAccount',\n FilterAccountChains = 'keyring_filterAccountChains',\n UpdateAccount = 'keyring_updateAccount',\n DeleteAccount = 'keyring_deleteAccount',\n ExportAccount = 'keyring_exportAccount',\n ListRequests = 'keyring_listRequests',\n GetRequest = 'keyring_getRequest',\n SubmitRequest = 'keyring_submitRequest',\n ApproveRequest = 'keyring_approveRequest',\n RejectRequest = 'keyring_rejectRequest',\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nexport async function handleKeyringRequest(\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.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 * Check if a method is a keyring RPC method.\n *\n * @param method - Method to check.\n * @returns Whether the method is a keyring RPC method.\n */\nexport function isKeyringRpcMethod(method: string): boolean {\n return Object.values(KeyringRpcMethod).includes(method as KeyringRpcMethod);\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@metamask/keyring-api",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.6",
|
4
4
|
"description": "MetaMask Keyring API",
|
5
5
|
"keywords": [
|
6
6
|
"metamask",
|
@@ -38,10 +38,10 @@
|
|
38
38
|
"test:watch": "jest --watch"
|
39
39
|
},
|
40
40
|
"dependencies": {
|
41
|
-
"@metamask/providers": "^
|
42
|
-
"@metamask/rpc-methods": "^0.
|
43
|
-
"@metamask/snaps-controllers": "^0.
|
44
|
-
"@metamask/snaps-utils": "^0.
|
41
|
+
"@metamask/providers": "^13.0.0",
|
42
|
+
"@metamask/rpc-methods": "^2.0.0",
|
43
|
+
"@metamask/snaps-controllers": "^2.0.0",
|
44
|
+
"@metamask/snaps-utils": "^2.0.0",
|
45
45
|
"@metamask/utils": "^8.1.0",
|
46
46
|
"@types/uuid": "^9.0.1",
|
47
47
|
"superstruct": "^1.0.3",
|
@@ -62,10 +62,10 @@
|
|
62
62
|
"depcheck": "^1.4.3",
|
63
63
|
"eslint": "^8.27.0",
|
64
64
|
"eslint-config-prettier": "^8.5.0",
|
65
|
-
"eslint-plugin-import": "
|
65
|
+
"eslint-plugin-import": "~2.26.0",
|
66
66
|
"eslint-plugin-jest": "^27.1.5",
|
67
67
|
"eslint-plugin-jsdoc": "^39.6.2",
|
68
|
-
"eslint-plugin-n": "^
|
68
|
+
"eslint-plugin-n": "^15.7.0",
|
69
69
|
"eslint-plugin-prettier": "^4.2.1",
|
70
70
|
"eslint-plugin-promise": "^6.1.1",
|
71
71
|
"jest": "^28.1.3",
|
@@ -90,12 +90,6 @@
|
|
90
90
|
"lavamoat": {
|
91
91
|
"allowScripts": {
|
92
92
|
"@lavamoat/preinstall-always-fail": false,
|
93
|
-
"@metamask/snaps-controllers>@metamask/base-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>keccak": false,
|
94
|
-
"@metamask/snaps-controllers>@metamask/base-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>secp256k1": false,
|
95
|
-
"@metamask/snaps-utils>@metamask/base-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>keccak": false,
|
96
|
-
"@metamask/snaps-utils>@metamask/base-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>secp256k1": false,
|
97
|
-
"@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>keccak": false,
|
98
|
-
"@metamask/snaps-utils>@metamask/permission-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>secp256k1": false,
|
99
93
|
"@metamask/rpc-methods>@metamask/permission-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>keccak": false,
|
100
94
|
"@metamask/rpc-methods>@metamask/permission-controller>@metamask/controller-utils>ethereumjs-util>ethereum-cryptography>secp256k1": false
|
101
95
|
}
|