@metamask-previews/account-tree-controller 4.1.1-preview-ccd74c3b → 4.1.1-preview-84240e41c

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.
@@ -1,10 +1,4 @@
1
1
  "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var _KeyringRule_instances, _KeyringRule_findKeyringIdForAccount;
8
2
  Object.defineProperty(exports, "__esModule", { value: true });
9
3
  exports.KeyringRule = exports.getAccountGroupPrefixFromKeyringType = exports.getAccountWalletNameFromKeyringType = void 0;
10
4
  const account_api_1 = require("@metamask/account-api");
@@ -46,9 +40,6 @@ function getAccountWalletNameFromKeyringType(type) {
46
40
  case keyring_controller_1.KeyringTypes.snap: {
47
41
  return 'Snap Wallet';
48
42
  }
49
- case keyring_controller_1.KeyringTypes.mpc: {
50
- return 'MPC Wallet';
51
- }
52
43
  // ------------------------------------------------------------------------
53
44
  default: {
54
45
  return 'Unknown';
@@ -90,9 +81,6 @@ function getAccountGroupPrefixFromKeyringType(type) {
90
81
  case keyring_controller_1.KeyringTypes.snap: {
91
82
  return 'Snap Account';
92
83
  }
93
- case keyring_controller_1.KeyringTypes.mpc: {
94
- return 'MPC Account';
95
- }
96
84
  // ------------------------------------------------------------------------
97
85
  default: {
98
86
  return 'Unknown Account';
@@ -103,19 +91,13 @@ exports.getAccountGroupPrefixFromKeyringType = getAccountGroupPrefixFromKeyringT
103
91
  class KeyringRule extends rule_1.BaseRule {
104
92
  constructor() {
105
93
  super(...arguments);
106
- _KeyringRule_instances.add(this);
107
94
  this.walletType = account_api_2.AccountWalletType.Keyring;
108
95
  this.groupType = account_api_1.AccountGroupType.SingleAccount;
109
96
  }
110
97
  match(account) {
111
98
  // We assume that `type` is really a `KeyringTypes`.
112
99
  const keyringType = account.metadata.keyring.type;
113
- // For MPC keyrings, we store the keyring ID in metadata and create a separate wallet per keyring instance
114
- const keyringId = keyringType === keyring_controller_1.KeyringTypes.mpc
115
- ? __classPrivateFieldGet(this, _KeyringRule_instances, "m", _KeyringRule_findKeyringIdForAccount).call(this, keyringType, account.address)
116
- : undefined;
117
- const walletSubId = keyringId ? `${keyringType}/${keyringId}` : keyringType;
118
- const walletId = (0, account_api_3.toAccountWalletId)(this.walletType, walletSubId);
100
+ const walletId = (0, account_api_3.toAccountWalletId)(this.walletType, keyringType);
119
101
  const groupId = (0, account_api_3.toAccountGroupId)(walletId, account.address);
120
102
  return {
121
103
  wallet: {
@@ -124,7 +106,6 @@ class KeyringRule extends rule_1.BaseRule {
124
106
  metadata: {
125
107
  keyring: {
126
108
  type: keyringType,
127
- ...(keyringId && { id: keyringId }),
128
109
  },
129
110
  },
130
111
  },
@@ -139,13 +120,6 @@ class KeyringRule extends rule_1.BaseRule {
139
120
  };
140
121
  }
141
122
  getDefaultAccountWalletName(wallet) {
142
- if (wallet.metadata.keyring.type === keyring_controller_1.KeyringTypes.mpc &&
143
- wallet.metadata.keyring.id) {
144
- const { keyrings } = this.messenger.call('KeyringController:getState');
145
- const mpcKeyrings = keyrings.filter((k) => k.type === keyring_controller_1.KeyringTypes.mpc);
146
- const index = mpcKeyrings.findIndex((k) => k.metadata?.id === wallet.metadata.keyring.id);
147
- return `MPC Wallet ${index === -1 ? '' : index + 1}`.trim();
148
- }
149
123
  return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);
150
124
  }
151
125
  getComputedAccountGroupName(group) {
@@ -156,14 +130,4 @@ class KeyringRule extends rule_1.BaseRule {
156
130
  }
157
131
  }
158
132
  exports.KeyringRule = KeyringRule;
159
- _KeyringRule_instances = new WeakSet(), _KeyringRule_findKeyringIdForAccount = function _KeyringRule_findKeyringIdForAccount(keyringType, address) {
160
- const { keyrings } = this.messenger.call('KeyringController:getState');
161
- const matchingKeyrings = keyrings.filter((k) => k.type === keyringType);
162
- for (const keyring of matchingKeyrings) {
163
- if (keyring.accounts.some((a) => a.toLowerCase() === address.toLowerCase())) {
164
- return keyring.metadata?.id;
165
- }
166
- }
167
- return undefined;
168
- };
169
133
  //# sourceMappingURL=keyring.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uDAAyD;AACzD,uDAA0D;AAC1D,uDAA4E;AAC5E,qEAA4D;AAI5D,sCAAmC;AAInC;;;;;GAKG;AACH,SAAgB,mCAAmC,CAAC,IAAkB;IACpE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,iCAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,iCAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,wEAAwE;QACxE,0CAA0C;QAC1C,KAAK,iCAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,KAAK,iCAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,KAAK,iCAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,2EAA2E;QAC3E,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AApCD,kFAoCC;AAED;;;;;GAKG;AACH,SAAgB,oCAAoC,CAAC,IAAkB;IACrE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,KAAK,iCAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1B,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,KAAK,iCAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,wEAAwE;QACxE,0CAA0C;QAC1C,KAAK,iCAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,iCAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,KAAK,iCAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,2EAA2E;QAC3E,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,iBAAiB,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AApCD,oFAoCC;AAED,MAAa,WACX,SAAQ,eAAQ;IADlB;;;QAIW,eAAU,GAAG,+BAAiB,CAAC,OAAO,CAAC;QAEvC,cAAS,GAAG,8BAAgB,CAAC,aAAa,CAAC;IAsFtD,CAAC;IApEC,KAAK,CACH,OAAwB;QAGxB,oDAAoD;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAoB,CAAC;QAElE,0GAA0G;QAC1G,MAAM,SAAS,GACb,WAAW,KAAK,iCAAY,CAAC,GAAG;YAC9B,CAAC,CAAC,uBAAA,IAAI,oEAAyB,MAA7B,IAAI,EAA0B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAA,+BAAiB,EAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAA,8BAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,UAAU;gBACrB,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW;wBACjB,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;qBACpC;iBACF;aACF;YAED,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE;oBACR,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;iBACd;aACF;SACF,CAAC;IACJ,CAAC;IAED,2BAA2B,CACzB,MAAwD;QAExD,IACE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,iCAAY,CAAC,GAAG;YACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAC1B,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iCAAY,CAAC,GAAG,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CACrD,CAAC;YACF,OAAO,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,mCAAmC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,2BAA2B,CACzB,KAA2D;QAE3D,OAAO,KAAK,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,4BAA4B,CAC1B,MAAwD;QAExD,OAAO,oCAAoC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;CACF;AA5FD,kCA4FC;6HAnFG,WAAmB,EACnB,OAAe;IAEf,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACxE,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IACE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,EACvE,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport { toAccountGroupId, toAccountWalletId } from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type { AccountGroupObjectOf } from '../group';\nimport { BaseRule } from '../rule';\nimport type { Rule, RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\n/**\n * Get wallet name from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountWalletNameFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported accounts';\n }\n case KeyringTypes.trezor: {\n return 'Trezor';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey';\n }\n case KeyringTypes.ledger: {\n return 'Ledger';\n }\n case KeyringTypes.lattice: {\n return 'Lattice';\n }\n case KeyringTypes.qr: {\n return 'QR';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'HD Wallet';\n }\n case KeyringTypes.snap: {\n return 'Snap Wallet';\n }\n case KeyringTypes.mpc: {\n return 'MPC Wallet';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown';\n }\n }\n}\n\n/**\n * Get group name prefix from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountGroupPrefixFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported Account';\n }\n case KeyringTypes.trezor: {\n return 'Trezor Account';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey Account';\n }\n case KeyringTypes.ledger: {\n return 'Ledger Account';\n }\n case KeyringTypes.lattice: {\n return 'Lattice Account';\n }\n case KeyringTypes.qr: {\n return 'QR Account';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'Account';\n }\n case KeyringTypes.snap: {\n return 'Snap Account';\n }\n case KeyringTypes.mpc: {\n return 'MPC Account';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown Account';\n }\n }\n}\n\nexport class KeyringRule\n extends BaseRule\n implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Keyring;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n #findKeyringIdForAccount(\n keyringType: string,\n address: string,\n ): string | undefined {\n const { keyrings } = this.messenger.call('KeyringController:getState');\n const matchingKeyrings = keyrings.filter((k) => k.type === keyringType);\n for (const keyring of matchingKeyrings) {\n if (\n keyring.accounts.some((a) => a.toLowerCase() === address.toLowerCase())\n ) {\n return keyring.metadata?.id;\n }\n }\n return undefined;\n }\n\n match(\n account: InternalAccount,\n // No `| undefined` return type for this rule, as it cannot fail.\n ): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {\n // We assume that `type` is really a `KeyringTypes`.\n const keyringType = account.metadata.keyring.type as KeyringTypes;\n\n // For MPC keyrings, we store the keyring ID in metadata and create a separate wallet per keyring instance\n const keyringId =\n keyringType === KeyringTypes.mpc\n ? this.#findKeyringIdForAccount(keyringType, account.address)\n : undefined;\n\n const walletSubId = keyringId ? `${keyringType}/${keyringId}` : keyringType;\n const walletId = toAccountWalletId(this.walletType, walletSubId);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n keyring: {\n type: keyringType,\n ...(keyringId && { id: keyringId }),\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n if (\n wallet.metadata.keyring.type === KeyringTypes.mpc &&\n wallet.metadata.keyring.id\n ) {\n const { keyrings } = this.messenger.call('KeyringController:getState');\n const mpcKeyrings = keyrings.filter((k) => k.type === KeyringTypes.mpc);\n const index = mpcKeyrings.findIndex(\n (k) => k.metadata?.id === wallet.metadata.keyring.id,\n );\n return `MPC Wallet ${index === -1 ? '' : index + 1}`.trim();\n }\n return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.SingleAccount>,\n ): string {\n return super.getComputedAccountGroupName(group);\n }\n\n getDefaultAccountGroupPrefix(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);\n }\n}\n"]}
1
+ {"version":3,"file":"keyring.cjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport { toAccountGroupId, toAccountWalletId } from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type { AccountGroupObjectOf } from '../group';\nimport { BaseRule } from '../rule';\nimport type { Rule, RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\n/**\n * Get wallet name from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountWalletNameFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported accounts';\n }\n case KeyringTypes.trezor: {\n return 'Trezor';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey';\n }\n case KeyringTypes.ledger: {\n return 'Ledger';\n }\n case KeyringTypes.lattice: {\n return 'Lattice';\n }\n case KeyringTypes.qr: {\n return 'QR';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'HD Wallet';\n }\n case KeyringTypes.snap: {\n return 'Snap Wallet';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown';\n }\n }\n}\n\n/**\n * Get group name prefix from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountGroupPrefixFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported Account';\n }\n case KeyringTypes.trezor: {\n return 'Trezor Account';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey Account';\n }\n case KeyringTypes.ledger: {\n return 'Ledger Account';\n }\n case KeyringTypes.lattice: {\n return 'Lattice Account';\n }\n case KeyringTypes.qr: {\n return 'QR Account';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'Account';\n }\n case KeyringTypes.snap: {\n return 'Snap Account';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown Account';\n }\n }\n}\n\nexport class KeyringRule\n extends BaseRule\n implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Keyring;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n match(\n account: InternalAccount,\n // No `| undefined` return type for this rule, as it cannot fail.\n ): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {\n // We assume that `type` is really a `KeyringTypes`.\n const keyringType = account.metadata.keyring.type as KeyringTypes;\n\n const walletId = toAccountWalletId(this.walletType, keyringType);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n keyring: {\n type: keyringType,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.SingleAccount>,\n ): string {\n return super.getComputedAccountGroupName(group);\n }\n\n getDefaultAccountGroupPrefix(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);\n }\n}\n"]}
@@ -12,16 +12,15 @@ import type { AccountWalletObjectOf } from "../wallet.cjs";
12
12
  * @param type - Keyring's type.
13
13
  * @returns Wallet name.
14
14
  */
15
- export declare function getAccountWalletNameFromKeyringType(type: KeyringTypes): "Unknown" | "Imported accounts" | "Trezor" | "OneKey" | "Ledger" | "Lattice" | "QR" | "HD Wallet" | "Snap Wallet" | "MPC Wallet";
15
+ export declare function getAccountWalletNameFromKeyringType(type: KeyringTypes): "Unknown" | "Imported accounts" | "Trezor" | "OneKey" | "Ledger" | "Lattice" | "QR" | "HD Wallet" | "Snap Wallet";
16
16
  /**
17
17
  * Get group name prefix from a keyring type.
18
18
  *
19
19
  * @param type - Keyring's type.
20
20
  * @returns Wallet name.
21
21
  */
22
- export declare function getAccountGroupPrefixFromKeyringType(type: KeyringTypes): "Account" | "Imported Account" | "Trezor Account" | "OneKey Account" | "Ledger Account" | "Lattice Account" | "QR Account" | "Snap Account" | "MPC Account" | "Unknown Account";
22
+ export declare function getAccountGroupPrefixFromKeyringType(type: KeyringTypes): "Account" | "Imported Account" | "Trezor Account" | "OneKey Account" | "Ledger Account" | "Lattice Account" | "QR Account" | "Snap Account" | "Unknown Account";
23
23
  export declare class KeyringRule extends BaseRule implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {
24
- #private;
25
24
  readonly walletType = AccountWalletType.Keyring;
26
25
  readonly groupType = AccountGroupType.SingleAccount;
27
26
  match(account: InternalAccount): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount>;
@@ -1 +1 @@
1
- {"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,oBAAgB;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAgB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,oIAoCrE;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,YAAY,mLAoCtE;AAED,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;;IAE1E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,kCAAkC;IAkBpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEvB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAqCxE,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAeT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAC1D,MAAM;IAIT,4BAA4B,CAC1B,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;CAGV"}
1
+ {"version":3,"file":"keyring.d.cts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,oBAAgB;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAgB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,qHAiCrE;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,YAAY,mKAiCtE;AAED,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAE1E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,kCAAkC;IAEpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEvB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IA6BxE,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAIT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAC1D,MAAM;IAIT,4BAA4B,CAC1B,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;CAGV"}
@@ -12,16 +12,15 @@ import type { AccountWalletObjectOf } from "../wallet.mjs";
12
12
  * @param type - Keyring's type.
13
13
  * @returns Wallet name.
14
14
  */
15
- export declare function getAccountWalletNameFromKeyringType(type: KeyringTypes): "Unknown" | "Imported accounts" | "Trezor" | "OneKey" | "Ledger" | "Lattice" | "QR" | "HD Wallet" | "Snap Wallet" | "MPC Wallet";
15
+ export declare function getAccountWalletNameFromKeyringType(type: KeyringTypes): "Unknown" | "Imported accounts" | "Trezor" | "OneKey" | "Ledger" | "Lattice" | "QR" | "HD Wallet" | "Snap Wallet";
16
16
  /**
17
17
  * Get group name prefix from a keyring type.
18
18
  *
19
19
  * @param type - Keyring's type.
20
20
  * @returns Wallet name.
21
21
  */
22
- export declare function getAccountGroupPrefixFromKeyringType(type: KeyringTypes): "Account" | "Imported Account" | "Trezor Account" | "OneKey Account" | "Ledger Account" | "Lattice Account" | "QR Account" | "Snap Account" | "MPC Account" | "Unknown Account";
22
+ export declare function getAccountGroupPrefixFromKeyringType(type: KeyringTypes): "Account" | "Imported Account" | "Trezor Account" | "OneKey Account" | "Ledger Account" | "Lattice Account" | "QR Account" | "Snap Account" | "Unknown Account";
23
23
  export declare class KeyringRule extends BaseRule implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {
24
- #private;
25
24
  readonly walletType = AccountWalletType.Keyring;
26
25
  readonly groupType = AccountGroupType.SingleAccount;
27
26
  match(account: InternalAccount): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount>;
@@ -1 +1 @@
1
- {"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,oBAAgB;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAgB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,oIAoCrE;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,YAAY,mLAoCtE;AAED,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;;IAE1E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,kCAAkC;IAkBpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEvB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAqCxE,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAeT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAC1D,MAAM;IAIT,4BAA4B,CAC1B,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;CAGV"}
1
+ {"version":3,"file":"keyring.d.mts","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAE1D,OAAO,EAAE,YAAY,EAAE,qCAAqC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAiB;AACrD,OAAO,EAAE,QAAQ,EAAE,oBAAgB;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAgB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAkB;AAEvD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,YAAY,qHAiCrE;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,YAAY,mKAiCtE;AAED,qBAAa,WACX,SAAQ,QACR,YAAW,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAE1E,QAAQ,CAAC,UAAU,6BAA6B;IAEhD,QAAQ,CAAC,SAAS,kCAAkC;IAEpD,KAAK,CACH,OAAO,EAAE,eAAe,GAEvB,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC;IA6BxE,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;IAIT,2BAA2B,CACzB,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAC1D,MAAM;IAIT,4BAA4B,CAC1B,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GACvD,MAAM;CAGV"}
@@ -1,9 +1,3 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _KeyringRule_instances, _KeyringRule_findKeyringIdForAccount;
7
1
  import { AccountGroupType } from "@metamask/account-api";
8
2
  import { AccountWalletType } from "@metamask/account-api";
9
3
  import { toAccountGroupId, toAccountWalletId } from "@metamask/account-api";
@@ -43,9 +37,6 @@ export function getAccountWalletNameFromKeyringType(type) {
43
37
  case KeyringTypes.snap: {
44
38
  return 'Snap Wallet';
45
39
  }
46
- case KeyringTypes.mpc: {
47
- return 'MPC Wallet';
48
- }
49
40
  // ------------------------------------------------------------------------
50
41
  default: {
51
42
  return 'Unknown';
@@ -86,9 +77,6 @@ export function getAccountGroupPrefixFromKeyringType(type) {
86
77
  case KeyringTypes.snap: {
87
78
  return 'Snap Account';
88
79
  }
89
- case KeyringTypes.mpc: {
90
- return 'MPC Account';
91
- }
92
80
  // ------------------------------------------------------------------------
93
81
  default: {
94
82
  return 'Unknown Account';
@@ -98,19 +86,13 @@ export function getAccountGroupPrefixFromKeyringType(type) {
98
86
  export class KeyringRule extends BaseRule {
99
87
  constructor() {
100
88
  super(...arguments);
101
- _KeyringRule_instances.add(this);
102
89
  this.walletType = AccountWalletType.Keyring;
103
90
  this.groupType = AccountGroupType.SingleAccount;
104
91
  }
105
92
  match(account) {
106
93
  // We assume that `type` is really a `KeyringTypes`.
107
94
  const keyringType = account.metadata.keyring.type;
108
- // For MPC keyrings, we store the keyring ID in metadata and create a separate wallet per keyring instance
109
- const keyringId = keyringType === KeyringTypes.mpc
110
- ? __classPrivateFieldGet(this, _KeyringRule_instances, "m", _KeyringRule_findKeyringIdForAccount).call(this, keyringType, account.address)
111
- : undefined;
112
- const walletSubId = keyringId ? `${keyringType}/${keyringId}` : keyringType;
113
- const walletId = toAccountWalletId(this.walletType, walletSubId);
95
+ const walletId = toAccountWalletId(this.walletType, keyringType);
114
96
  const groupId = toAccountGroupId(walletId, account.address);
115
97
  return {
116
98
  wallet: {
@@ -119,7 +101,6 @@ export class KeyringRule extends BaseRule {
119
101
  metadata: {
120
102
  keyring: {
121
103
  type: keyringType,
122
- ...(keyringId && { id: keyringId }),
123
104
  },
124
105
  },
125
106
  },
@@ -134,13 +115,6 @@ export class KeyringRule extends BaseRule {
134
115
  };
135
116
  }
136
117
  getDefaultAccountWalletName(wallet) {
137
- if (wallet.metadata.keyring.type === KeyringTypes.mpc &&
138
- wallet.metadata.keyring.id) {
139
- const { keyrings } = this.messenger.call('KeyringController:getState');
140
- const mpcKeyrings = keyrings.filter((k) => k.type === KeyringTypes.mpc);
141
- const index = mpcKeyrings.findIndex((k) => k.metadata?.id === wallet.metadata.keyring.id);
142
- return `MPC Wallet ${index === -1 ? '' : index + 1}`.trim();
143
- }
144
118
  return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);
145
119
  }
146
120
  getComputedAccountGroupName(group) {
@@ -150,14 +124,4 @@ export class KeyringRule extends BaseRule {
150
124
  return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);
151
125
  }
152
126
  }
153
- _KeyringRule_instances = new WeakSet(), _KeyringRule_findKeyringIdForAccount = function _KeyringRule_findKeyringIdForAccount(keyringType, address) {
154
- const { keyrings } = this.messenger.call('KeyringController:getState');
155
- const matchingKeyrings = keyrings.filter((k) => k.type === keyringType);
156
- for (const keyring of matchingKeyrings) {
157
- if (keyring.accounts.some((a) => a.toLowerCase() === address.toLowerCase())) {
158
- return keyring.metadata?.id;
159
- }
160
- }
161
- return undefined;
162
- };
163
127
  //# sourceMappingURL=keyring.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport { toAccountGroupId, toAccountWalletId } from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type { AccountGroupObjectOf } from '../group';\nimport { BaseRule } from '../rule';\nimport type { Rule, RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\n/**\n * Get wallet name from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountWalletNameFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported accounts';\n }\n case KeyringTypes.trezor: {\n return 'Trezor';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey';\n }\n case KeyringTypes.ledger: {\n return 'Ledger';\n }\n case KeyringTypes.lattice: {\n return 'Lattice';\n }\n case KeyringTypes.qr: {\n return 'QR';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'HD Wallet';\n }\n case KeyringTypes.snap: {\n return 'Snap Wallet';\n }\n case KeyringTypes.mpc: {\n return 'MPC Wallet';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown';\n }\n }\n}\n\n/**\n * Get group name prefix from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountGroupPrefixFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported Account';\n }\n case KeyringTypes.trezor: {\n return 'Trezor Account';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey Account';\n }\n case KeyringTypes.ledger: {\n return 'Ledger Account';\n }\n case KeyringTypes.lattice: {\n return 'Lattice Account';\n }\n case KeyringTypes.qr: {\n return 'QR Account';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'Account';\n }\n case KeyringTypes.snap: {\n return 'Snap Account';\n }\n case KeyringTypes.mpc: {\n return 'MPC Account';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown Account';\n }\n }\n}\n\nexport class KeyringRule\n extends BaseRule\n implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Keyring;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n #findKeyringIdForAccount(\n keyringType: string,\n address: string,\n ): string | undefined {\n const { keyrings } = this.messenger.call('KeyringController:getState');\n const matchingKeyrings = keyrings.filter((k) => k.type === keyringType);\n for (const keyring of matchingKeyrings) {\n if (\n keyring.accounts.some((a) => a.toLowerCase() === address.toLowerCase())\n ) {\n return keyring.metadata?.id;\n }\n }\n return undefined;\n }\n\n match(\n account: InternalAccount,\n // No `| undefined` return type for this rule, as it cannot fail.\n ): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {\n // We assume that `type` is really a `KeyringTypes`.\n const keyringType = account.metadata.keyring.type as KeyringTypes;\n\n // For MPC keyrings, we store the keyring ID in metadata and create a separate wallet per keyring instance\n const keyringId =\n keyringType === KeyringTypes.mpc\n ? this.#findKeyringIdForAccount(keyringType, account.address)\n : undefined;\n\n const walletSubId = keyringId ? `${keyringType}/${keyringId}` : keyringType;\n const walletId = toAccountWalletId(this.walletType, walletSubId);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n keyring: {\n type: keyringType,\n ...(keyringId && { id: keyringId }),\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n if (\n wallet.metadata.keyring.type === KeyringTypes.mpc &&\n wallet.metadata.keyring.id\n ) {\n const { keyrings } = this.messenger.call('KeyringController:getState');\n const mpcKeyrings = keyrings.filter((k) => k.type === KeyringTypes.mpc);\n const index = mpcKeyrings.findIndex(\n (k) => k.metadata?.id === wallet.metadata.keyring.id,\n );\n return `MPC Wallet ${index === -1 ? '' : index + 1}`.trim();\n }\n return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.SingleAccount>,\n ): string {\n return super.getComputedAccountGroupName(group);\n }\n\n getDefaultAccountGroupPrefix(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);\n }\n}\n"]}
1
+ {"version":3,"file":"keyring.mjs","sourceRoot":"","sources":["../../src/rules/keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport { toAccountGroupId, toAccountWalletId } from '@metamask/account-api';\nimport { KeyringTypes } from '@metamask/keyring-controller';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\n\nimport type { AccountGroupObjectOf } from '../group';\nimport { BaseRule } from '../rule';\nimport type { Rule, RuleResult } from '../rule';\nimport type { AccountWalletObjectOf } from '../wallet';\n\n/**\n * Get wallet name from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountWalletNameFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported accounts';\n }\n case KeyringTypes.trezor: {\n return 'Trezor';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey';\n }\n case KeyringTypes.ledger: {\n return 'Ledger';\n }\n case KeyringTypes.lattice: {\n return 'Lattice';\n }\n case KeyringTypes.qr: {\n return 'QR';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'HD Wallet';\n }\n case KeyringTypes.snap: {\n return 'Snap Wallet';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown';\n }\n }\n}\n\n/**\n * Get group name prefix from a keyring type.\n *\n * @param type - Keyring's type.\n * @returns Wallet name.\n */\nexport function getAccountGroupPrefixFromKeyringType(type: KeyringTypes) {\n switch (type) {\n case KeyringTypes.simple: {\n return 'Imported Account';\n }\n case KeyringTypes.trezor: {\n return 'Trezor Account';\n }\n case KeyringTypes.oneKey: {\n return 'OneKey Account';\n }\n case KeyringTypes.ledger: {\n return 'Ledger Account';\n }\n case KeyringTypes.lattice: {\n return 'Lattice Account';\n }\n case KeyringTypes.qr: {\n return 'QR Account';\n }\n // Those keyrings should never really be used in such context since they\n // should be used by other grouping rules.\n case KeyringTypes.hd: {\n return 'Account';\n }\n case KeyringTypes.snap: {\n return 'Snap Account';\n }\n // ------------------------------------------------------------------------\n default: {\n return 'Unknown Account';\n }\n }\n}\n\nexport class KeyringRule\n extends BaseRule\n implements Rule<AccountWalletType.Keyring, AccountGroupType.SingleAccount>\n{\n readonly walletType = AccountWalletType.Keyring;\n\n readonly groupType = AccountGroupType.SingleAccount;\n\n match(\n account: InternalAccount,\n // No `| undefined` return type for this rule, as it cannot fail.\n ): RuleResult<AccountWalletType.Keyring, AccountGroupType.SingleAccount> {\n // We assume that `type` is really a `KeyringTypes`.\n const keyringType = account.metadata.keyring.type as KeyringTypes;\n\n const walletId = toAccountWalletId(this.walletType, keyringType);\n const groupId = toAccountGroupId(walletId, account.address);\n\n return {\n wallet: {\n type: this.walletType,\n id: walletId,\n metadata: {\n keyring: {\n type: keyringType,\n },\n },\n },\n\n group: {\n type: this.groupType,\n id: groupId,\n metadata: {\n pinned: false,\n hidden: false,\n },\n },\n };\n }\n\n getDefaultAccountWalletName(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountWalletNameFromKeyringType(wallet.metadata.keyring.type);\n }\n\n getComputedAccountGroupName(\n group: AccountGroupObjectOf<AccountGroupType.SingleAccount>,\n ): string {\n return super.getComputedAccountGroupName(group);\n }\n\n getDefaultAccountGroupPrefix(\n wallet: AccountWalletObjectOf<AccountWalletType.Keyring>,\n ): string {\n return getAccountGroupPrefixFromKeyringType(wallet.metadata.keyring.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport type {\n AccountWalletType,\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n} from '@metamask/account-api';\nimport type { MultichainAccountWalletStatus } from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n /** Keyring instance ID, used for keyrings that can have multiple instances (e.g., MPC) */\n id?: string;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n"]}
1
+ {"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport type {\n AccountWalletType,\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n} from '@metamask/account-api';\nimport type { MultichainAccountWalletStatus } from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n"]}
package/dist/wallet.d.cts CHANGED
@@ -76,8 +76,6 @@ export type AccountWalletKeyringObject = {
76
76
  metadata: AccountTreeWalletMetadata & {
77
77
  keyring: {
78
78
  type: KeyringTypes;
79
- /** Keyring instance ID, used for keyrings that can have multiple instances (e.g., MPC) */
80
- id?: string;
81
79
  };
82
80
  };
83
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/dist/wallet.d.mts CHANGED
@@ -76,8 +76,6 @@ export type AccountWalletKeyringObject = {
76
76
  metadata: AccountTreeWalletMetadata & {
77
77
  keyring: {
78
78
  type: KeyringTypes;
79
- /** Keyring instance ID, used for keyrings that can have multiple instances (e.g., MPC) */
80
- id?: string;
81
79
  };
82
80
  };
83
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport type {\n AccountWalletType,\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n} from '@metamask/account-api';\nimport type { MultichainAccountWalletStatus } from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n /** Keyring instance ID, used for keyrings that can have multiple instances (e.g., MPC) */\n id?: string;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n"]}
1
+ {"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport type {\n AccountWalletType,\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n} from '@metamask/account-api';\nimport type { MultichainAccountWalletStatus } from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/account-tree-controller",
3
- "version": "4.1.1-preview-ccd74c3b",
3
+ "version": "4.1.1-preview-84240e41c",
4
4
  "description": "Controller to group account together based on some pre-defined rules",
5
5
  "keywords": [
6
6
  "MetaMask",