@metamask-previews/wallet 2.0.0-preview-1b741b0f9 → 2.0.0-preview-a3545aef8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/initialization/instances/approval-controller/approval-controller.cjs +39 -0
  3. package/dist/initialization/instances/approval-controller/approval-controller.cjs.map +1 -0
  4. package/dist/initialization/instances/approval-controller/approval-controller.d.cts +4 -0
  5. package/dist/initialization/instances/approval-controller/approval-controller.d.cts.map +1 -0
  6. package/dist/initialization/instances/approval-controller/approval-controller.d.mts +4 -0
  7. package/dist/initialization/instances/approval-controller/approval-controller.d.mts.map +1 -0
  8. package/dist/initialization/instances/approval-controller/approval-controller.mjs +36 -0
  9. package/dist/initialization/instances/approval-controller/approval-controller.mjs.map +1 -0
  10. package/dist/initialization/instances/approval-controller/types.cjs +3 -0
  11. package/dist/initialization/instances/approval-controller/types.cjs.map +1 -0
  12. package/dist/initialization/instances/approval-controller/types.d.cts +18 -0
  13. package/dist/initialization/instances/approval-controller/types.d.cts.map +1 -0
  14. package/dist/initialization/instances/approval-controller/types.d.mts +18 -0
  15. package/dist/initialization/instances/approval-controller/types.d.mts.map +1 -0
  16. package/dist/initialization/instances/approval-controller/types.mjs +2 -0
  17. package/dist/initialization/instances/approval-controller/types.mjs.map +1 -0
  18. package/dist/initialization/instances/index.cjs +3 -1
  19. package/dist/initialization/instances/index.cjs.map +1 -1
  20. package/dist/initialization/instances/index.d.cts +1 -0
  21. package/dist/initialization/instances/index.d.cts.map +1 -1
  22. package/dist/initialization/instances/index.d.mts +1 -0
  23. package/dist/initialization/instances/index.d.mts.map +1 -1
  24. package/dist/initialization/instances/index.mjs +1 -0
  25. package/dist/initialization/instances/index.mjs.map +1 -1
  26. package/dist/types.cjs.map +1 -1
  27. package/dist/types.d.cts +2 -0
  28. package/dist/types.d.cts.map +1 -1
  29. package/dist/types.d.mts +2 -0
  30. package/dist/types.d.mts.map +1 -1
  31. package/dist/types.mjs.map +1 -1
  32. package/package.json +3 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - **BREAKING:** Wire `ApprovalController` into the default wallet initialization ([#8953](https://github.com/MetaMask/core/pull/8953))
13
+ - The default `Wallet` now constructs an `ApprovalController` and registers its `ApprovalController:*` messenger actions. Consumers that pass their own `messenger` and already wire an `ApprovalController` must remove their own before upgrading, or the duplicate registration will collide.
14
+ - Adds an `approvalController` slot to `instanceOptions` with `showApprovalRequest` (the callback that surfaces pending approval requests to the user; defaults to a no-op) and `typesExcludedFromRateLimiting` (the approval types exempt from per-origin rate limiting; defaults to a baseline of EVM approval types). Both let consumers (extension, mobile, wallet-cli) inject their platform-specific values.
15
+
10
16
  ## [2.0.0]
11
17
 
12
18
  ### Added
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.approvalController = void 0;
4
+ const approval_controller_1 = require("@metamask/approval-controller");
5
+ const controller_utils_1 = require("@metamask/controller-utils");
6
+ const messenger_1 = require("@metamask/messenger");
7
+ /**
8
+ * Approval types that are exempt from per-origin rate limiting, so more than one
9
+ * request of the same type can be pending at once. These are the common EVM
10
+ * types: signing, transactions, watch-asset, and encryption.
11
+ *
12
+ * Clients can replace this list via
13
+ * `instanceOptions.approvalController.typesExcludedFromRateLimiting` — the
14
+ * extension and mobile pass their own. `snap_dialog` will be added here once the
15
+ * wallet wires `SnapController`.
16
+ */
17
+ const DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING = [
18
+ controller_utils_1.ApprovalType.PersonalSign,
19
+ controller_utils_1.ApprovalType.EthSignTypedData,
20
+ controller_utils_1.ApprovalType.Transaction,
21
+ controller_utils_1.ApprovalType.WatchAsset,
22
+ controller_utils_1.ApprovalType.EthGetEncryptionPublicKey,
23
+ controller_utils_1.ApprovalType.EthDecrypt,
24
+ ];
25
+ exports.approvalController = {
26
+ name: 'ApprovalController',
27
+ init: ({ state, messenger, options }) => new approval_controller_1.ApprovalController({
28
+ state,
29
+ messenger,
30
+ showApprovalRequest: options.showApprovalRequest ?? (() => undefined),
31
+ typesExcludedFromRateLimiting: options.typesExcludedFromRateLimiting ??
32
+ DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING,
33
+ }),
34
+ getMessenger: (parent) => new messenger_1.Messenger({
35
+ namespace: 'ApprovalController',
36
+ parent,
37
+ }),
38
+ };
39
+ //# sourceMappingURL=approval-controller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-controller.cjs","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/approval-controller.ts"],"names":[],"mappings":";;;AAAA,uEAGuC;AACvC,iEAA0D;AAC1D,mDAAgD;AAIhD;;;;;;;;;GASG;AACH,MAAM,yCAAyC,GAAG;IAChD,+BAAY,CAAC,YAAY;IACzB,+BAAY,CAAC,gBAAgB;IAC7B,+BAAY,CAAC,WAAW;IACxB,+BAAY,CAAC,UAAU;IACvB,+BAAY,CAAC,yBAAyB;IACtC,+BAAY,CAAC,UAAU;CACxB,CAAC;AAEW,QAAA,kBAAkB,GAG3B;IACF,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CACtC,IAAI,wCAAkB,CAAC;QACrB,KAAK;QACL,SAAS;QACT,mBAAmB,EACjB,OAAO,CAAC,mBAAmB,IAAI,CAAC,GAAS,EAAE,CAAC,SAAS,CAAC;QACxD,6BAA6B,EAC3B,OAAO,CAAC,6BAA6B;YACrC,yCAAyC;KAC5C,CAAC;IACJ,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,qBAAS,CAAC;QACZ,SAAS,EAAE,oBAAoB;QAC/B,MAAM;KACP,CAAC;CACL,CAAC","sourcesContent":["import {\n ApprovalController,\n ApprovalControllerMessenger,\n} from '@metamask/approval-controller';\nimport { ApprovalType } from '@metamask/controller-utils';\nimport { Messenger } from '@metamask/messenger';\n\nimport { InitializationConfiguration } from '../../types';\n\n/**\n * Approval types that are exempt from per-origin rate limiting, so more than one\n * request of the same type can be pending at once. These are the common EVM\n * types: signing, transactions, watch-asset, and encryption.\n *\n * Clients can replace this list via\n * `instanceOptions.approvalController.typesExcludedFromRateLimiting` — the\n * extension and mobile pass their own. `snap_dialog` will be added here once the\n * wallet wires `SnapController`.\n */\nconst DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING = [\n ApprovalType.PersonalSign,\n ApprovalType.EthSignTypedData,\n ApprovalType.Transaction,\n ApprovalType.WatchAsset,\n ApprovalType.EthGetEncryptionPublicKey,\n ApprovalType.EthDecrypt,\n];\n\nexport const approvalController: InitializationConfiguration<\n ApprovalController,\n ApprovalControllerMessenger\n> = {\n name: 'ApprovalController',\n init: ({ state, messenger, options }) =>\n new ApprovalController({\n state,\n messenger,\n showApprovalRequest:\n options.showApprovalRequest ?? ((): void => undefined),\n typesExcludedFromRateLimiting:\n options.typesExcludedFromRateLimiting ??\n DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING,\n }),\n getMessenger: (parent) =>\n new Messenger({\n namespace: 'ApprovalController',\n parent,\n }),\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { ApprovalController, ApprovalControllerMessenger } from "@metamask/approval-controller";
2
+ import { InitializationConfiguration } from "../../types.cjs";
3
+ export declare const approvalController: InitializationConfiguration<ApprovalController, ApprovalControllerMessenger>;
4
+ //# sourceMappingURL=approval-controller.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-controller.d.cts","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/approval-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC5B,sCAAsC;AAIvC,OAAO,EAAE,2BAA2B,EAAE,wBAAoB;AAqB1D,eAAO,MAAM,kBAAkB,EAAE,2BAA2B,CAC1D,kBAAkB,EAClB,2BAA2B,CAkB5B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ApprovalController, ApprovalControllerMessenger } from "@metamask/approval-controller";
2
+ import { InitializationConfiguration } from "../../types.mjs";
3
+ export declare const approvalController: InitializationConfiguration<ApprovalController, ApprovalControllerMessenger>;
4
+ //# sourceMappingURL=approval-controller.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-controller.d.mts","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/approval-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC5B,sCAAsC;AAIvC,OAAO,EAAE,2BAA2B,EAAE,wBAAoB;AAqB1D,eAAO,MAAM,kBAAkB,EAAE,2BAA2B,CAC1D,kBAAkB,EAClB,2BAA2B,CAkB5B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { ApprovalController } from "@metamask/approval-controller";
2
+ import { ApprovalType } from "@metamask/controller-utils";
3
+ import { Messenger } from "@metamask/messenger";
4
+ /**
5
+ * Approval types that are exempt from per-origin rate limiting, so more than one
6
+ * request of the same type can be pending at once. These are the common EVM
7
+ * types: signing, transactions, watch-asset, and encryption.
8
+ *
9
+ * Clients can replace this list via
10
+ * `instanceOptions.approvalController.typesExcludedFromRateLimiting` — the
11
+ * extension and mobile pass their own. `snap_dialog` will be added here once the
12
+ * wallet wires `SnapController`.
13
+ */
14
+ const DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING = [
15
+ ApprovalType.PersonalSign,
16
+ ApprovalType.EthSignTypedData,
17
+ ApprovalType.Transaction,
18
+ ApprovalType.WatchAsset,
19
+ ApprovalType.EthGetEncryptionPublicKey,
20
+ ApprovalType.EthDecrypt,
21
+ ];
22
+ export const approvalController = {
23
+ name: 'ApprovalController',
24
+ init: ({ state, messenger, options }) => new ApprovalController({
25
+ state,
26
+ messenger,
27
+ showApprovalRequest: options.showApprovalRequest ?? (() => undefined),
28
+ typesExcludedFromRateLimiting: options.typesExcludedFromRateLimiting ??
29
+ DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING,
30
+ }),
31
+ getMessenger: (parent) => new Messenger({
32
+ namespace: 'ApprovalController',
33
+ parent,
34
+ }),
35
+ };
36
+ //# sourceMappingURL=approval-controller.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-controller.mjs","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/approval-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAEnB,sCAAsC;AACvC,OAAO,EAAE,YAAY,EAAE,mCAAmC;AAC1D,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAIhD;;;;;;;;;GASG;AACH,MAAM,yCAAyC,GAAG;IAChD,YAAY,CAAC,YAAY;IACzB,YAAY,CAAC,gBAAgB;IAC7B,YAAY,CAAC,WAAW;IACxB,YAAY,CAAC,UAAU;IACvB,YAAY,CAAC,yBAAyB;IACtC,YAAY,CAAC,UAAU;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CACtC,IAAI,kBAAkB,CAAC;QACrB,KAAK;QACL,SAAS;QACT,mBAAmB,EACjB,OAAO,CAAC,mBAAmB,IAAI,CAAC,GAAS,EAAE,CAAC,SAAS,CAAC;QACxD,6BAA6B,EAC3B,OAAO,CAAC,6BAA6B;YACrC,yCAAyC;KAC5C,CAAC;IACJ,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,SAAS,CAAC;QACZ,SAAS,EAAE,oBAAoB;QAC/B,MAAM;KACP,CAAC;CACL,CAAC","sourcesContent":["import {\n ApprovalController,\n ApprovalControllerMessenger,\n} from '@metamask/approval-controller';\nimport { ApprovalType } from '@metamask/controller-utils';\nimport { Messenger } from '@metamask/messenger';\n\nimport { InitializationConfiguration } from '../../types';\n\n/**\n * Approval types that are exempt from per-origin rate limiting, so more than one\n * request of the same type can be pending at once. These are the common EVM\n * types: signing, transactions, watch-asset, and encryption.\n *\n * Clients can replace this list via\n * `instanceOptions.approvalController.typesExcludedFromRateLimiting` — the\n * extension and mobile pass their own. `snap_dialog` will be added here once the\n * wallet wires `SnapController`.\n */\nconst DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING = [\n ApprovalType.PersonalSign,\n ApprovalType.EthSignTypedData,\n ApprovalType.Transaction,\n ApprovalType.WatchAsset,\n ApprovalType.EthGetEncryptionPublicKey,\n ApprovalType.EthDecrypt,\n];\n\nexport const approvalController: InitializationConfiguration<\n ApprovalController,\n ApprovalControllerMessenger\n> = {\n name: 'ApprovalController',\n init: ({ state, messenger, options }) =>\n new ApprovalController({\n state,\n messenger,\n showApprovalRequest:\n options.showApprovalRequest ?? ((): void => undefined),\n typesExcludedFromRateLimiting:\n options.typesExcludedFromRateLimiting ??\n DEFAULT_TYPES_EXCLUDED_FROM_RATE_LIMITING,\n }),\n getMessenger: (parent) =>\n new Messenger({\n namespace: 'ApprovalController',\n parent,\n }),\n};\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ApprovalControllerOptions,\n ShowApprovalRequest,\n} from '@metamask/approval-controller';\n\n/**\n * Per-instance options for the wallet's `ApprovalController`. Both fields are\n * optional; see the controller's `init` for the defaults applied when omitted.\n */\nexport type ApprovalControllerInstanceOptions = {\n /**\n * Callback that surfaces a pending approval request to the user. Defaults to\n * a no-op so the controller works headlessly.\n */\n showApprovalRequest?: ShowApprovalRequest;\n /**\n * Approval types exempt from per-origin rate limiting. Defaults to a baseline\n * of EVM approval types.\n */\n typesExcludedFromRateLimiting?: NonNullable<\n ApprovalControllerOptions['typesExcludedFromRateLimiting']\n >;\n};\n"]}
@@ -0,0 +1,18 @@
1
+ import type { ApprovalControllerOptions, ShowApprovalRequest } from "@metamask/approval-controller";
2
+ /**
3
+ * Per-instance options for the wallet's `ApprovalController`. Both fields are
4
+ * optional; see the controller's `init` for the defaults applied when omitted.
5
+ */
6
+ export type ApprovalControllerInstanceOptions = {
7
+ /**
8
+ * Callback that surfaces a pending approval request to the user. Defaults to
9
+ * a no-op so the controller works headlessly.
10
+ */
11
+ showApprovalRequest?: ShowApprovalRequest;
12
+ /**
13
+ * Approval types exempt from per-origin rate limiting. Defaults to a baseline
14
+ * of EVM approval types.
15
+ */
16
+ typesExcludedFromRateLimiting?: NonNullable<ApprovalControllerOptions['typesExcludedFromRateLimiting']>;
17
+ };
18
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACpB,sCAAsC;AAEvC;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,6BAA6B,CAAC,EAAE,WAAW,CACzC,yBAAyB,CAAC,+BAA+B,CAAC,CAC3D,CAAC;CACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ApprovalControllerOptions, ShowApprovalRequest } from "@metamask/approval-controller";
2
+ /**
3
+ * Per-instance options for the wallet's `ApprovalController`. Both fields are
4
+ * optional; see the controller's `init` for the defaults applied when omitted.
5
+ */
6
+ export type ApprovalControllerInstanceOptions = {
7
+ /**
8
+ * Callback that surfaces a pending approval request to the user. Defaults to
9
+ * a no-op so the controller works headlessly.
10
+ */
11
+ showApprovalRequest?: ShowApprovalRequest;
12
+ /**
13
+ * Approval types exempt from per-origin rate limiting. Defaults to a baseline
14
+ * of EVM approval types.
15
+ */
16
+ typesExcludedFromRateLimiting?: NonNullable<ApprovalControllerOptions['typesExcludedFromRateLimiting']>;
17
+ };
18
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACpB,sCAAsC;AAEvC;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,6BAA6B,CAAC,EAAE,WAAW,CACzC,yBAAyB,CAAC,+BAA+B,CAAC,CAC3D,CAAC;CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../../src/initialization/instances/approval-controller/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ApprovalControllerOptions,\n ShowApprovalRequest,\n} from '@metamask/approval-controller';\n\n/**\n * Per-instance options for the wallet's `ApprovalController`. Both fields are\n * optional; see the controller's `init` for the defaults applied when omitted.\n */\nexport type ApprovalControllerInstanceOptions = {\n /**\n * Callback that surfaces a pending approval request to the user. Defaults to\n * a no-op so the controller works headlessly.\n */\n showApprovalRequest?: ShowApprovalRequest;\n /**\n * Approval types exempt from per-origin rate limiting. Defaults to a baseline\n * of EVM approval types.\n */\n typesExcludedFromRateLimiting?: NonNullable<\n ApprovalControllerOptions['typesExcludedFromRateLimiting']\n >;\n};\n"]}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storageService = exports.keyringController = void 0;
3
+ exports.storageService = exports.keyringController = exports.approvalController = void 0;
4
+ var approval_controller_1 = require("./approval-controller/approval-controller.cjs");
5
+ Object.defineProperty(exports, "approvalController", { enumerable: true, get: function () { return approval_controller_1.approvalController; } });
4
6
  var keyring_controller_1 = require("./keyring-controller.cjs");
5
7
  Object.defineProperty(exports, "keyringController", { enumerable: true, get: function () { return keyring_controller_1.keyringController; } });
6
8
  var storage_service_1 = require("./storage-service.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,yDAAmD;AAA1C,iHAAA,cAAc,OAAA","sourcesContent":["export { keyringController } from './keyring-controller';\nexport { storageService } from './storage-service';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAAtE,yHAAA,kBAAkB,OAAA;AAC3B,+DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,yDAAmD;AAA1C,iHAAA,cAAc,OAAA","sourcesContent":["export { approvalController } from './approval-controller/approval-controller';\nexport { keyringController } from './keyring-controller';\nexport { storageService } from './storage-service';\n"]}
@@ -1,3 +1,4 @@
1
+ export { approvalController } from "./approval-controller/approval-controller.cjs";
1
2
  export { keyringController } from "./keyring-controller.cjs";
2
3
  export { storageService } from "./storage-service.cjs";
3
4
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACzD,OAAO,EAAE,cAAc,EAAE,8BAA0B"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sDAAkD;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACzD,OAAO,EAAE,cAAc,EAAE,8BAA0B"}
@@ -1,3 +1,4 @@
1
+ export { approvalController } from "./approval-controller/approval-controller.mjs";
1
2
  export { keyringController } from "./keyring-controller.mjs";
2
3
  export { storageService } from "./storage-service.mjs";
3
4
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACzD,OAAO,EAAE,cAAc,EAAE,8BAA0B"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sDAAkD;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACzD,OAAO,EAAE,cAAc,EAAE,8BAA0B"}
@@ -1,3 +1,4 @@
1
+ export { approvalController } from "./approval-controller/approval-controller.mjs";
1
2
  export { keyringController } from "./keyring-controller.mjs";
2
3
  export { storageService } from "./storage-service.mjs";
3
4
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACzD,OAAO,EAAE,cAAc,EAAE,8BAA0B","sourcesContent":["export { keyringController } from './keyring-controller';\nexport { storageService } from './storage-service';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/initialization/instances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sDAAkD;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iCAA6B;AACzD,OAAO,EAAE,cAAc,EAAE,8BAA0B","sourcesContent":["export { approvalController } from './approval-controller/approval-controller';\nexport { keyringController } from './keyring-controller';\nexport { storageService } from './storage-service';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { KeyringControllerOptions } from '@metamask/keyring-controller';\nimport { StorageAdapter } from '@metamask/storage-service';\nimport type { Json } from '@metamask/utils';\n\nimport type {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n} from './initialization/defaults';\nimport { GenericEncryptor } from './initialization/instances/keyring-controller';\nimport { InitializationConfiguration } from './initialization/types';\n\nexport type WalletOptions = {\n messenger?: RootMessenger<DefaultActions, DefaultEvents>;\n state?: Record<string, Record<string, Json> | undefined>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n keyringController?: {\n encryptor?: GenericEncryptor;\n keyringBuilders?: KeyringControllerOptions['keyringBuilders'];\n keyringV2Builders?: KeyringControllerOptions['keyringV2Builders'];\n };\n storageService: {\n storage: StorageAdapter;\n };\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { KeyringControllerOptions } from '@metamask/keyring-controller';\nimport { StorageAdapter } from '@metamask/storage-service';\nimport type { Json } from '@metamask/utils';\n\nimport type {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n} from './initialization/defaults';\nimport type { ApprovalControllerInstanceOptions } from './initialization/instances/approval-controller/types';\nimport { GenericEncryptor } from './initialization/instances/keyring-controller';\nimport { InitializationConfiguration } from './initialization/types';\n\nexport type WalletOptions = {\n messenger?: RootMessenger<DefaultActions, DefaultEvents>;\n state?: Record<string, Record<string, Json> | undefined>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n approvalController?: ApprovalControllerInstanceOptions;\n keyringController?: {\n encryptor?: GenericEncryptor;\n keyringBuilders?: KeyringControllerOptions['keyringBuilders'];\n keyringV2Builders?: KeyringControllerOptions['keyringV2Builders'];\n };\n storageService: {\n storage: StorageAdapter;\n };\n};\n"]}
package/dist/types.d.cts CHANGED
@@ -2,6 +2,7 @@ import { KeyringControllerOptions } from "@metamask/keyring-controller";
2
2
  import { StorageAdapter } from "@metamask/storage-service";
3
3
  import type { Json } from "@metamask/utils";
4
4
  import type { DefaultActions, DefaultEvents, RootMessenger } from "./initialization/defaults.cjs";
5
+ import type { ApprovalControllerInstanceOptions } from "./initialization/instances/approval-controller/types.cjs";
5
6
  import { GenericEncryptor } from "./initialization/instances/keyring-controller.cjs";
6
7
  import { InitializationConfiguration } from "./initialization/types.cjs";
7
8
  export type WalletOptions = {
@@ -11,6 +12,7 @@ export type WalletOptions = {
11
12
  instanceOptions: InstanceSpecificOptions;
12
13
  };
13
14
  export type InstanceSpecificOptions = {
15
+ approvalController?: ApprovalControllerInstanceOptions;
14
16
  keyringController?: {
15
17
  encryptor?: GenericEncryptor;
16
18
  keyringBuilders?: KeyringControllerOptions['keyringBuilders'];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,sCAAkC;AACnC,OAAO,EAAE,gBAAgB,EAAE,0DAAsD;AACjF,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD,4BAA4B,CAAC,EAAE,2BAA2B,CACxD,OAAO,EACP,OAAO,CACR,EAAE,CAAC;IACJ,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,CAAC,EAAE;QAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAC9D,iBAAiB,CAAC,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;KACnE,CAAC;IACF,cAAc,EAAE;QACd,OAAO,EAAE,cAAc,CAAC;KACzB,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,sCAAkC;AACnC,OAAO,KAAK,EAAE,iCAAiC,EAAE,iEAA6D;AAC9G,OAAO,EAAE,gBAAgB,EAAE,0DAAsD;AACjF,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD,4BAA4B,CAAC,EAAE,2BAA2B,CACxD,OAAO,EACP,OAAO,CACR,EAAE,CAAC;IACJ,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,kBAAkB,CAAC,EAAE,iCAAiC,CAAC;IACvD,iBAAiB,CAAC,EAAE;QAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAC9D,iBAAiB,CAAC,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;KACnE,CAAC;IACF,cAAc,EAAE;QACd,OAAO,EAAE,cAAc,CAAC;KACzB,CAAC;CACH,CAAC"}
package/dist/types.d.mts CHANGED
@@ -2,6 +2,7 @@ import { KeyringControllerOptions } from "@metamask/keyring-controller";
2
2
  import { StorageAdapter } from "@metamask/storage-service";
3
3
  import type { Json } from "@metamask/utils";
4
4
  import type { DefaultActions, DefaultEvents, RootMessenger } from "./initialization/defaults.mjs";
5
+ import type { ApprovalControllerInstanceOptions } from "./initialization/instances/approval-controller/types.mjs";
5
6
  import { GenericEncryptor } from "./initialization/instances/keyring-controller.mjs";
6
7
  import { InitializationConfiguration } from "./initialization/types.mjs";
7
8
  export type WalletOptions = {
@@ -11,6 +12,7 @@ export type WalletOptions = {
11
12
  instanceOptions: InstanceSpecificOptions;
12
13
  };
13
14
  export type InstanceSpecificOptions = {
15
+ approvalController?: ApprovalControllerInstanceOptions;
14
16
  keyringController?: {
15
17
  encryptor?: GenericEncryptor;
16
18
  keyringBuilders?: KeyringControllerOptions['keyringBuilders'];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,sCAAkC;AACnC,OAAO,EAAE,gBAAgB,EAAE,0DAAsD;AACjF,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD,4BAA4B,CAAC,EAAE,2BAA2B,CACxD,OAAO,EACP,OAAO,CACR,EAAE,CAAC;IACJ,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,CAAC,EAAE;QAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAC9D,iBAAiB,CAAC,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;KACnE,CAAC;IACF,cAAc,EAAE;QACd,OAAO,EAAE,cAAc,CAAC;KACzB,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,qCAAqC;AACxE,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,sCAAkC;AACnC,OAAO,KAAK,EAAE,iCAAiC,EAAE,iEAA6D;AAC9G,OAAO,EAAE,gBAAgB,EAAE,0DAAsD;AACjF,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AAErE,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD,4BAA4B,CAAC,EAAE,2BAA2B,CACxD,OAAO,EACP,OAAO,CACR,EAAE,CAAC;IACJ,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,kBAAkB,CAAC,EAAE,iCAAiC,CAAC;IACvD,iBAAiB,CAAC,EAAE;QAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAC9D,iBAAiB,CAAC,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;KACnE,CAAC;IACF,cAAc,EAAE;QACd,OAAO,EAAE,cAAc,CAAC;KACzB,CAAC;CACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { KeyringControllerOptions } from '@metamask/keyring-controller';\nimport { StorageAdapter } from '@metamask/storage-service';\nimport type { Json } from '@metamask/utils';\n\nimport type {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n} from './initialization/defaults';\nimport { GenericEncryptor } from './initialization/instances/keyring-controller';\nimport { InitializationConfiguration } from './initialization/types';\n\nexport type WalletOptions = {\n messenger?: RootMessenger<DefaultActions, DefaultEvents>;\n state?: Record<string, Record<string, Json> | undefined>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n keyringController?: {\n encryptor?: GenericEncryptor;\n keyringBuilders?: KeyringControllerOptions['keyringBuilders'];\n keyringV2Builders?: KeyringControllerOptions['keyringV2Builders'];\n };\n storageService: {\n storage: StorageAdapter;\n };\n};\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { KeyringControllerOptions } from '@metamask/keyring-controller';\nimport { StorageAdapter } from '@metamask/storage-service';\nimport type { Json } from '@metamask/utils';\n\nimport type {\n DefaultActions,\n DefaultEvents,\n RootMessenger,\n} from './initialization/defaults';\nimport type { ApprovalControllerInstanceOptions } from './initialization/instances/approval-controller/types';\nimport { GenericEncryptor } from './initialization/instances/keyring-controller';\nimport { InitializationConfiguration } from './initialization/types';\n\nexport type WalletOptions = {\n messenger?: RootMessenger<DefaultActions, DefaultEvents>;\n state?: Record<string, Record<string, Json> | undefined>;\n initializationConfigurations?: InitializationConfiguration<\n unknown,\n unknown\n >[];\n instanceOptions: InstanceSpecificOptions;\n};\n\nexport type InstanceSpecificOptions = {\n approvalController?: ApprovalControllerInstanceOptions;\n keyringController?: {\n encryptor?: GenericEncryptor;\n keyringBuilders?: KeyringControllerOptions['keyringBuilders'];\n keyringV2Builders?: KeyringControllerOptions['keyringV2Builders'];\n };\n storageService: {\n storage: StorageAdapter;\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/wallet",
3
- "version": "2.0.0-preview-1b741b0f9",
3
+ "version": "2.0.0-preview-a3545aef8",
4
4
  "description": "Provides a shared framework for building MetaMask wallets",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -53,8 +53,10 @@
53
53
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
54
54
  },
55
55
  "dependencies": {
56
+ "@metamask/approval-controller": "^9.0.1",
56
57
  "@metamask/base-controller": "^9.1.0",
57
58
  "@metamask/browser-passworder": "^6.0.0",
59
+ "@metamask/controller-utils": "^12.1.0",
58
60
  "@metamask/keyring-controller": "^26.0.0",
59
61
  "@metamask/messenger": "^1.2.0",
60
62
  "@metamask/scure-bip39": "^2.1.1",