@metamask/multichain-account-service
Version:
Service to manage multichain accounts
57 lines • 2.13 kB
JavaScript
import { Messenger, MOCK_ANY_NAMESPACE } from "@metamask/messenger";
/**
* Creates and returns a root messenger for testing
*
* @returns A messenger instance
*/
export function getRootMessenger() {
return new Messenger({
namespace: MOCK_ANY_NAMESPACE,
captureException: jest.fn(),
});
}
/**
* Retrieves a restricted messenger for the MultichainAccountService.
*
* @param rootMessenger - The root messenger instance. Defaults to a new Messenger created by getRootMessenger().
* @param extra - Extra messenger options.
* @param extra.actions - Extra actions to delegate.
* @param extra.events - Extra events to delegate.
* @returns The restricted messenger for the MultichainAccountService.
*/
export function getMultichainAccountServiceMessenger(rootMessenger, extra) {
const messenger = new Messenger({
namespace: 'MultichainAccountService',
parent: rootMessenger,
});
rootMessenger.delegate({
messenger,
actions: [
'AccountsController:getAccount',
'AccountsController:getAccountByAddress',
'AccountsController:listMultichainAccounts',
'SnapController:handleRequest',
'KeyringController:withKeyring',
'KeyringController:withKeyringV2',
'KeyringController:getState',
'KeyringController:getKeyringsByType',
'KeyringController:addNewKeyring',
'NetworkController:findNetworkClientIdByChainId',
'NetworkController:getNetworkClientById',
'KeyringController:createNewVaultAndKeychain',
'KeyringController:createNewVaultAndRestore',
'AccountsController:getAccounts',
'KeyringController:removeAccount',
'SnapAccountService:ensureReady',
'SnapAccountService:getCapabilities',
...(extra?.actions ?? []),
],
events: [
'AccountsController:accountAdded',
'AccountsController:accountRemoved',
...(extra?.events ?? []),
],
});
return messenger;
}
//# sourceMappingURL=messenger.mjs.map