@metamask-previews/account-tree-controller 7.5.3-preview-ea5e7f6d0 → 7.5.3-preview-34f2bcbf7

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 (92) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/dist/AccountTreeController.cjs +40 -13
  3. package/dist/AccountTreeController.cjs.map +1 -1
  4. package/dist/AccountTreeController.d.cts +0 -6
  5. package/dist/AccountTreeController.d.cts.map +1 -1
  6. package/dist/AccountTreeController.d.mts +0 -6
  7. package/dist/AccountTreeController.d.mts.map +1 -1
  8. package/dist/AccountTreeController.mjs +42 -15
  9. package/dist/AccountTreeController.mjs.map +1 -1
  10. package/dist/backup-and-sync/service/index.cjs +25 -5
  11. package/dist/backup-and-sync/service/index.cjs.map +1 -1
  12. package/dist/backup-and-sync/service/index.d.cts.map +1 -1
  13. package/dist/backup-and-sync/service/index.d.mts.map +1 -1
  14. package/dist/backup-and-sync/service/index.mjs +25 -5
  15. package/dist/backup-and-sync/service/index.mjs.map +1 -1
  16. package/dist/backup-and-sync/syncing/group.cjs +1 -0
  17. package/dist/backup-and-sync/syncing/group.cjs.map +1 -1
  18. package/dist/backup-and-sync/syncing/group.d.cts.map +1 -1
  19. package/dist/backup-and-sync/syncing/group.d.mts.map +1 -1
  20. package/dist/backup-and-sync/syncing/group.mjs +1 -0
  21. package/dist/backup-and-sync/syncing/group.mjs.map +1 -1
  22. package/dist/backup-and-sync/syncing/legacy.cjs +1 -0
  23. package/dist/backup-and-sync/syncing/legacy.cjs.map +1 -1
  24. package/dist/backup-and-sync/syncing/legacy.d.cts.map +1 -1
  25. package/dist/backup-and-sync/syncing/legacy.d.mts.map +1 -1
  26. package/dist/backup-and-sync/syncing/legacy.mjs +1 -0
  27. package/dist/backup-and-sync/syncing/legacy.mjs.map +1 -1
  28. package/dist/backup-and-sync/syncing/metadata.cjs +1 -0
  29. package/dist/backup-and-sync/syncing/metadata.cjs.map +1 -1
  30. package/dist/backup-and-sync/syncing/metadata.d.cts.map +1 -1
  31. package/dist/backup-and-sync/syncing/metadata.d.mts.map +1 -1
  32. package/dist/backup-and-sync/syncing/metadata.mjs +1 -0
  33. package/dist/backup-and-sync/syncing/metadata.mjs.map +1 -1
  34. package/dist/backup-and-sync/types.cjs.map +1 -1
  35. package/dist/backup-and-sync/types.d.cts +22 -0
  36. package/dist/backup-and-sync/types.d.cts.map +1 -1
  37. package/dist/backup-and-sync/types.d.mts +22 -0
  38. package/dist/backup-and-sync/types.d.mts.map +1 -1
  39. package/dist/backup-and-sync/types.mjs.map +1 -1
  40. package/dist/backup-and-sync/user-storage/network-operations.cjs +9 -3
  41. package/dist/backup-and-sync/user-storage/network-operations.cjs.map +1 -1
  42. package/dist/backup-and-sync/user-storage/network-operations.d.cts.map +1 -1
  43. package/dist/backup-and-sync/user-storage/network-operations.d.mts.map +1 -1
  44. package/dist/backup-and-sync/user-storage/network-operations.mjs +9 -3
  45. package/dist/backup-and-sync/user-storage/network-operations.mjs.map +1 -1
  46. package/dist/backup-and-sync/utils/index.cjs +3 -1
  47. package/dist/backup-and-sync/utils/index.cjs.map +1 -1
  48. package/dist/backup-and-sync/utils/index.d.cts +1 -0
  49. package/dist/backup-and-sync/utils/index.d.cts.map +1 -1
  50. package/dist/backup-and-sync/utils/index.d.mts +1 -0
  51. package/dist/backup-and-sync/utils/index.d.mts.map +1 -1
  52. package/dist/backup-and-sync/utils/index.mjs +1 -0
  53. package/dist/backup-and-sync/utils/index.mjs.map +1 -1
  54. package/dist/backup-and-sync/utils/mutation-tracker.cjs +29 -0
  55. package/dist/backup-and-sync/utils/mutation-tracker.cjs.map +1 -0
  56. package/dist/backup-and-sync/utils/mutation-tracker.d.cts +9 -0
  57. package/dist/backup-and-sync/utils/mutation-tracker.d.cts.map +1 -0
  58. package/dist/backup-and-sync/utils/mutation-tracker.d.mts +9 -0
  59. package/dist/backup-and-sync/utils/mutation-tracker.d.mts.map +1 -0
  60. package/dist/backup-and-sync/utils/mutation-tracker.mjs +25 -0
  61. package/dist/backup-and-sync/utils/mutation-tracker.mjs.map +1 -0
  62. package/dist/group.cjs +16 -1
  63. package/dist/group.cjs.map +1 -1
  64. package/dist/group.d.cts +19 -2
  65. package/dist/group.d.cts.map +1 -1
  66. package/dist/group.d.mts +19 -2
  67. package/dist/group.d.mts.map +1 -1
  68. package/dist/group.mjs +14 -0
  69. package/dist/group.mjs.map +1 -1
  70. package/dist/index.cjs +4 -1
  71. package/dist/index.cjs.map +1 -1
  72. package/dist/index.d.cts +2 -1
  73. package/dist/index.d.cts.map +1 -1
  74. package/dist/index.d.mts +2 -1
  75. package/dist/index.d.mts.map +1 -1
  76. package/dist/index.mjs +2 -1
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/types.cjs.map +1 -1
  79. package/dist/types.d.cts +4 -4
  80. package/dist/types.d.cts.map +1 -1
  81. package/dist/types.d.mts +4 -4
  82. package/dist/types.d.mts.map +1 -1
  83. package/dist/types.mjs.map +1 -1
  84. package/dist/wallet.cjs +16 -0
  85. package/dist/wallet.cjs.map +1 -1
  86. package/dist/wallet.d.cts +17 -2
  87. package/dist/wallet.d.cts.map +1 -1
  88. package/dist/wallet.d.mts +17 -2
  89. package/dist/wallet.d.mts.map +1 -1
  90. package/dist/wallet.mjs +14 -1
  91. package/dist/wallet.mjs.map +1 -1
  92. package/package.json +4 -4
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSyncMutationTracker = void 0;
4
+ /**
5
+ * Creates a tracker that records whether the current full sync run performed a
6
+ * real write.
7
+ *
8
+ * @returns A fresh mutation tracker.
9
+ */
10
+ const createSyncMutationTracker = () => {
11
+ let remoteWrite = false;
12
+ let localWrite = false;
13
+ return {
14
+ setRemoteWrite: (value) => {
15
+ remoteWrite = value;
16
+ },
17
+ getLocalWrite: () => localWrite,
18
+ setLocalWrite: (value) => {
19
+ localWrite = value;
20
+ },
21
+ hasOccurred: () => remoteWrite || localWrite,
22
+ reset: () => {
23
+ remoteWrite = false;
24
+ localWrite = false;
25
+ },
26
+ };
27
+ };
28
+ exports.createSyncMutationTracker = createSyncMutationTracker;
29
+ //# sourceMappingURL=mutation-tracker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-tracker.cjs","sourceRoot":"","sources":["../../../src/backup-and-sync/utils/mutation-tracker.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACI,MAAM,yBAAyB,GAAG,GAAwB,EAAE;IACjE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO;QACL,cAAc,EAAE,CAAC,KAAc,EAAQ,EAAE;YACvC,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,aAAa,EAAE,GAAY,EAAE,CAAC,UAAU;QACxC,aAAa,EAAE,CAAC,KAAc,EAAQ,EAAE;YACtC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,WAAW,EAAE,GAAY,EAAE,CAAC,WAAW,IAAI,UAAU;QACrD,KAAK,EAAE,GAAS,EAAE;YAChB,WAAW,GAAG,KAAK,CAAC;YACpB,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,yBAAyB,6BAiBpC","sourcesContent":["import type { SyncMutationTracker } from '../types';\n\n/**\n * Creates a tracker that records whether the current full sync run performed a\n * real write.\n *\n * @returns A fresh mutation tracker.\n */\nexport const createSyncMutationTracker = (): SyncMutationTracker => {\n let remoteWrite = false;\n let localWrite = false;\n return {\n setRemoteWrite: (value: boolean): void => {\n remoteWrite = value;\n },\n getLocalWrite: (): boolean => localWrite,\n setLocalWrite: (value: boolean): void => {\n localWrite = value;\n },\n hasOccurred: (): boolean => remoteWrite || localWrite,\n reset: (): void => {\n remoteWrite = false;\n localWrite = false;\n },\n };\n};\n"]}
@@ -0,0 +1,9 @@
1
+ import type { SyncMutationTracker } from "../types.cjs";
2
+ /**
3
+ * Creates a tracker that records whether the current full sync run performed a
4
+ * real write.
5
+ *
6
+ * @returns A fresh mutation tracker.
7
+ */
8
+ export declare const createSyncMutationTracker: () => SyncMutationTracker;
9
+ //# sourceMappingURL=mutation-tracker.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-tracker.d.cts","sourceRoot":"","sources":["../../../src/backup-and-sync/utils/mutation-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAiB;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAAO,mBAiB5C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { SyncMutationTracker } from "../types.mjs";
2
+ /**
3
+ * Creates a tracker that records whether the current full sync run performed a
4
+ * real write.
5
+ *
6
+ * @returns A fresh mutation tracker.
7
+ */
8
+ export declare const createSyncMutationTracker: () => SyncMutationTracker;
9
+ //# sourceMappingURL=mutation-tracker.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-tracker.d.mts","sourceRoot":"","sources":["../../../src/backup-and-sync/utils/mutation-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAiB;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAAO,mBAiB5C,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Creates a tracker that records whether the current full sync run performed a
3
+ * real write.
4
+ *
5
+ * @returns A fresh mutation tracker.
6
+ */
7
+ export const createSyncMutationTracker = () => {
8
+ let remoteWrite = false;
9
+ let localWrite = false;
10
+ return {
11
+ setRemoteWrite: (value) => {
12
+ remoteWrite = value;
13
+ },
14
+ getLocalWrite: () => localWrite,
15
+ setLocalWrite: (value) => {
16
+ localWrite = value;
17
+ },
18
+ hasOccurred: () => remoteWrite || localWrite,
19
+ reset: () => {
20
+ remoteWrite = false;
21
+ localWrite = false;
22
+ },
23
+ };
24
+ };
25
+ //# sourceMappingURL=mutation-tracker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-tracker.mjs","sourceRoot":"","sources":["../../../src/backup-and-sync/utils/mutation-tracker.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAwB,EAAE;IACjE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO;QACL,cAAc,EAAE,CAAC,KAAc,EAAQ,EAAE;YACvC,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,aAAa,EAAE,GAAY,EAAE,CAAC,UAAU;QACxC,aAAa,EAAE,CAAC,KAAc,EAAQ,EAAE;YACtC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,WAAW,EAAE,GAAY,EAAE,CAAC,WAAW,IAAI,UAAU;QACrD,KAAK,EAAE,GAAS,EAAE;YAChB,WAAW,GAAG,KAAK,CAAC;YACpB,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { SyncMutationTracker } from '../types';\n\n/**\n * Creates a tracker that records whether the current full sync run performed a\n * real write.\n *\n * @returns A fresh mutation tracker.\n */\nexport const createSyncMutationTracker = (): SyncMutationTracker => {\n let remoteWrite = false;\n let localWrite = false;\n return {\n setRemoteWrite: (value: boolean): void => {\n remoteWrite = value;\n },\n getLocalWrite: (): boolean => localWrite,\n setLocalWrite: (value: boolean): void => {\n localWrite = value;\n },\n hasOccurred: (): boolean => remoteWrite || localWrite,\n reset: (): void => {\n remoteWrite = false;\n localWrite = false;\n },\n };\n};\n"]}
package/dist/group.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAccountGroupNameUnique = exports.isAccountGroupNameUniqueFromWallet = exports.ACCOUNT_TYPE_TO_SORT_ORDER = exports.MAX_SORT_ORDER = void 0;
3
+ exports.isAccountGroupNameUnique = exports.isMultichainAccountGroup = exports.isAccountGroupNameUniqueFromWallet = exports.ACCOUNT_TYPE_TO_SORT_ORDER = exports.MAX_SORT_ORDER = void 0;
4
+ const account_api_1 = require("@metamask/account-api");
4
5
  const keyring_api_1 = require("@metamask/keyring-api");
5
6
  exports.MAX_SORT_ORDER = 9999;
6
7
  /**
@@ -37,6 +38,20 @@ function isAccountGroupNameUniqueFromWallet(wallet, groupId, name) {
37
38
  return true;
38
39
  }
39
40
  exports.isAccountGroupNameUniqueFromWallet = isAccountGroupNameUniqueFromWallet;
41
+ /**
42
+ * Returns `true` if the group is a multichain account group, narrowing its
43
+ * type to the multichain account variant.
44
+ *
45
+ * Works for both {@link AccountGroupObject} state objects and the intermediate
46
+ * rule-result group shapes used inside `#insert()`.
47
+ *
48
+ * @param group - The group to check.
49
+ * @returns `true` if the group is a multichain account group, `false` otherwise.
50
+ */
51
+ function isMultichainAccountGroup(group) {
52
+ return group.type === account_api_1.AccountGroupType.MultichainAccount;
53
+ }
54
+ exports.isMultichainAccountGroup = isMultichainAccountGroup;
40
55
  /**
41
56
  * Checks if an account group name is unique within the same wallet.
42
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"group.cjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":";;;AAMA,uDAO+B;AAqBlB,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACU,QAAA,0BAA0B,GAAuC;IAC5E,CAAC,4BAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,4BAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,4BAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,4BAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,4BAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC,4BAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,4BAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,sBAAc;CACzC,CAAC;AAsEF;;;;;;;GAOG;AACH,SAAgB,kCAAkC,CAChD,MAA2B,EAC3B,OAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,gFAcC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CACtC,KAAiC,EACjC,OAAuB,EACvB,IAAY;IAEZ,0DAA0D;IAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC;AAdD,4DAcC","sourcesContent":["import type {\n AccountGroupType,\n MultichainAccountGroupId,\n} from '@metamask/account-api';\nimport type { AccountGroupId } from '@metamask/account-api';\nimport type { AccountId } from '@metamask/accounts-controller';\nimport {\n AnyAccountType,\n BtcAccountType,\n EthAccountType,\n SolAccountType,\n TrxAccountType,\n XlmAccountType,\n} from '@metamask/keyring-api';\nimport type { KeyringAccountType } from '@metamask/keyring-api';\n\nimport type { UpdatableField, ExtractFieldValues } from './type-utils';\nimport type { AccountTreeControllerState } from './types';\nimport type { AccountWalletObject } from './wallet';\n\n/**\n * Persisted metadata for account groups (stored in controller state for persistence/sync).\n */\nexport type AccountTreeGroupPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n /** Whether this group is pinned in the UI */\n pinned?: UpdatableField<boolean>;\n /** Whether this group is hidden in the UI */\n hidden?: UpdatableField<boolean>;\n /** Timestamp of the last time this group was selected (local-only, not synced) */\n lastSelected?: number;\n};\n\nexport const MAX_SORT_ORDER = 9999;\n\n/**\n * Order of account types.\n */\nexport const ACCOUNT_TYPE_TO_SORT_ORDER: Record<KeyringAccountType, number> = {\n [EthAccountType.Eoa]: 0,\n [EthAccountType.Erc4337]: 1,\n [SolAccountType.DataAccount]: 2,\n [BtcAccountType.P2pkh]: 3,\n [BtcAccountType.P2sh]: 4,\n [BtcAccountType.P2wpkh]: 5,\n [BtcAccountType.P2tr]: 6,\n [TrxAccountType.Eoa]: 7,\n [XlmAccountType.Account]: 8,\n [AnyAccountType.Account]: MAX_SORT_ORDER,\n};\n\nexport type AccountTypeOrderKey = keyof typeof ACCOUNT_TYPE_TO_SORT_ORDER;\n\n/**\n * Tree metadata for account groups (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeGroupMetadata = Required<\n ExtractFieldValues<AccountTreeGroupPersistedMetadata>\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 IsAccountGroupObject<\n Type extends {\n type: AccountGroupType;\n id: AccountGroupId;\n accounts: AccountId[];\n metadata: AccountTreeGroupMetadata;\n },\n> = Type;\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupMultichainAccountObject = {\n type: AccountGroupType.MultichainAccount;\n id: MultichainAccountGroupId;\n // Blockchain Accounts (at least 1 account per multichain-accounts):\n accounts: [AccountId, ...AccountId[]];\n metadata: AccountTreeGroupMetadata & {\n entropy: {\n groupIndex: number;\n };\n };\n};\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupSingleAccountObject = {\n type: AccountGroupType.SingleAccount;\n id: AccountGroupId;\n // Blockchain Accounts (1 account per group):\n accounts: [AccountId];\n metadata: AccountTreeGroupMetadata;\n};\n\n/**\n * Account group object.\n */\nexport type AccountGroupObject = IsAccountGroupObject<\n AccountGroupMultichainAccountObject | AccountGroupSingleAccountObject\n>;\n\nexport type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<\n | {\n type: AccountGroupType.MultichainAccount;\n object: AccountGroupMultichainAccountObject;\n }\n | {\n type: AccountGroupType.SingleAccount;\n object: AccountGroupSingleAccountObject;\n },\n { type: GroupType }\n>['object'];\n\n/**\n * Checks if a group name is unique within a specific wallet.\n *\n * @param wallet - The wallet to check within.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the wallet, false otherwise.\n */\nexport function isAccountGroupNameUniqueFromWallet(\n wallet: AccountWalletObject,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n const trimmedName = name.trim();\n\n // Check for duplicates within this wallet\n for (const group of Object.values(wallet.groups)) {\n if (group.id !== groupId && group.metadata.name.trim() === trimmedName) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Checks if an account group name is unique within the same wallet.\n *\n * @param state - The account tree controller state.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the same wallet, false otherwise.\n * @throws Error if the group ID does not exist.\n */\nexport function isAccountGroupNameUnique(\n state: AccountTreeControllerState,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n // Find the wallet that contains the group being validated\n for (const wallet of Object.values(state.accountTree.wallets)) {\n if (wallet.groups[groupId]) {\n // Use the wallet-specific function for consistency\n return isAccountGroupNameUniqueFromWallet(wallet, groupId, name);\n }\n }\n\n throw new Error('Account group not found in tree');\n}\n"]}
1
+ {"version":3,"file":"group.cjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":";;;AAAA,uDAAyD;AAMzD,uDAO+B;AAsBlB,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACU,QAAA,0BAA0B,GAAuC;IAC5E,CAAC,4BAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,4BAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,4BAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,4BAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,4BAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC,4BAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,4BAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,4BAAc,CAAC,OAAO,CAAC,EAAE,sBAAc;CACzC,CAAC;AAuEF;;;;;;;GAOG;AACH,SAAgB,kCAAkC,CAChD,MAA2B,EAC3B,OAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,gFAcC;AAED;;;;;;;;;GASG;AACH,SAAgB,wBAAwB,CAEtC,KAAY;IACZ,OAAO,KAAK,CAAC,IAAI,KAAK,8BAAgB,CAAC,iBAAiB,CAAC;AAC3D,CAAC;AAJD,4DAIC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CACtC,KAAiC,EACjC,OAAuB,EACvB,IAAY;IAEZ,0DAA0D;IAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC;AAdD,4DAcC","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport type {\n MultichainAccountGroupId,\n AccountGroupId,\n} from '@metamask/account-api';\nimport type { AccountId } from '@metamask/accounts-controller';\nimport {\n AnyAccountType,\n BtcAccountType,\n EthAccountType,\n SolAccountType,\n TrxAccountType,\n XlmAccountType,\n} from '@metamask/keyring-api';\nimport type { KeyringAccountType } from '@metamask/keyring-api';\nimport type { MultichainAccountGroupStatus } from '@metamask/multichain-account-service';\n\nimport type { UpdatableField, ExtractFieldValues } from './type-utils';\nimport type { AccountTreeControllerState } from './types';\nimport type { AccountWalletObject } from './wallet';\n\n/**\n * Persisted metadata for account groups (stored in controller state for persistence/sync).\n */\nexport type AccountTreeGroupPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n /** Whether this group is pinned in the UI */\n pinned?: UpdatableField<boolean>;\n /** Whether this group is hidden in the UI */\n hidden?: UpdatableField<boolean>;\n /** Timestamp of the last time this group was selected (local-only, not synced) */\n lastSelected?: number;\n};\n\nexport const MAX_SORT_ORDER = 9999;\n\n/**\n * Order of account types.\n */\nexport const ACCOUNT_TYPE_TO_SORT_ORDER: Record<KeyringAccountType, number> = {\n [EthAccountType.Eoa]: 0,\n [EthAccountType.Erc4337]: 1,\n [SolAccountType.DataAccount]: 2,\n [BtcAccountType.P2pkh]: 3,\n [BtcAccountType.P2sh]: 4,\n [BtcAccountType.P2wpkh]: 5,\n [BtcAccountType.P2tr]: 6,\n [TrxAccountType.Eoa]: 7,\n [XlmAccountType.Account]: 8,\n [AnyAccountType.Account]: MAX_SORT_ORDER,\n};\n\nexport type AccountTypeOrderKey = keyof typeof ACCOUNT_TYPE_TO_SORT_ORDER;\n\n/**\n * Tree metadata for account groups (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeGroupMetadata = Required<\n ExtractFieldValues<AccountTreeGroupPersistedMetadata>\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 IsAccountGroupObject<\n Type extends {\n type: AccountGroupType;\n id: AccountGroupId;\n accounts: AccountId[];\n metadata: AccountTreeGroupMetadata;\n },\n> = Type;\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupMultichainAccountObject = {\n type: AccountGroupType.MultichainAccount;\n id: MultichainAccountGroupId;\n status: MultichainAccountGroupStatus;\n // Blockchain Accounts (at least 1 account per multichain-accounts):\n accounts: [AccountId, ...AccountId[]];\n metadata: AccountTreeGroupMetadata & {\n entropy: {\n groupIndex: number;\n };\n };\n};\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupSingleAccountObject = {\n type: AccountGroupType.SingleAccount;\n id: AccountGroupId;\n // Blockchain Accounts (1 account per group):\n accounts: [AccountId];\n metadata: AccountTreeGroupMetadata;\n};\n\n/**\n * Account group object.\n */\nexport type AccountGroupObject = IsAccountGroupObject<\n AccountGroupMultichainAccountObject | AccountGroupSingleAccountObject\n>;\n\nexport type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<\n | {\n type: AccountGroupType.MultichainAccount;\n object: AccountGroupMultichainAccountObject;\n }\n | {\n type: AccountGroupType.SingleAccount;\n object: AccountGroupSingleAccountObject;\n },\n { type: GroupType }\n>['object'];\n\n/**\n * Checks if a group name is unique within a specific wallet.\n *\n * @param wallet - The wallet to check within.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the wallet, false otherwise.\n */\nexport function isAccountGroupNameUniqueFromWallet(\n wallet: AccountWalletObject,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n const trimmedName = name.trim();\n\n // Check for duplicates within this wallet\n for (const group of Object.values(wallet.groups)) {\n if (group.id !== groupId && group.metadata.name.trim() === trimmedName) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Returns `true` if the group is a multichain account group, narrowing its\n * type to the multichain account variant.\n *\n * Works for both {@link AccountGroupObject} state objects and the intermediate\n * rule-result group shapes used inside `#insert()`.\n *\n * @param group - The group to check.\n * @returns `true` if the group is a multichain account group, `false` otherwise.\n */\nexport function isMultichainAccountGroup<\n Value extends { type: AccountGroupType },\n>(group: Value): group is Value & { type: AccountGroupType.MultichainAccount } {\n return group.type === AccountGroupType.MultichainAccount;\n}\n\n/**\n * Checks if an account group name is unique within the same wallet.\n *\n * @param state - The account tree controller state.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the same wallet, false otherwise.\n * @throws Error if the group ID does not exist.\n */\nexport function isAccountGroupNameUnique(\n state: AccountTreeControllerState,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n // Find the wallet that contains the group being validated\n for (const wallet of Object.values(state.accountTree.wallets)) {\n if (wallet.groups[groupId]) {\n // Use the wallet-specific function for consistency\n return isAccountGroupNameUniqueFromWallet(wallet, groupId, name);\n }\n }\n\n throw new Error('Account group not found in tree');\n}\n"]}
package/dist/group.d.cts CHANGED
@@ -1,7 +1,8 @@
1
- import type { AccountGroupType, MultichainAccountGroupId } from "@metamask/account-api";
2
- import type { AccountGroupId } from "@metamask/account-api";
1
+ import { AccountGroupType } from "@metamask/account-api";
2
+ import type { MultichainAccountGroupId, AccountGroupId } from "@metamask/account-api";
3
3
  import type { AccountId } from "@metamask/accounts-controller";
4
4
  import type { KeyringAccountType } from "@metamask/keyring-api";
5
+ import type { MultichainAccountGroupStatus } from "@metamask/multichain-account-service";
5
6
  import type { UpdatableField, ExtractFieldValues } from "./type-utils.cjs";
6
7
  import type { AccountTreeControllerState } from "./types.cjs";
7
8
  import type { AccountWalletObject } from "./wallet.cjs";
@@ -45,6 +46,7 @@ type IsAccountGroupObject<Type extends {
45
46
  export type AccountGroupMultichainAccountObject = {
46
47
  type: AccountGroupType.MultichainAccount;
47
48
  id: MultichainAccountGroupId;
49
+ status: MultichainAccountGroupStatus;
48
50
  accounts: [AccountId, ...AccountId[]];
49
51
  metadata: AccountTreeGroupMetadata & {
50
52
  entropy: {
@@ -83,6 +85,21 @@ export type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<{
83
85
  * @returns True if the name is unique within the wallet, false otherwise.
84
86
  */
85
87
  export declare function isAccountGroupNameUniqueFromWallet(wallet: AccountWalletObject, groupId: AccountGroupId, name: string): boolean;
88
+ /**
89
+ * Returns `true` if the group is a multichain account group, narrowing its
90
+ * type to the multichain account variant.
91
+ *
92
+ * Works for both {@link AccountGroupObject} state objects and the intermediate
93
+ * rule-result group shapes used inside `#insert()`.
94
+ *
95
+ * @param group - The group to check.
96
+ * @returns `true` if the group is a multichain account group, `false` otherwise.
97
+ */
98
+ export declare function isMultichainAccountGroup<Value extends {
99
+ type: AccountGroupType;
100
+ }>(group: Value): group is Value & {
101
+ type: AccountGroupType.MultichainAccount;
102
+ };
86
103
  /**
87
104
  * Checks if an account group name is unique within the same wallet.
88
105
  *
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.cts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.d.cts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AACzD,OAAO,KAAK,EACV,wBAAwB,EACxB,cAAc,EACf,8BAA8B;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,sCAAsC;AAS/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,8BAA8B;AAChE,OAAO,KAAK,EAAE,4BAA4B,EAAE,6CAA6C;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAqB;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAiB;AAEpD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,8DAA8D;IAC9D,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAWzE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,kBAAkB,CAAC,iCAAiC,CAAC,CACtD,CAAC;AAEF;;;;GAIG;AACH,KAAK,oBAAoB,CACvB,IAAI,SAAS;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,IACC,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IACzC,EAAE,EAAE,wBAAwB,CAAC;IAC7B,MAAM,EAAE,4BAA4B,CAAC;IAErC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACtC,QAAQ,EAAE,wBAAwB,GAAG;QACnC,OAAO,EAAE;YACP,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IACrC,EAAE,EAAE,cAAc,CAAC;IAEnB,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IACtB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CACnD,mCAAmC,GAAG,+BAA+B,CACtE,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,gBAAgB,IAAI,OAAO,CAC1E;IACE,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;IACzC,MAAM,EAAE,mCAAmC,CAAC;CAC7C,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC;IACrC,MAAM,EAAE,+BAA+B,CAAC;CACzC,EACH;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CACpB,CAAC,QAAQ,CAAC,CAAC;AAEZ;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,SAAS;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,EACxC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,CAAA;CAAE,CAE7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT"}
package/dist/group.d.mts CHANGED
@@ -1,7 +1,8 @@
1
- import type { AccountGroupType, MultichainAccountGroupId } from "@metamask/account-api";
2
- import type { AccountGroupId } from "@metamask/account-api";
1
+ import { AccountGroupType } from "@metamask/account-api";
2
+ import type { MultichainAccountGroupId, AccountGroupId } from "@metamask/account-api";
3
3
  import type { AccountId } from "@metamask/accounts-controller";
4
4
  import type { KeyringAccountType } from "@metamask/keyring-api";
5
+ import type { MultichainAccountGroupStatus } from "@metamask/multichain-account-service";
5
6
  import type { UpdatableField, ExtractFieldValues } from "./type-utils.mjs";
6
7
  import type { AccountTreeControllerState } from "./types.mjs";
7
8
  import type { AccountWalletObject } from "./wallet.mjs";
@@ -45,6 +46,7 @@ type IsAccountGroupObject<Type extends {
45
46
  export type AccountGroupMultichainAccountObject = {
46
47
  type: AccountGroupType.MultichainAccount;
47
48
  id: MultichainAccountGroupId;
49
+ status: MultichainAccountGroupStatus;
48
50
  accounts: [AccountId, ...AccountId[]];
49
51
  metadata: AccountTreeGroupMetadata & {
50
52
  entropy: {
@@ -83,6 +85,21 @@ export type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<{
83
85
  * @returns True if the name is unique within the wallet, false otherwise.
84
86
  */
85
87
  export declare function isAccountGroupNameUniqueFromWallet(wallet: AccountWalletObject, groupId: AccountGroupId, name: string): boolean;
88
+ /**
89
+ * Returns `true` if the group is a multichain account group, narrowing its
90
+ * type to the multichain account variant.
91
+ *
92
+ * Works for both {@link AccountGroupObject} state objects and the intermediate
93
+ * rule-result group shapes used inside `#insert()`.
94
+ *
95
+ * @param group - The group to check.
96
+ * @returns `true` if the group is a multichain account group, `false` otherwise.
97
+ */
98
+ export declare function isMultichainAccountGroup<Value extends {
99
+ type: AccountGroupType;
100
+ }>(group: Value): group is Value & {
101
+ type: AccountGroupType.MultichainAccount;
102
+ };
86
103
  /**
87
104
  * Checks if an account group name is unique within the same wallet.
88
105
  *
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.mts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.d.mts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
package/dist/group.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { AccountGroupType } from "@metamask/account-api";
1
2
  import { AnyAccountType, BtcAccountType, EthAccountType, SolAccountType, TrxAccountType, XlmAccountType } from "@metamask/keyring-api";
2
3
  export const MAX_SORT_ORDER = 9999;
3
4
  /**
@@ -33,6 +34,19 @@ export function isAccountGroupNameUniqueFromWallet(wallet, groupId, name) {
33
34
  }
34
35
  return true;
35
36
  }
37
+ /**
38
+ * Returns `true` if the group is a multichain account group, narrowing its
39
+ * type to the multichain account variant.
40
+ *
41
+ * Works for both {@link AccountGroupObject} state objects and the intermediate
42
+ * rule-result group shapes used inside `#insert()`.
43
+ *
44
+ * @param group - The group to check.
45
+ * @returns `true` if the group is a multichain account group, `false` otherwise.
46
+ */
47
+ export function isMultichainAccountGroup(group) {
48
+ return group.type === AccountGroupType.MultichainAccount;
49
+ }
36
50
  /**
37
51
  * Checks if an account group name is unique within the same wallet.
38
52
  *
@@ -1 +1 @@
1
- {"version":3,"file":"group.mjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACf,8BAA8B;AAqB/B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAuC;IAC5E,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc;CACzC,CAAC;AAsEF;;;;;;;GAOG;AACH,MAAM,UAAU,kCAAkC,CAChD,MAA2B,EAC3B,OAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAiC,EACjC,OAAuB,EACvB,IAAY;IAEZ,0DAA0D;IAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import type {\n AccountGroupType,\n MultichainAccountGroupId,\n} from '@metamask/account-api';\nimport type { AccountGroupId } from '@metamask/account-api';\nimport type { AccountId } from '@metamask/accounts-controller';\nimport {\n AnyAccountType,\n BtcAccountType,\n EthAccountType,\n SolAccountType,\n TrxAccountType,\n XlmAccountType,\n} from '@metamask/keyring-api';\nimport type { KeyringAccountType } from '@metamask/keyring-api';\n\nimport type { UpdatableField, ExtractFieldValues } from './type-utils';\nimport type { AccountTreeControllerState } from './types';\nimport type { AccountWalletObject } from './wallet';\n\n/**\n * Persisted metadata for account groups (stored in controller state for persistence/sync).\n */\nexport type AccountTreeGroupPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n /** Whether this group is pinned in the UI */\n pinned?: UpdatableField<boolean>;\n /** Whether this group is hidden in the UI */\n hidden?: UpdatableField<boolean>;\n /** Timestamp of the last time this group was selected (local-only, not synced) */\n lastSelected?: number;\n};\n\nexport const MAX_SORT_ORDER = 9999;\n\n/**\n * Order of account types.\n */\nexport const ACCOUNT_TYPE_TO_SORT_ORDER: Record<KeyringAccountType, number> = {\n [EthAccountType.Eoa]: 0,\n [EthAccountType.Erc4337]: 1,\n [SolAccountType.DataAccount]: 2,\n [BtcAccountType.P2pkh]: 3,\n [BtcAccountType.P2sh]: 4,\n [BtcAccountType.P2wpkh]: 5,\n [BtcAccountType.P2tr]: 6,\n [TrxAccountType.Eoa]: 7,\n [XlmAccountType.Account]: 8,\n [AnyAccountType.Account]: MAX_SORT_ORDER,\n};\n\nexport type AccountTypeOrderKey = keyof typeof ACCOUNT_TYPE_TO_SORT_ORDER;\n\n/**\n * Tree metadata for account groups (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeGroupMetadata = Required<\n ExtractFieldValues<AccountTreeGroupPersistedMetadata>\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 IsAccountGroupObject<\n Type extends {\n type: AccountGroupType;\n id: AccountGroupId;\n accounts: AccountId[];\n metadata: AccountTreeGroupMetadata;\n },\n> = Type;\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupMultichainAccountObject = {\n type: AccountGroupType.MultichainAccount;\n id: MultichainAccountGroupId;\n // Blockchain Accounts (at least 1 account per multichain-accounts):\n accounts: [AccountId, ...AccountId[]];\n metadata: AccountTreeGroupMetadata & {\n entropy: {\n groupIndex: number;\n };\n };\n};\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupSingleAccountObject = {\n type: AccountGroupType.SingleAccount;\n id: AccountGroupId;\n // Blockchain Accounts (1 account per group):\n accounts: [AccountId];\n metadata: AccountTreeGroupMetadata;\n};\n\n/**\n * Account group object.\n */\nexport type AccountGroupObject = IsAccountGroupObject<\n AccountGroupMultichainAccountObject | AccountGroupSingleAccountObject\n>;\n\nexport type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<\n | {\n type: AccountGroupType.MultichainAccount;\n object: AccountGroupMultichainAccountObject;\n }\n | {\n type: AccountGroupType.SingleAccount;\n object: AccountGroupSingleAccountObject;\n },\n { type: GroupType }\n>['object'];\n\n/**\n * Checks if a group name is unique within a specific wallet.\n *\n * @param wallet - The wallet to check within.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the wallet, false otherwise.\n */\nexport function isAccountGroupNameUniqueFromWallet(\n wallet: AccountWalletObject,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n const trimmedName = name.trim();\n\n // Check for duplicates within this wallet\n for (const group of Object.values(wallet.groups)) {\n if (group.id !== groupId && group.metadata.name.trim() === trimmedName) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Checks if an account group name is unique within the same wallet.\n *\n * @param state - The account tree controller state.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the same wallet, false otherwise.\n * @throws Error if the group ID does not exist.\n */\nexport function isAccountGroupNameUnique(\n state: AccountTreeControllerState,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n // Find the wallet that contains the group being validated\n for (const wallet of Object.values(state.accountTree.wallets)) {\n if (wallet.groups[groupId]) {\n // Use the wallet-specific function for consistency\n return isAccountGroupNameUniqueFromWallet(wallet, groupId, name);\n }\n }\n\n throw new Error('Account group not found in tree');\n}\n"]}
1
+ {"version":3,"file":"group.mjs","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AAMzD,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACf,8BAA8B;AAsB/B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAuC;IAC5E,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc;CACzC,CAAC;AAuEF;;;;;;;GAOG;AACH,MAAM,UAAU,kCAAkC,CAChD,MAA2B,EAC3B,OAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAEtC,KAAY;IACZ,OAAO,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,iBAAiB,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAiC,EACjC,OAAuB,EACvB,IAAY;IAEZ,0DAA0D;IAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,mDAAmD;YACnD,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import { AccountGroupType } from '@metamask/account-api';\nimport type {\n MultichainAccountGroupId,\n AccountGroupId,\n} from '@metamask/account-api';\nimport type { AccountId } from '@metamask/accounts-controller';\nimport {\n AnyAccountType,\n BtcAccountType,\n EthAccountType,\n SolAccountType,\n TrxAccountType,\n XlmAccountType,\n} from '@metamask/keyring-api';\nimport type { KeyringAccountType } from '@metamask/keyring-api';\nimport type { MultichainAccountGroupStatus } from '@metamask/multichain-account-service';\n\nimport type { UpdatableField, ExtractFieldValues } from './type-utils';\nimport type { AccountTreeControllerState } from './types';\nimport type { AccountWalletObject } from './wallet';\n\n/**\n * Persisted metadata for account groups (stored in controller state for persistence/sync).\n */\nexport type AccountTreeGroupPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n /** Whether this group is pinned in the UI */\n pinned?: UpdatableField<boolean>;\n /** Whether this group is hidden in the UI */\n hidden?: UpdatableField<boolean>;\n /** Timestamp of the last time this group was selected (local-only, not synced) */\n lastSelected?: number;\n};\n\nexport const MAX_SORT_ORDER = 9999;\n\n/**\n * Order of account types.\n */\nexport const ACCOUNT_TYPE_TO_SORT_ORDER: Record<KeyringAccountType, number> = {\n [EthAccountType.Eoa]: 0,\n [EthAccountType.Erc4337]: 1,\n [SolAccountType.DataAccount]: 2,\n [BtcAccountType.P2pkh]: 3,\n [BtcAccountType.P2sh]: 4,\n [BtcAccountType.P2wpkh]: 5,\n [BtcAccountType.P2tr]: 6,\n [TrxAccountType.Eoa]: 7,\n [XlmAccountType.Account]: 8,\n [AnyAccountType.Account]: MAX_SORT_ORDER,\n};\n\nexport type AccountTypeOrderKey = keyof typeof ACCOUNT_TYPE_TO_SORT_ORDER;\n\n/**\n * Tree metadata for account groups (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeGroupMetadata = Required<\n ExtractFieldValues<AccountTreeGroupPersistedMetadata>\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 IsAccountGroupObject<\n Type extends {\n type: AccountGroupType;\n id: AccountGroupId;\n accounts: AccountId[];\n metadata: AccountTreeGroupMetadata;\n },\n> = Type;\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupMultichainAccountObject = {\n type: AccountGroupType.MultichainAccount;\n id: MultichainAccountGroupId;\n status: MultichainAccountGroupStatus;\n // Blockchain Accounts (at least 1 account per multichain-accounts):\n accounts: [AccountId, ...AccountId[]];\n metadata: AccountTreeGroupMetadata & {\n entropy: {\n groupIndex: number;\n };\n };\n};\n\n/**\n * Multichain-account group object.\n */\nexport type AccountGroupSingleAccountObject = {\n type: AccountGroupType.SingleAccount;\n id: AccountGroupId;\n // Blockchain Accounts (1 account per group):\n accounts: [AccountId];\n metadata: AccountTreeGroupMetadata;\n};\n\n/**\n * Account group object.\n */\nexport type AccountGroupObject = IsAccountGroupObject<\n AccountGroupMultichainAccountObject | AccountGroupSingleAccountObject\n>;\n\nexport type AccountGroupObjectOf<GroupType extends AccountGroupType> = Extract<\n | {\n type: AccountGroupType.MultichainAccount;\n object: AccountGroupMultichainAccountObject;\n }\n | {\n type: AccountGroupType.SingleAccount;\n object: AccountGroupSingleAccountObject;\n },\n { type: GroupType }\n>['object'];\n\n/**\n * Checks if a group name is unique within a specific wallet.\n *\n * @param wallet - The wallet to check within.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the wallet, false otherwise.\n */\nexport function isAccountGroupNameUniqueFromWallet(\n wallet: AccountWalletObject,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n const trimmedName = name.trim();\n\n // Check for duplicates within this wallet\n for (const group of Object.values(wallet.groups)) {\n if (group.id !== groupId && group.metadata.name.trim() === trimmedName) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Returns `true` if the group is a multichain account group, narrowing its\n * type to the multichain account variant.\n *\n * Works for both {@link AccountGroupObject} state objects and the intermediate\n * rule-result group shapes used inside `#insert()`.\n *\n * @param group - The group to check.\n * @returns `true` if the group is a multichain account group, `false` otherwise.\n */\nexport function isMultichainAccountGroup<\n Value extends { type: AccountGroupType },\n>(group: Value): group is Value & { type: AccountGroupType.MultichainAccount } {\n return group.type === AccountGroupType.MultichainAccount;\n}\n\n/**\n * Checks if an account group name is unique within the same wallet.\n *\n * @param state - The account tree controller state.\n * @param groupId - The account group ID to exclude from the check.\n * @param name - The name to validate for uniqueness.\n * @returns True if the name is unique within the same wallet, false otherwise.\n * @throws Error if the group ID does not exist.\n */\nexport function isAccountGroupNameUnique(\n state: AccountTreeControllerState,\n groupId: AccountGroupId,\n name: string,\n): boolean {\n // Find the wallet that contains the group being validated\n for (const wallet of Object.values(state.accountTree.wallets)) {\n if (wallet.groups[groupId]) {\n // Use the wallet-specific function for consistency\n return isAccountGroupNameUniqueFromWallet(wallet, groupId, name);\n }\n }\n\n throw new Error('Account group not found in tree');\n}\n"]}
package/dist/index.cjs CHANGED
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultAccountTreeControllerState = exports.AccountTreeController = exports.USER_STORAGE_WALLETS_FEATURE_KEY = exports.USER_STORAGE_GROUPS_FEATURE_KEY = exports.isAccountGroupNameUnique = void 0;
3
+ exports.getDefaultAccountTreeControllerState = exports.AccountTreeController = exports.USER_STORAGE_WALLETS_FEATURE_KEY = exports.USER_STORAGE_GROUPS_FEATURE_KEY = exports.isMultichainAccountGroup = exports.isAccountGroupNameUnique = exports.isMultichainAccountWallet = void 0;
4
+ var wallet_1 = require("./wallet.cjs");
5
+ Object.defineProperty(exports, "isMultichainAccountWallet", { enumerable: true, get: function () { return wallet_1.isMultichainAccountWallet; } });
4
6
  var group_1 = require("./group.cjs");
5
7
  Object.defineProperty(exports, "isAccountGroupNameUnique", { enumerable: true, get: function () { return group_1.isAccountGroupNameUnique; } });
8
+ Object.defineProperty(exports, "isMultichainAccountGroup", { enumerable: true, get: function () { return group_1.isMultichainAccountGroup; } });
6
9
  var constants_1 = require("./backup-and-sync/user-storage/constants.cjs");
7
10
  Object.defineProperty(exports, "USER_STORAGE_GROUPS_FEATURE_KEY", { enumerable: true, get: function () { return constants_1.USER_STORAGE_GROUPS_FEATURE_KEY; } });
8
11
  Object.defineProperty(exports, "USER_STORAGE_WALLETS_FEATURE_KEY", { enumerable: true, get: function () { return constants_1.USER_STORAGE_WALLETS_FEATURE_KEY; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,qCAAmD;AAA1C,iHAAA,wBAAwB,OAAA;AAEjC,0EAGkD;AAFhD,4HAAA,+BAA+B,OAAA;AAC/B,6HAAA,gCAAgC,OAAA;AAsClC,qEAGiC;AAF/B,8HAAA,qBAAqB,OAAA;AACrB,6IAAA,oCAAoC,OAAA","sourcesContent":["export type { AccountWalletObject } from './wallet';\nexport type { AccountGroupObject } from './group';\nexport { isAccountGroupNameUnique } from './group';\n\nexport {\n USER_STORAGE_GROUPS_FEATURE_KEY,\n USER_STORAGE_WALLETS_FEATURE_KEY,\n} from './backup-and-sync/user-storage/constants';\n\nexport type {\n AccountTreeControllerState,\n AccountTreeControllerGetStateAction,\n AccountTreeControllerActions,\n AccountTreeControllerStateChangeEvent,\n AccountTreeControllerAccountTreeChangeEvent,\n AccountTreeControllerSelectedAccountGroupChangeEvent,\n AccountTreeControllerAccountGroupCreatedEvent,\n AccountTreeControllerAccountGroupUpdatedEvent,\n AccountTreeControllerAccountGroupRemovedEvent,\n AccountTreeControllerEvents,\n AccountTreeControllerMessenger,\n} from './types';\n\nexport type {\n AccountTreeControllerGetAccountWalletObjectAction,\n AccountTreeControllerGetAccountWalletObjectsAction,\n AccountTreeControllerGetAccountsFromSelectedAccountGroupAction,\n AccountTreeControllerGetAccountGroupObjectAction,\n AccountTreeControllerGetAccountContextAction,\n AccountTreeControllerGetSelectedAccountGroupAction,\n AccountTreeControllerSetSelectedAccountGroupAction,\n AccountTreeControllerSetAccountGroupNameAction,\n AccountTreeControllerSetAccountWalletNameAction,\n AccountTreeControllerSetAccountGroupPinnedAction,\n AccountTreeControllerSetAccountGroupHiddenAction,\n AccountTreeControllerClearStateAction,\n AccountTreeControllerSyncWithUserStorageAction,\n AccountTreeControllerSyncWithUserStorageAtLeastOnceAction,\n AccountTreeControllerInitAction,\n AccountTreeControllerReinitAction,\n} from './AccountTreeController-method-action-types';\n\nexport type { AccountContext } from './AccountTreeController';\n\nexport {\n AccountTreeController,\n getDefaultAccountTreeControllerState,\n} from './AccountTreeController';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,uCAAqD;AAA5C,mHAAA,yBAAyB,OAAA;AAElC,qCAA6E;AAApE,iHAAA,wBAAwB,OAAA;AAAE,iHAAA,wBAAwB,OAAA;AAE3D,0EAGkD;AAFhD,4HAAA,+BAA+B,OAAA;AAC/B,6HAAA,gCAAgC,OAAA;AAsClC,qEAGiC;AAF/B,8HAAA,qBAAqB,OAAA;AACrB,6IAAA,oCAAoC,OAAA","sourcesContent":["export type { AccountWalletObject } from './wallet';\nexport { isMultichainAccountWallet } from './wallet';\nexport type { AccountGroupObject } from './group';\nexport { isAccountGroupNameUnique, isMultichainAccountGroup } from './group';\n\nexport {\n USER_STORAGE_GROUPS_FEATURE_KEY,\n USER_STORAGE_WALLETS_FEATURE_KEY,\n} from './backup-and-sync/user-storage/constants';\n\nexport type {\n AccountTreeControllerState,\n AccountTreeControllerGetStateAction,\n AccountTreeControllerActions,\n AccountTreeControllerStateChangeEvent,\n AccountTreeControllerAccountTreeChangeEvent,\n AccountTreeControllerSelectedAccountGroupChangeEvent,\n AccountTreeControllerAccountGroupCreatedEvent,\n AccountTreeControllerAccountGroupUpdatedEvent,\n AccountTreeControllerAccountGroupRemovedEvent,\n AccountTreeControllerEvents,\n AccountTreeControllerMessenger,\n} from './types';\n\nexport type {\n AccountTreeControllerGetAccountWalletObjectAction,\n AccountTreeControllerGetAccountWalletObjectsAction,\n AccountTreeControllerGetAccountsFromSelectedAccountGroupAction,\n AccountTreeControllerGetAccountGroupObjectAction,\n AccountTreeControllerGetAccountContextAction,\n AccountTreeControllerGetSelectedAccountGroupAction,\n AccountTreeControllerSetSelectedAccountGroupAction,\n AccountTreeControllerSetAccountGroupNameAction,\n AccountTreeControllerSetAccountWalletNameAction,\n AccountTreeControllerSetAccountGroupPinnedAction,\n AccountTreeControllerSetAccountGroupHiddenAction,\n AccountTreeControllerClearStateAction,\n AccountTreeControllerSyncWithUserStorageAction,\n AccountTreeControllerSyncWithUserStorageAtLeastOnceAction,\n AccountTreeControllerInitAction,\n AccountTreeControllerReinitAction,\n} from './AccountTreeController-method-action-types';\n\nexport type { AccountContext } from './AccountTreeController';\n\nexport {\n AccountTreeController,\n getDefaultAccountTreeControllerState,\n} from './AccountTreeController';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type { AccountWalletObject } from "./wallet.cjs";
2
+ export { isMultichainAccountWallet } from "./wallet.cjs";
2
3
  export type { AccountGroupObject } from "./group.cjs";
3
- export { isAccountGroupNameUnique } from "./group.cjs";
4
+ export { isAccountGroupNameUnique, isMultichainAccountGroup } from "./group.cjs";
4
5
  export { USER_STORAGE_GROUPS_FEATURE_KEY, USER_STORAGE_WALLETS_FEATURE_KEY, } from "./backup-and-sync/user-storage/constants.cjs";
5
6
  export type { AccountTreeControllerState, AccountTreeControllerGetStateAction, AccountTreeControllerActions, AccountTreeControllerStateChangeEvent, AccountTreeControllerAccountTreeChangeEvent, AccountTreeControllerSelectedAccountGroupChangeEvent, AccountTreeControllerAccountGroupCreatedEvent, AccountTreeControllerAccountGroupUpdatedEvent, AccountTreeControllerAccountGroupRemovedEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, } from "./types.cjs";
6
7
  export type { AccountTreeControllerGetAccountWalletObjectAction, AccountTreeControllerGetAccountWalletObjectsAction, AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerGetAccountGroupObjectAction, AccountTreeControllerGetAccountContextAction, AccountTreeControllerGetSelectedAccountGroupAction, AccountTreeControllerSetSelectedAccountGroupAction, AccountTreeControllerSetAccountGroupNameAction, AccountTreeControllerSetAccountWalletNameAction, AccountTreeControllerSetAccountGroupPinnedAction, AccountTreeControllerSetAccountGroupHiddenAction, AccountTreeControllerClearStateAction, AccountTreeControllerSyncWithUserStorageAction, AccountTreeControllerSyncWithUserStorageAtLeastOnceAction, AccountTreeControllerInitAction, AccountTreeControllerReinitAction, } from "./AccountTreeController-method-action-types.cjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,qBAAiB;AACpD,YAAY,EAAE,kBAAkB,EAAE,oBAAgB;AAClD,OAAO,EAAE,wBAAwB,EAAE,oBAAgB;AAEnD,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,qDAAiD;AAElD,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,qCAAqC,EACrC,2CAA2C,EAC3C,oDAAoD,EACpD,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,2BAA2B,EAC3B,8BAA8B,GAC/B,oBAAgB;AAEjB,YAAY,EACV,iDAAiD,EACjD,kDAAkD,EAClD,8DAA8D,EAC9D,gDAAgD,EAChD,4CAA4C,EAC5C,kDAAkD,EAClD,kDAAkD,EAClD,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,gDAAgD,EAChD,qCAAqC,EACrC,8CAA8C,EAC9C,yDAAyD,EACzD,+BAA+B,EAC/B,iCAAiC,GAClC,wDAAoD;AAErD,YAAY,EAAE,cAAc,EAAE,oCAAgC;AAE9D,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,oCAAgC"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,qBAAiB;AACpD,OAAO,EAAE,yBAAyB,EAAE,qBAAiB;AACrD,YAAY,EAAE,kBAAkB,EAAE,oBAAgB;AAClD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,oBAAgB;AAE7E,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,qDAAiD;AAElD,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,qCAAqC,EACrC,2CAA2C,EAC3C,oDAAoD,EACpD,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,2BAA2B,EAC3B,8BAA8B,GAC/B,oBAAgB;AAEjB,YAAY,EACV,iDAAiD,EACjD,kDAAkD,EAClD,8DAA8D,EAC9D,gDAAgD,EAChD,4CAA4C,EAC5C,kDAAkD,EAClD,kDAAkD,EAClD,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,gDAAgD,EAChD,qCAAqC,EACrC,8CAA8C,EAC9C,yDAAyD,EACzD,+BAA+B,EAC/B,iCAAiC,GAClC,wDAAoD;AAErD,YAAY,EAAE,cAAc,EAAE,oCAAgC;AAE9D,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,oCAAgC"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type { AccountWalletObject } from "./wallet.mjs";
2
+ export { isMultichainAccountWallet } from "./wallet.mjs";
2
3
  export type { AccountGroupObject } from "./group.mjs";
3
- export { isAccountGroupNameUnique } from "./group.mjs";
4
+ export { isAccountGroupNameUnique, isMultichainAccountGroup } from "./group.mjs";
4
5
  export { USER_STORAGE_GROUPS_FEATURE_KEY, USER_STORAGE_WALLETS_FEATURE_KEY, } from "./backup-and-sync/user-storage/constants.mjs";
5
6
  export type { AccountTreeControllerState, AccountTreeControllerGetStateAction, AccountTreeControllerActions, AccountTreeControllerStateChangeEvent, AccountTreeControllerAccountTreeChangeEvent, AccountTreeControllerSelectedAccountGroupChangeEvent, AccountTreeControllerAccountGroupCreatedEvent, AccountTreeControllerAccountGroupUpdatedEvent, AccountTreeControllerAccountGroupRemovedEvent, AccountTreeControllerEvents, AccountTreeControllerMessenger, } from "./types.mjs";
6
7
  export type { AccountTreeControllerGetAccountWalletObjectAction, AccountTreeControllerGetAccountWalletObjectsAction, AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerGetAccountGroupObjectAction, AccountTreeControllerGetAccountContextAction, AccountTreeControllerGetSelectedAccountGroupAction, AccountTreeControllerSetSelectedAccountGroupAction, AccountTreeControllerSetAccountGroupNameAction, AccountTreeControllerSetAccountWalletNameAction, AccountTreeControllerSetAccountGroupPinnedAction, AccountTreeControllerSetAccountGroupHiddenAction, AccountTreeControllerClearStateAction, AccountTreeControllerSyncWithUserStorageAction, AccountTreeControllerSyncWithUserStorageAtLeastOnceAction, AccountTreeControllerInitAction, AccountTreeControllerReinitAction, } from "./AccountTreeController-method-action-types.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,qBAAiB;AACpD,YAAY,EAAE,kBAAkB,EAAE,oBAAgB;AAClD,OAAO,EAAE,wBAAwB,EAAE,oBAAgB;AAEnD,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,qDAAiD;AAElD,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,qCAAqC,EACrC,2CAA2C,EAC3C,oDAAoD,EACpD,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,2BAA2B,EAC3B,8BAA8B,GAC/B,oBAAgB;AAEjB,YAAY,EACV,iDAAiD,EACjD,kDAAkD,EAClD,8DAA8D,EAC9D,gDAAgD,EAChD,4CAA4C,EAC5C,kDAAkD,EAClD,kDAAkD,EAClD,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,gDAAgD,EAChD,qCAAqC,EACrC,8CAA8C,EAC9C,yDAAyD,EACzD,+BAA+B,EAC/B,iCAAiC,GAClC,wDAAoD;AAErD,YAAY,EAAE,cAAc,EAAE,oCAAgC;AAE9D,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,oCAAgC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,qBAAiB;AACpD,OAAO,EAAE,yBAAyB,EAAE,qBAAiB;AACrD,YAAY,EAAE,kBAAkB,EAAE,oBAAgB;AAClD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,oBAAgB;AAE7E,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,qDAAiD;AAElD,YAAY,EACV,0BAA0B,EAC1B,mCAAmC,EACnC,4BAA4B,EAC5B,qCAAqC,EACrC,2CAA2C,EAC3C,oDAAoD,EACpD,6CAA6C,EAC7C,6CAA6C,EAC7C,6CAA6C,EAC7C,2BAA2B,EAC3B,8BAA8B,GAC/B,oBAAgB;AAEjB,YAAY,EACV,iDAAiD,EACjD,kDAAkD,EAClD,8DAA8D,EAC9D,gDAAgD,EAChD,4CAA4C,EAC5C,kDAAkD,EAClD,kDAAkD,EAClD,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,gDAAgD,EAChD,qCAAqC,EACrC,8CAA8C,EAC9C,yDAAyD,EACzD,+BAA+B,EAC/B,iCAAiC,GAClC,wDAAoD;AAErD,YAAY,EAAE,cAAc,EAAE,oCAAgC;AAE9D,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,oCAAgC"}
package/dist/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
- export { isAccountGroupNameUnique } from "./group.mjs";
1
+ export { isMultichainAccountWallet } from "./wallet.mjs";
2
+ export { isAccountGroupNameUnique, isMultichainAccountGroup } from "./group.mjs";
2
3
  export { USER_STORAGE_GROUPS_FEATURE_KEY, USER_STORAGE_WALLETS_FEATURE_KEY } from "./backup-and-sync/user-storage/constants.mjs";
3
4
  export { AccountTreeController, getDefaultAccountTreeControllerState } from "./AccountTreeController.mjs";
4
5
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,oBAAgB;AAEnD,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EACjC,qDAAiD;AAqClD,OAAO,EACL,qBAAqB,EACrB,oCAAoC,EACrC,oCAAgC","sourcesContent":["export type { AccountWalletObject } from './wallet';\nexport type { AccountGroupObject } from './group';\nexport { isAccountGroupNameUnique } from './group';\n\nexport {\n USER_STORAGE_GROUPS_FEATURE_KEY,\n USER_STORAGE_WALLETS_FEATURE_KEY,\n} from './backup-and-sync/user-storage/constants';\n\nexport type {\n AccountTreeControllerState,\n AccountTreeControllerGetStateAction,\n AccountTreeControllerActions,\n AccountTreeControllerStateChangeEvent,\n AccountTreeControllerAccountTreeChangeEvent,\n AccountTreeControllerSelectedAccountGroupChangeEvent,\n AccountTreeControllerAccountGroupCreatedEvent,\n AccountTreeControllerAccountGroupUpdatedEvent,\n AccountTreeControllerAccountGroupRemovedEvent,\n AccountTreeControllerEvents,\n AccountTreeControllerMessenger,\n} from './types';\n\nexport type {\n AccountTreeControllerGetAccountWalletObjectAction,\n AccountTreeControllerGetAccountWalletObjectsAction,\n AccountTreeControllerGetAccountsFromSelectedAccountGroupAction,\n AccountTreeControllerGetAccountGroupObjectAction,\n AccountTreeControllerGetAccountContextAction,\n AccountTreeControllerGetSelectedAccountGroupAction,\n AccountTreeControllerSetSelectedAccountGroupAction,\n AccountTreeControllerSetAccountGroupNameAction,\n AccountTreeControllerSetAccountWalletNameAction,\n AccountTreeControllerSetAccountGroupPinnedAction,\n AccountTreeControllerSetAccountGroupHiddenAction,\n AccountTreeControllerClearStateAction,\n AccountTreeControllerSyncWithUserStorageAction,\n AccountTreeControllerSyncWithUserStorageAtLeastOnceAction,\n AccountTreeControllerInitAction,\n AccountTreeControllerReinitAction,\n} from './AccountTreeController-method-action-types';\n\nexport type { AccountContext } from './AccountTreeController';\n\nexport {\n AccountTreeController,\n getDefaultAccountTreeControllerState,\n} from './AccountTreeController';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,qBAAiB;AAErD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,oBAAgB;AAE7E,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EACjC,qDAAiD;AAqClD,OAAO,EACL,qBAAqB,EACrB,oCAAoC,EACrC,oCAAgC","sourcesContent":["export type { AccountWalletObject } from './wallet';\nexport { isMultichainAccountWallet } from './wallet';\nexport type { AccountGroupObject } from './group';\nexport { isAccountGroupNameUnique, isMultichainAccountGroup } from './group';\n\nexport {\n USER_STORAGE_GROUPS_FEATURE_KEY,\n USER_STORAGE_WALLETS_FEATURE_KEY,\n} from './backup-and-sync/user-storage/constants';\n\nexport type {\n AccountTreeControllerState,\n AccountTreeControllerGetStateAction,\n AccountTreeControllerActions,\n AccountTreeControllerStateChangeEvent,\n AccountTreeControllerAccountTreeChangeEvent,\n AccountTreeControllerSelectedAccountGroupChangeEvent,\n AccountTreeControllerAccountGroupCreatedEvent,\n AccountTreeControllerAccountGroupUpdatedEvent,\n AccountTreeControllerAccountGroupRemovedEvent,\n AccountTreeControllerEvents,\n AccountTreeControllerMessenger,\n} from './types';\n\nexport type {\n AccountTreeControllerGetAccountWalletObjectAction,\n AccountTreeControllerGetAccountWalletObjectsAction,\n AccountTreeControllerGetAccountsFromSelectedAccountGroupAction,\n AccountTreeControllerGetAccountGroupObjectAction,\n AccountTreeControllerGetAccountContextAction,\n AccountTreeControllerGetSelectedAccountGroupAction,\n AccountTreeControllerSetSelectedAccountGroupAction,\n AccountTreeControllerSetAccountGroupNameAction,\n AccountTreeControllerSetAccountWalletNameAction,\n AccountTreeControllerSetAccountGroupPinnedAction,\n AccountTreeControllerSetAccountGroupHiddenAction,\n AccountTreeControllerClearStateAction,\n AccountTreeControllerSyncWithUserStorageAction,\n AccountTreeControllerSyncWithUserStorageAtLeastOnceAction,\n AccountTreeControllerInitAction,\n AccountTreeControllerReinitAction,\n} from './AccountTreeController-method-action-types';\n\nexport type { AccountContext } from './AccountTreeController';\n\nexport {\n AccountTreeController,\n getDefaultAccountTreeControllerState,\n} from './AccountTreeController';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId, AccountWalletId } from '@metamask/account-api';\nimport type {\n AccountId,\n AccountsControllerAccountsAddedEvent,\n AccountsControllerAccountsRemovedEvent,\n AccountsControllerGetAccountAction,\n AccountsControllerGetSelectedMultichainAccountAction,\n AccountsControllerListMultichainAccountsAction,\n AccountsControllerSelectedAccountChangeEvent,\n AccountsControllerSetSelectedAccountAction,\n} from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type { KeyringControllerGetStateAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n MultichainAccountServiceCreateMultichainAccountGroupAction,\n MultichainAccountServiceCreateMultichainAccountGroupsAction,\n} from '@metamask/multichain-account-service';\nimport type { MultichainAccountServiceWalletStatusChangeEvent } from '@metamask/multichain-account-service';\nimport type {\n AuthenticationController,\n UserStorageController,\n} from '@metamask/profile-sync-controller';\nimport type { SnapControllerGetSnapAction } from '@metamask/snaps-controllers';\n\nimport type { controllerName } from './AccountTreeController';\nimport type { AccountTreeControllerMethodActions } from './AccountTreeController-method-action-types';\nimport type {\n BackupAndSyncAnalyticsEventPayload,\n BackupAndSyncEmitAnalyticsEventParams,\n} from './backup-and-sync/analytics';\nimport type {\n AccountGroupObject,\n AccountTreeGroupPersistedMetadata,\n} from './group';\nimport type {\n AccountWalletObject,\n AccountTreeWalletPersistedMetadata,\n} from './wallet';\n\n// Backward compatibility aliases using indexed access types\n/**\n * @deprecated Use AccountTreeGroupMetadata for tree objects or AccountTreeGroupPersistedMetadata for controller state\n */\nexport type AccountGroupMetadata = AccountGroupObject['metadata'];\n\n/**\n * @deprecated Use AccountTreeWalletMetadata for tree objects or AccountTreeWalletPersistedMetadata for controller state\n */\nexport type AccountWalletMetadata = AccountWalletObject['metadata'];\n\nexport type AccountTreeControllerState = {\n accountTree: {\n wallets: {\n // Wallets:\n [walletId: AccountWalletId]: AccountWalletObject;\n };\n };\n selectedAccountGroup: AccountGroupId | '';\n isAccountTreeSyncingInProgress: boolean;\n hasAccountTreeSyncingSyncedAtLeastOnce: boolean;\n /** Persistent metadata for account groups (names, pinning, hiding, sync timestamps) */\n accountGroupsMetadata: Record<\n AccountGroupId,\n AccountTreeGroupPersistedMetadata\n >;\n /** Persistent metadata for account wallets (names, sync timestamps) */\n accountWalletsMetadata: Record<\n AccountWalletId,\n AccountTreeWalletPersistedMetadata\n >;\n};\n\nexport type AccountTreeControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AccountTreeControllerState\n>;\n\nexport type AllowedActions =\n | AccountsControllerGetAccountAction\n | AccountsControllerGetSelectedMultichainAccountAction\n | AccountsControllerListMultichainAccountsAction\n | AccountsControllerSetSelectedAccountAction\n | KeyringControllerGetStateAction\n | SnapControllerGetSnapAction\n | UserStorageController.UserStorageControllerGetStateAction\n | UserStorageController.UserStorageControllerPerformGetStorageAction\n | UserStorageController.UserStorageControllerPerformGetStorageAllFeatureEntriesAction\n | UserStorageController.UserStorageControllerPerformSetStorageAction\n | UserStorageController.UserStorageControllerPerformBatchSetStorageAction\n | AuthenticationController.AuthenticationControllerGetSessionProfileAction\n | MultichainAccountServiceCreateMultichainAccountGroupAction\n | MultichainAccountServiceCreateMultichainAccountGroupsAction;\n\nexport type AccountTreeControllerActions =\n | AccountTreeControllerGetStateAction\n | AccountTreeControllerMethodActions;\n\nexport type AccountTreeControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n AccountTreeControllerState\n>;\n\n/**\n * Represents the `AccountTreeController:accountTreeChange` event.\n * This event is emitted when nodes (wallets, groups, or accounts) are added or removed.\n */\nexport type AccountTreeControllerAccountTreeChangeEvent = {\n type: `${typeof controllerName}:accountTreeChange`;\n payload: [AccountTreeControllerState['accountTree']];\n};\n\n/**\n * Represents the `AccountTreeController:selectedAccountGroupChange` event.\n * This event is emitted when the selected account group changes.\n */\nexport type AccountTreeControllerSelectedAccountGroupChangeEvent = {\n type: `${typeof controllerName}:selectedAccountGroupChange`;\n payload: [AccountGroupId | '', AccountGroupId | ''];\n};\n\n/**\n * Represents the `AccountTreeController:accountGroupCreated` event.\n * This event is emitted when a new account group is added to the tree\n * after the controller has been initialized.\n */\nexport type AccountTreeControllerAccountGroupCreatedEvent = {\n type: `${typeof controllerName}:accountGroupCreated`;\n payload: [AccountGroupObject];\n};\n\n/**\n * Represents the `AccountTreeController:accountGroupUpdated` event.\n * This event is emitted when an existing account group's metadata or\n * membership changes after the controller has been initialized.\n */\nexport type AccountTreeControllerAccountGroupUpdatedEvent = {\n type: `${typeof controllerName}:accountGroupUpdated`;\n payload: [AccountGroupObject];\n};\n\n/**\n * Represents the `AccountTreeController:accountGroupRemoved` event.\n * This event is emitted when an account group is pruned from the tree\n * (its last account was removed) after the controller has been initialized.\n */\nexport type AccountTreeControllerAccountGroupRemovedEvent = {\n type: `${typeof controllerName}:accountGroupRemoved`;\n payload: [AccountGroupId];\n};\n\nexport type AllowedEvents =\n | AccountsControllerAccountsAddedEvent\n | AccountsControllerAccountsRemovedEvent\n | AccountsControllerSelectedAccountChangeEvent\n | UserStorageController.UserStorageControllerStateChangeEvent\n | MultichainAccountServiceWalletStatusChangeEvent;\n\nexport type AccountTreeControllerEvents =\n | AccountTreeControllerStateChangeEvent\n | AccountTreeControllerAccountTreeChangeEvent\n | AccountTreeControllerSelectedAccountGroupChangeEvent\n | AccountTreeControllerAccountGroupCreatedEvent\n | AccountTreeControllerAccountGroupUpdatedEvent\n | AccountTreeControllerAccountGroupRemovedEvent;\n\nexport type AccountTreeControllerMessenger = Messenger<\n typeof controllerName,\n AccountTreeControllerActions | AllowedActions,\n AccountTreeControllerEvents | AllowedEvents\n>;\n\nexport type AccountTreeControllerConfig = {\n trace?: TraceCallback;\n backupAndSync?: {\n onBackupAndSyncEvent?: (event: BackupAndSyncAnalyticsEventPayload) => void;\n };\n accountOrderCallbacks?: {\n isHiddenAccount?: (accountId: AccountId) => boolean;\n isPinnedAccount?: (accountId: AccountId) => boolean;\n };\n};\n\nexport type AccountTreeControllerInternalBackupAndSyncConfig = {\n emitAnalyticsEventFn: (event: BackupAndSyncEmitAnalyticsEventParams) => void;\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId, AccountWalletId } from '@metamask/account-api';\nimport type {\n AccountId,\n AccountsControllerAccountsAddedEvent,\n AccountsControllerAccountsRemovedEvent,\n AccountsControllerGetAccountAction,\n AccountsControllerGetSelectedMultichainAccountAction,\n AccountsControllerListMultichainAccountsAction,\n AccountsControllerSelectedAccountChangeEvent,\n AccountsControllerSetSelectedAccountAction,\n} from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type { KeyringControllerGetStateAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n MultichainAccountServiceCreateMultichainAccountGroupAction,\n MultichainAccountServiceCreateMultichainAccountGroupsAction,\n MultichainAccountServiceGetMultichainAccountGroupAction,\n MultichainAccountServiceGetMultichainAccountWalletAction,\n} from '@metamask/multichain-account-service';\nimport type {\n MultichainAccountServiceGroupStatusChangeEvent,\n MultichainAccountServiceWalletStatusChangeEvent,\n} from '@metamask/multichain-account-service';\nimport type {\n AuthenticationController,\n UserStorageController,\n} from '@metamask/profile-sync-controller';\nimport type { SnapControllerGetSnapAction } from '@metamask/snaps-controllers';\n\nimport type { controllerName } from './AccountTreeController';\nimport type { AccountTreeControllerMethodActions } from './AccountTreeController-method-action-types';\nimport type {\n BackupAndSyncAnalyticsEventPayload,\n BackupAndSyncEmitAnalyticsEventParams,\n} from './backup-and-sync/analytics';\nimport type {\n AccountGroupObject,\n AccountTreeGroupPersistedMetadata,\n} from './group';\nimport type {\n AccountWalletObject,\n AccountTreeWalletPersistedMetadata,\n} from './wallet';\n\n// Backward compatibility aliases using indexed access types\n/**\n * @deprecated Use AccountTreeGroupMetadata for tree objects or AccountTreeGroupPersistedMetadata for controller state\n */\nexport type AccountGroupMetadata = AccountGroupObject['metadata'];\n\n/**\n * @deprecated Use AccountTreeWalletMetadata for tree objects or AccountTreeWalletPersistedMetadata for controller state\n */\nexport type AccountWalletMetadata = AccountWalletObject['metadata'];\n\nexport type AccountTreeControllerState = {\n accountTree: {\n wallets: {\n // Wallets:\n [walletId: AccountWalletId]: AccountWalletObject;\n };\n };\n selectedAccountGroup: AccountGroupId | '';\n isAccountTreeSyncingInProgress: boolean;\n hasAccountTreeSyncingSyncedAtLeastOnce: boolean;\n /** Persistent metadata for account groups (names, pinning, hiding, sync timestamps) */\n accountGroupsMetadata: Record<\n AccountGroupId,\n AccountTreeGroupPersistedMetadata\n >;\n /** Persistent metadata for account wallets (names, sync timestamps) */\n accountWalletsMetadata: Record<\n AccountWalletId,\n AccountTreeWalletPersistedMetadata\n >;\n};\n\nexport type AccountTreeControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AccountTreeControllerState\n>;\n\nexport type AllowedActions =\n | AccountsControllerGetAccountAction\n | AccountsControllerGetSelectedMultichainAccountAction\n | AccountsControllerListMultichainAccountsAction\n | AccountsControllerSetSelectedAccountAction\n | KeyringControllerGetStateAction\n | SnapControllerGetSnapAction\n | UserStorageController.UserStorageControllerGetStateAction\n | UserStorageController.UserStorageControllerPerformGetStorageAction\n | UserStorageController.UserStorageControllerPerformGetStorageAllFeatureEntriesAction\n | UserStorageController.UserStorageControllerPerformSetStorageAction\n | UserStorageController.UserStorageControllerPerformBatchSetStorageAction\n | AuthenticationController.AuthenticationControllerGetSessionProfileAction\n | MultichainAccountServiceCreateMultichainAccountGroupAction\n | MultichainAccountServiceCreateMultichainAccountGroupsAction\n | MultichainAccountServiceGetMultichainAccountGroupAction\n | MultichainAccountServiceGetMultichainAccountWalletAction;\n\nexport type AccountTreeControllerActions =\n | AccountTreeControllerGetStateAction\n | AccountTreeControllerMethodActions;\n\nexport type AccountTreeControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof controllerName,\n AccountTreeControllerState\n>;\n\n/**\n * Represents the `AccountTreeController:accountTreeChange` event.\n * This event is emitted when nodes (wallets, groups, or accounts) are added or removed.\n */\nexport type AccountTreeControllerAccountTreeChangeEvent = {\n type: `${typeof controllerName}:accountTreeChange`;\n payload: [AccountTreeControllerState['accountTree']];\n};\n\n/**\n * Represents the `AccountTreeController:selectedAccountGroupChange` event.\n * This event is emitted when the selected account group changes.\n */\nexport type AccountTreeControllerSelectedAccountGroupChangeEvent = {\n type: `${typeof controllerName}:selectedAccountGroupChange`;\n payload: [AccountGroupId | '', AccountGroupId | ''];\n};\n\n/**\n * Represents the `AccountTreeController:accountGroupCreated` event.\n * This event is emitted when a new account group is added to the tree\n * after the controller has been initialized.\n */\nexport type AccountTreeControllerAccountGroupCreatedEvent = {\n type: `${typeof controllerName}:accountGroupCreated`;\n payload: [AccountGroupObject];\n};\n\n/**\n * Represents the `AccountTreeController:accountGroupUpdated` event.\n * This event is emitted when an existing account group's metadata or\n * membership changes after the controller has been initialized.\n */\nexport type AccountTreeControllerAccountGroupUpdatedEvent = {\n type: `${typeof controllerName}:accountGroupUpdated`;\n payload: [AccountGroupObject];\n};\n\n/**\n * Represents the `AccountTreeController:accountGroupRemoved` event.\n * This event is emitted when an account group is pruned from the tree\n * (its last account was removed) after the controller has been initialized.\n */\nexport type AccountTreeControllerAccountGroupRemovedEvent = {\n type: `${typeof controllerName}:accountGroupRemoved`;\n payload: [AccountGroupId];\n};\n\nexport type AllowedEvents =\n | AccountsControllerAccountsAddedEvent\n | AccountsControllerAccountsRemovedEvent\n | AccountsControllerSelectedAccountChangeEvent\n | UserStorageController.UserStorageControllerStateChangeEvent\n | MultichainAccountServiceWalletStatusChangeEvent\n | MultichainAccountServiceGroupStatusChangeEvent;\n\nexport type AccountTreeControllerEvents =\n | AccountTreeControllerStateChangeEvent\n | AccountTreeControllerAccountTreeChangeEvent\n | AccountTreeControllerSelectedAccountGroupChangeEvent\n | AccountTreeControllerAccountGroupCreatedEvent\n | AccountTreeControllerAccountGroupUpdatedEvent\n | AccountTreeControllerAccountGroupRemovedEvent;\n\nexport type AccountTreeControllerMessenger = Messenger<\n typeof controllerName,\n AccountTreeControllerActions | AllowedActions,\n AccountTreeControllerEvents | AllowedEvents\n>;\n\nexport type AccountTreeControllerConfig = {\n trace?: TraceCallback;\n backupAndSync?: {\n onBackupAndSyncEvent?: (event: BackupAndSyncAnalyticsEventPayload) => void;\n };\n accountOrderCallbacks?: {\n isHiddenAccount?: (accountId: AccountId) => boolean;\n isPinnedAccount?: (accountId: AccountId) => boolean;\n };\n};\n\nexport type AccountTreeControllerInternalBackupAndSyncConfig = {\n emitAnalyticsEventFn: (event: BackupAndSyncEmitAnalyticsEventParams) => void;\n};\n"]}
package/dist/types.d.cts CHANGED
@@ -4,8 +4,8 @@ import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@meta
4
4
  import type { TraceCallback } from "@metamask/controller-utils";
5
5
  import type { KeyringControllerGetStateAction } from "@metamask/keyring-controller";
6
6
  import type { Messenger } from "@metamask/messenger";
7
- import type { MultichainAccountServiceCreateMultichainAccountGroupAction, MultichainAccountServiceCreateMultichainAccountGroupsAction } from "@metamask/multichain-account-service";
8
- import type { MultichainAccountServiceWalletStatusChangeEvent } from "@metamask/multichain-account-service";
7
+ import type { MultichainAccountServiceCreateMultichainAccountGroupAction, MultichainAccountServiceCreateMultichainAccountGroupsAction, MultichainAccountServiceGetMultichainAccountGroupAction, MultichainAccountServiceGetMultichainAccountWalletAction } from "@metamask/multichain-account-service";
8
+ import type { MultichainAccountServiceGroupStatusChangeEvent, MultichainAccountServiceWalletStatusChangeEvent } from "@metamask/multichain-account-service";
9
9
  import type { AuthenticationController, UserStorageController } from "@metamask/profile-sync-controller";
10
10
  import type { SnapControllerGetSnapAction } from "@metamask/snaps-controllers";
11
11
  import type { controllerName } from "./AccountTreeController.cjs";
@@ -36,7 +36,7 @@ export type AccountTreeControllerState = {
36
36
  accountWalletsMetadata: Record<AccountWalletId, AccountTreeWalletPersistedMetadata>;
37
37
  };
38
38
  export type AccountTreeControllerGetStateAction = ControllerGetStateAction<typeof controllerName, AccountTreeControllerState>;
39
- export type AllowedActions = AccountsControllerGetAccountAction | AccountsControllerGetSelectedMultichainAccountAction | AccountsControllerListMultichainAccountsAction | AccountsControllerSetSelectedAccountAction | KeyringControllerGetStateAction | SnapControllerGetSnapAction | UserStorageController.UserStorageControllerGetStateAction | UserStorageController.UserStorageControllerPerformGetStorageAction | UserStorageController.UserStorageControllerPerformGetStorageAllFeatureEntriesAction | UserStorageController.UserStorageControllerPerformSetStorageAction | UserStorageController.UserStorageControllerPerformBatchSetStorageAction | AuthenticationController.AuthenticationControllerGetSessionProfileAction | MultichainAccountServiceCreateMultichainAccountGroupAction | MultichainAccountServiceCreateMultichainAccountGroupsAction;
39
+ export type AllowedActions = AccountsControllerGetAccountAction | AccountsControllerGetSelectedMultichainAccountAction | AccountsControllerListMultichainAccountsAction | AccountsControllerSetSelectedAccountAction | KeyringControllerGetStateAction | SnapControllerGetSnapAction | UserStorageController.UserStorageControllerGetStateAction | UserStorageController.UserStorageControllerPerformGetStorageAction | UserStorageController.UserStorageControllerPerformGetStorageAllFeatureEntriesAction | UserStorageController.UserStorageControllerPerformSetStorageAction | UserStorageController.UserStorageControllerPerformBatchSetStorageAction | AuthenticationController.AuthenticationControllerGetSessionProfileAction | MultichainAccountServiceCreateMultichainAccountGroupAction | MultichainAccountServiceCreateMultichainAccountGroupsAction | MultichainAccountServiceGetMultichainAccountGroupAction | MultichainAccountServiceGetMultichainAccountWalletAction;
40
40
  export type AccountTreeControllerActions = AccountTreeControllerGetStateAction | AccountTreeControllerMethodActions;
41
41
  export type AccountTreeControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, AccountTreeControllerState>;
42
42
  /**
@@ -82,7 +82,7 @@ export type AccountTreeControllerAccountGroupRemovedEvent = {
82
82
  type: `${typeof controllerName}:accountGroupRemoved`;
83
83
  payload: [AccountGroupId];
84
84
  };
85
- export type AllowedEvents = AccountsControllerAccountsAddedEvent | AccountsControllerAccountsRemovedEvent | AccountsControllerSelectedAccountChangeEvent | UserStorageController.UserStorageControllerStateChangeEvent | MultichainAccountServiceWalletStatusChangeEvent;
85
+ export type AllowedEvents = AccountsControllerAccountsAddedEvent | AccountsControllerAccountsRemovedEvent | AccountsControllerSelectedAccountChangeEvent | UserStorageController.UserStorageControllerStateChangeEvent | MultichainAccountServiceWalletStatusChangeEvent | MultichainAccountServiceGroupStatusChangeEvent;
86
86
  export type AccountTreeControllerEvents = AccountTreeControllerStateChangeEvent | AccountTreeControllerAccountTreeChangeEvent | AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerAccountGroupCreatedEvent | AccountTreeControllerAccountGroupUpdatedEvent | AccountTreeControllerAccountGroupRemovedEvent;
87
87
  export type AccountTreeControllerMessenger = Messenger<typeof controllerName, AccountTreeControllerActions | AllowedActions, AccountTreeControllerEvents | AllowedEvents>;
88
88
  export type AccountTreeControllerConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.d.mts CHANGED
@@ -4,8 +4,8 @@ import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@meta
4
4
  import type { TraceCallback } from "@metamask/controller-utils";
5
5
  import type { KeyringControllerGetStateAction } from "@metamask/keyring-controller";
6
6
  import type { Messenger } from "@metamask/messenger";
7
- import type { MultichainAccountServiceCreateMultichainAccountGroupAction, MultichainAccountServiceCreateMultichainAccountGroupsAction } from "@metamask/multichain-account-service";
8
- import type { MultichainAccountServiceWalletStatusChangeEvent } from "@metamask/multichain-account-service";
7
+ import type { MultichainAccountServiceCreateMultichainAccountGroupAction, MultichainAccountServiceCreateMultichainAccountGroupsAction, MultichainAccountServiceGetMultichainAccountGroupAction, MultichainAccountServiceGetMultichainAccountWalletAction } from "@metamask/multichain-account-service";
8
+ import type { MultichainAccountServiceGroupStatusChangeEvent, MultichainAccountServiceWalletStatusChangeEvent } from "@metamask/multichain-account-service";
9
9
  import type { AuthenticationController, UserStorageController } from "@metamask/profile-sync-controller";
10
10
  import type { SnapControllerGetSnapAction } from "@metamask/snaps-controllers";
11
11
  import type { controllerName } from "./AccountTreeController.mjs";
@@ -36,7 +36,7 @@ export type AccountTreeControllerState = {
36
36
  accountWalletsMetadata: Record<AccountWalletId, AccountTreeWalletPersistedMetadata>;
37
37
  };
38
38
  export type AccountTreeControllerGetStateAction = ControllerGetStateAction<typeof controllerName, AccountTreeControllerState>;
39
- export type AllowedActions = AccountsControllerGetAccountAction | AccountsControllerGetSelectedMultichainAccountAction | AccountsControllerListMultichainAccountsAction | AccountsControllerSetSelectedAccountAction | KeyringControllerGetStateAction | SnapControllerGetSnapAction | UserStorageController.UserStorageControllerGetStateAction | UserStorageController.UserStorageControllerPerformGetStorageAction | UserStorageController.UserStorageControllerPerformGetStorageAllFeatureEntriesAction | UserStorageController.UserStorageControllerPerformSetStorageAction | UserStorageController.UserStorageControllerPerformBatchSetStorageAction | AuthenticationController.AuthenticationControllerGetSessionProfileAction | MultichainAccountServiceCreateMultichainAccountGroupAction | MultichainAccountServiceCreateMultichainAccountGroupsAction;
39
+ export type AllowedActions = AccountsControllerGetAccountAction | AccountsControllerGetSelectedMultichainAccountAction | AccountsControllerListMultichainAccountsAction | AccountsControllerSetSelectedAccountAction | KeyringControllerGetStateAction | SnapControllerGetSnapAction | UserStorageController.UserStorageControllerGetStateAction | UserStorageController.UserStorageControllerPerformGetStorageAction | UserStorageController.UserStorageControllerPerformGetStorageAllFeatureEntriesAction | UserStorageController.UserStorageControllerPerformSetStorageAction | UserStorageController.UserStorageControllerPerformBatchSetStorageAction | AuthenticationController.AuthenticationControllerGetSessionProfileAction | MultichainAccountServiceCreateMultichainAccountGroupAction | MultichainAccountServiceCreateMultichainAccountGroupsAction | MultichainAccountServiceGetMultichainAccountGroupAction | MultichainAccountServiceGetMultichainAccountWalletAction;
40
40
  export type AccountTreeControllerActions = AccountTreeControllerGetStateAction | AccountTreeControllerMethodActions;
41
41
  export type AccountTreeControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, AccountTreeControllerState>;
42
42
  /**
@@ -82,7 +82,7 @@ export type AccountTreeControllerAccountGroupRemovedEvent = {
82
82
  type: `${typeof controllerName}:accountGroupRemoved`;
83
83
  payload: [AccountGroupId];
84
84
  };
85
- export type AllowedEvents = AccountsControllerAccountsAddedEvent | AccountsControllerAccountsRemovedEvent | AccountsControllerSelectedAccountChangeEvent | UserStorageController.UserStorageControllerStateChangeEvent | MultichainAccountServiceWalletStatusChangeEvent;
85
+ export type AllowedEvents = AccountsControllerAccountsAddedEvent | AccountsControllerAccountsRemovedEvent | AccountsControllerSelectedAccountChangeEvent | UserStorageController.UserStorageControllerStateChangeEvent | MultichainAccountServiceWalletStatusChangeEvent | MultichainAccountServiceGroupStatusChangeEvent;
86
86
  export type AccountTreeControllerEvents = AccountTreeControllerStateChangeEvent | AccountTreeControllerAccountTreeChangeEvent | AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerAccountGroupCreatedEvent | AccountTreeControllerAccountGroupUpdatedEvent | AccountTreeControllerAccountGroupRemovedEvent;
87
87
  export type AccountTreeControllerMessenger = Messenger<typeof controllerName, AccountTreeControllerActions | AllowedActions, AccountTreeControllerEvents | AllowedEvents>;
88
88
  export type AccountTreeControllerConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}