@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
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","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.mjs","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/wallet.cjs CHANGED
@@ -1,3 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMultichainAccountWallet = void 0;
4
+ const account_api_1 = require("@metamask/account-api");
5
+ /**
6
+ * Returns `true` if the wallet is a multichain account (entropy-backed) wallet,
7
+ * narrowing its type to the entropy variant.
8
+ *
9
+ * Works for both {@link AccountWalletObject} state objects and the intermediate
10
+ * rule-result wallet shapes used inside `#insert()`.
11
+ *
12
+ * @param wallet - The wallet to check.
13
+ * @returns `true` if the wallet is a multichain account wallet, `false` otherwise.
14
+ */
15
+ function isMultichainAccountWallet(wallet) {
16
+ return wallet.type === account_api_1.AccountWalletType.Entropy;
17
+ }
18
+ exports.isMultichainAccountWallet = isMultichainAccountWallet;
3
19
  //# sourceMappingURL=wallet.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport type {\n AccountWalletType,\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n} from '@metamask/account-api';\nimport type { MultichainAccountWalletStatus } from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n"]}
1
+ {"version":3,"file":"wallet.cjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":";;;AACA,uDAA0D;AA0H1D;;;;;;;;;GASG;AACH,SAAgB,yBAAyB,CAEvC,MAAa;IACb,OAAO,MAAM,CAAC,IAAI,KAAK,+BAAiB,CAAC,OAAO,CAAC;AACnD,CAAC;AAJD,8DAIC","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport type {\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n MultichainAccountWalletStatus,\n} from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n\n/**\n * Returns `true` if the wallet is a multichain account (entropy-backed) wallet,\n * narrowing its type to the entropy variant.\n *\n * Works for both {@link AccountWalletObject} state objects and the intermediate\n * rule-result wallet shapes used inside `#insert()`.\n *\n * @param wallet - The wallet to check.\n * @returns `true` if the wallet is a multichain account wallet, `false` otherwise.\n */\nexport function isMultichainAccountWallet<\n Value extends { type: AccountWalletType },\n>(wallet: Value): wallet is Value & { type: AccountWalletType.Entropy } {\n return wallet.type === AccountWalletType.Entropy;\n}\n"]}
package/dist/wallet.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { AccountGroupId } from "@metamask/account-api";
2
- import type { AccountWalletType, AccountWalletId, MultichainAccountWalletId, AccountWalletStatus } from "@metamask/account-api";
3
- import type { MultichainAccountWalletStatus } from "@metamask/account-api";
2
+ import { AccountWalletType } from "@metamask/account-api";
3
+ import type { AccountWalletId, MultichainAccountWalletId, AccountWalletStatus, MultichainAccountWalletStatus } from "@metamask/account-api";
4
4
  import type { EntropySourceId } from "@metamask/keyring-api";
5
5
  import type { KeyringTypes } from "@metamask/keyring-controller";
6
6
  import type { SnapId } from "@metamask/snaps-sdk";
@@ -95,5 +95,20 @@ export type AccountWalletObjectOf<WalletType extends AccountWalletType> = Extrac
95
95
  }, {
96
96
  type: WalletType;
97
97
  }>['object'];
98
+ /**
99
+ * Returns `true` if the wallet is a multichain account (entropy-backed) wallet,
100
+ * narrowing its type to the entropy variant.
101
+ *
102
+ * Works for both {@link AccountWalletObject} state objects and the intermediate
103
+ * rule-result wallet shapes used inside `#insert()`.
104
+ *
105
+ * @param wallet - The wallet to check.
106
+ * @returns `true` if the wallet is a multichain account wallet, `false` otherwise.
107
+ */
108
+ export declare function isMultichainAccountWallet<Value extends {
109
+ type: AccountWalletType;
110
+ }>(wallet: Value): wallet is Value & {
111
+ type: AccountWalletType.Entropy;
112
+ };
98
113
  export {};
99
114
  //# sourceMappingURL=wallet.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/dist/wallet.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { AccountGroupId } from "@metamask/account-api";
2
- import type { AccountWalletType, AccountWalletId, MultichainAccountWalletId, AccountWalletStatus } from "@metamask/account-api";
3
- import type { MultichainAccountWalletStatus } from "@metamask/account-api";
2
+ import { AccountWalletType } from "@metamask/account-api";
3
+ import type { AccountWalletId, MultichainAccountWalletId, AccountWalletStatus, MultichainAccountWalletStatus } from "@metamask/account-api";
4
4
  import type { EntropySourceId } from "@metamask/keyring-api";
5
5
  import type { KeyringTypes } from "@metamask/keyring-controller";
6
6
  import type { SnapId } from "@metamask/snaps-sdk";
@@ -95,5 +95,20 @@ export type AccountWalletObjectOf<WalletType extends AccountWalletType> = Extrac
95
95
  }, {
96
96
  type: WalletType;
97
97
  }>['object'];
98
+ /**
99
+ * Returns `true` if the wallet is a multichain account (entropy-backed) wallet,
100
+ * narrowing its type to the entropy variant.
101
+ *
102
+ * Works for both {@link AccountWalletObject} state objects and the intermediate
103
+ * rule-result wallet shapes used inside `#insert()`.
104
+ *
105
+ * @param wallet - The wallet to check.
106
+ * @returns `true` if the wallet is a multichain account wallet, `false` otherwise.
107
+ */
108
+ export declare function isMultichainAccountWallet<Value extends {
109
+ type: AccountWalletType;
110
+ }>(wallet: Value): wallet is Value & {
111
+ type: AccountWalletType.Entropy;
112
+ };
98
113
  export {};
99
114
  //# sourceMappingURL=wallet.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,8BAA8B;AAC5D,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AAC1D,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC9B,8BAA8B;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,8BAA8B;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,qCAAqC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EACV,mCAAmC,EACnC,kBAAkB,EAClB,+BAA+B,EAChC,oBAAgB;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAwB;AAE1E;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,8DAA8D;IAC9D,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAC9C,kBAAkB,CAAC,kCAAkC,CAAC,CACvD,CAAC;AAEF;;;;GAIG;AACH,KAAK,qBAAqB,CACxB,IAAI,SAAS;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,CAAC,OAAO,EAAE,cAAc,GAAG,kBAAkB,CAAC;KAC/C,CAAC;IACF,QAAQ,EAAE,yBAAyB,CAAC;CACrC,IACC,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAChC,EAAE,EAAE,yBAAyB,CAAC;IAC9B,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE;QAKN,CAAC,OAAO,EAAE,cAAc,GAAG,mCAAmC,CAAC;KAChE,CAAC;IACF,QAAQ,EAAE,yBAAyB,GAAG;QACpC,OAAO,EAAE;YACP,EAAE,EAAE,eAAe,CAAC;SACrB,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAC7B,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE;QACN,CAAC,OAAO,EAAE,cAAc,GAAG,+BAA+B,CAAC;KAC5D,CAAC;IACF,QAAQ,EAAE,yBAAyB,GAAG;QACpC,IAAI,EAAE;YACJ,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAChC,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE;QACN,CAAC,OAAO,EAAE,cAAc,GAAG,+BAA+B,CAAC;KAC5D,CAAC;IACF,QAAQ,EAAE,yBAAyB,GAAG;QACpC,OAAO,EAAE;YACP,IAAI,EAAE,YAAY,CAAC;SACpB,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CACnD,0BAA0B,GAC1B,uBAAuB,GACvB,0BAA0B,CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,UAAU,SAAS,iBAAiB,IACpE,OAAO,CACH;IAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,0BAA0B,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,0BAA0B,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,EACnE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CACrB,CAAC,QAAQ,CAAC,CAAC;AAEd;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,SAAS;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,EACzC,MAAM,EAAE,KAAK,GAAG,MAAM,IAAI,KAAK,GAAG;IAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAA;CAAE,CAEtE"}
package/dist/wallet.mjs CHANGED
@@ -1,2 +1,15 @@
1
- export {};
1
+ import { AccountWalletType } from "@metamask/account-api";
2
+ /**
3
+ * Returns `true` if the wallet is a multichain account (entropy-backed) wallet,
4
+ * narrowing its type to the entropy variant.
5
+ *
6
+ * Works for both {@link AccountWalletObject} state objects and the intermediate
7
+ * rule-result wallet shapes used inside `#insert()`.
8
+ *
9
+ * @param wallet - The wallet to check.
10
+ * @returns `true` if the wallet is a multichain account wallet, `false` otherwise.
11
+ */
12
+ export function isMultichainAccountWallet(wallet) {
13
+ return wallet.type === AccountWalletType.Entropy;
14
+ }
2
15
  //# sourceMappingURL=wallet.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport type {\n AccountWalletType,\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n} from '@metamask/account-api';\nimport type { MultichainAccountWalletStatus } from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n"]}
1
+ {"version":3,"file":"wallet.mjs","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,8BAA8B;AA0H1D;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAEvC,MAAa;IACb,OAAO,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC;AACnD,CAAC","sourcesContent":["import type { AccountGroupId } from '@metamask/account-api';\nimport { AccountWalletType } from '@metamask/account-api';\nimport type {\n AccountWalletId,\n MultichainAccountWalletId,\n AccountWalletStatus,\n MultichainAccountWalletStatus,\n} from '@metamask/account-api';\nimport type { EntropySourceId } from '@metamask/keyring-api';\nimport type { KeyringTypes } from '@metamask/keyring-controller';\nimport type { SnapId } from '@metamask/snaps-sdk';\n\nimport type {\n AccountGroupMultichainAccountObject,\n AccountGroupObject,\n AccountGroupSingleAccountObject,\n} from './group';\nimport type { UpdatableField, ExtractFieldValues } from './type-utils.js';\n\n/**\n * Persisted metadata for account wallets (stored in controller state for persistence/sync).\n */\nexport type AccountTreeWalletPersistedMetadata = {\n /** Custom name set by user, overrides default naming logic */\n name?: UpdatableField<string>;\n};\n\n/**\n * Tree metadata for account wallets (required plain values extracted from persisted metadata).\n */\nexport type AccountTreeWalletMetadata = Required<\n ExtractFieldValues<AccountTreeWalletPersistedMetadata>\n>;\n\n/**\n * Type constraint for a {@link AccountGroupObject}. If one of its union-members\n * does not match this contraint, {@link AccountGroupObject} will resolve\n * to `never`.\n */\ntype IsAccountWalletObject<\n Type extends {\n type: AccountWalletType;\n id: AccountWalletId;\n status: string; // Has to be refined by the type extending this base type.\n groups: {\n [groupId: AccountGroupId]: AccountGroupObject;\n };\n metadata: AccountTreeWalletMetadata;\n },\n> = Type;\n\n/**\n * Account wallet object for the \"entropy\" wallet category.\n */\nexport type AccountWalletEntropyObject = {\n type: AccountWalletType.Entropy;\n id: MultichainAccountWalletId;\n status: MultichainAccountWalletStatus;\n groups: {\n // NOTE: Using `MultichainAccountGroupId` instead of `AccountGroupId` would introduce\n // some type problems when using a group ID as an `AccountGroupId` directly. This\n // would require some up-cast to a `MultichainAccountGroupId` which could be considered\n // unsafe... So we keep it as a `AccountGroupId` for now.\n [groupId: AccountGroupId]: AccountGroupMultichainAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n entropy: {\n id: EntropySourceId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"snap\" wallet category.\n */\nexport type AccountWalletSnapObject = {\n type: AccountWalletType.Snap;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n snap: {\n id: SnapId;\n };\n };\n};\n\n/**\n * Account wallet object for the \"keyring\" wallet category.\n */\nexport type AccountWalletKeyringObject = {\n type: AccountWalletType.Keyring;\n id: AccountWalletId;\n status: AccountWalletStatus;\n groups: {\n [groupId: AccountGroupId]: AccountGroupSingleAccountObject;\n };\n metadata: AccountTreeWalletMetadata & {\n keyring: {\n type: KeyringTypes;\n };\n };\n};\n\n/**\n * Account wallet metadata for the \"keyring\" wallet category.\n */\nexport type AccountWalletObject = IsAccountWalletObject<\n | AccountWalletEntropyObject\n | AccountWalletSnapObject\n | AccountWalletKeyringObject\n>;\n\nexport type AccountWalletObjectOf<WalletType extends AccountWalletType> =\n Extract<\n | { type: AccountWalletType.Entropy; object: AccountWalletEntropyObject }\n | { type: AccountWalletType.Keyring; object: AccountWalletKeyringObject }\n | { type: AccountWalletType.Snap; object: AccountWalletSnapObject },\n { type: WalletType }\n >['object'];\n\n/**\n * Returns `true` if the wallet is a multichain account (entropy-backed) wallet,\n * narrowing its type to the entropy variant.\n *\n * Works for both {@link AccountWalletObject} state objects and the intermediate\n * rule-result wallet shapes used inside `#insert()`.\n *\n * @param wallet - The wallet to check.\n * @returns `true` if the wallet is a multichain account wallet, `false` otherwise.\n */\nexport function isMultichainAccountWallet<\n Value extends { type: AccountWalletType },\n>(wallet: Value): wallet is Value & { type: AccountWalletType.Entropy } {\n return wallet.type === AccountWalletType.Entropy;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/account-tree-controller",
3
- "version": "7.5.3-preview-ea5e7f6d0",
3
+ "version": "7.5.3-preview-34f2bcbf7",
4
4
  "description": "Controller to group account together based on some pre-defined rules",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -53,11 +53,11 @@
53
53
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
54
54
  },
55
55
  "dependencies": {
56
- "@metamask/accounts-controller": "^39.0.3",
56
+ "@metamask/accounts-controller": "^39.0.4",
57
57
  "@metamask/base-controller": "^9.1.0",
58
- "@metamask/keyring-api": "^23.3.0",
58
+ "@metamask/keyring-api": "^23.5.0",
59
59
  "@metamask/keyring-controller": "^27.1.0",
60
- "@metamask/messenger": "^1.2.0",
60
+ "@metamask/messenger": "^2.0.0",
61
61
  "@metamask/multichain-account-service": "^11.1.0",
62
62
  "@metamask/profile-sync-controller": "^28.2.0",
63
63
  "@metamask/snaps-controllers": "^19.0.0",