Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Integrate non-evm SIP-26 support into @metamask/multichain #5191

Open
wants to merge 34 commits into
base: main
Choose a base branch
from

Conversation

jiexi
Copy link
Contributor

@jiexi jiexi commented Jan 23, 2025

Explanation

Updates the @metamask/multichain package to use new hooks provided by the Snaps MultichainRouter to enable non-evm support on the Multichain API

References

Ticket: https://github.com/orgs/MetaMask/projects/146/views/6?pane=issue&itemId=94617458&issue=MetaMask%7CMetaMask-planning%7C3989
Extension: MetaMask/metamask-extension#29887
Snaps: MetaMask/snaps#2875

Changelog

@metamask/multichain

  • BREAKING: getSessionScopes() now expects an additional hooks object as its last param. The hooks object should have a getNonEvmSupportedMethods property whose value should be a function that accepts a CaipChainId and returns an array of supported methods.
  • BREAKING: caip25CaveatBuilder() now expects two additional properties it's singular param object. The param object should now also have a isNonEvmScopeSupported property whose value should be a function that accepts a CaipChainId and returns a boolean, and a getNonEvmAccountAddresses property whose value should be a function that accepts a CaipChainId and returns an array of CAIP-10 account addresses.
    • The CAIP-25 caveat specification now also validates if non-evm scopes and accounts are supported
  • BREAKING: The wallet_getSession handler now expects getNonEvmSupportedMethods to be provided in it's hooks.
    • The handler now resolves methods for non-evm scopes in the returned sessionScopes result
  • BREAKING: The wallet_invokeMethod handler now expects getNonEvmSupportedMethods and handleNonEvmRequestForOrigin to be provided in it's hooks. handleNonEvmRequestForOrigin should be a function with the following signature:
    •  handleNonEvmRequestForOrigin: (params: {
         connectedAddresses: CaipAccountId[];
         scope: CaipChainId;
         request: JsonRpcRequest;
       }) => Promise<Json>;
      
    • The handler now supports handling non-evm requests
  • BREAKING: assertScopeSupported() now expects the following hooks params object as it's last param:
    •   {
         isChainIdSupported: (chainId: Hex) => boolean;
         isEvmChainIdSupported: (chainId: Hex) => boolean;
         isNonEvmScopeSupported: (scope: CaipChainId) => boolean;
         getNonEvmSupportedMethods: (scope: CaipChainId) => string[];
       } 
      
  • BREAKING: assertScopesSupported() now expects the following hooks params object as it's last param:
    •   {
         isChainIdSupported: (chainId: Hex) => boolean;
         isEvmChainIdSupported: (chainId: Hex) => boolean;
         isNonEvmScopeSupported: (scope: CaipChainId) => boolean;
         getNonEvmSupportedMethods: (scope: CaipChainId) => string[];
       } 
      
  • BREAKING: bucketScopes() now expects the following hooks params object as it's last param:
    •   {
           isEvmChainIdSupported: (chainId: Hex) => boolean;
           isEvmChainIdSupportable: (chainId: Hex) => boolean;
           isNonEvmScopeSupported: (scope: CaipChainId) => boolean;
           getNonEvmSupportedMethods: (scope: CaipChainId) => string[];
       } 
      
  • BREAKING: bucketScopesBySupport() now expects the following hooks params object as it's last param:
    •   {
           isEvmChainIdSupported: (chainId: Hex) => boolean;
           isNonEvmScopeSupported: (scope: CaipChainId) => boolean;
           getNonEvmSupportedMethods: (scope: CaipChainId) => string[];
       } 
      
  • BREAKING: getSessionScopes() now expects a hooks object as its last param. The hooks object should have a getNonEvmSupportedMethods property whose value should be a function that accepts a CaipChainId and returns an array of supported methods.
  • BREAKING: isSupportedScopeString() now expects the a hooks params object as it's last param with the following properties:
    •   {
           isEvmChainIdSupported: (chainId: Hex) => boolean;
           isNonEvmScopeSupported: (scope: CaipChainId) => boolean;
       } 
      
  • BREAKING: isSupportedAccount() now expects the a hooks params object as it's last param with the following properties:
    •   {
           getEvmInternalAccounts: () => { type: string; address: Hex }[];
           getNonEvmAccountAddresses: (scope: CaipChainId) => string[];
       } 
      
  • BREAKING: isSupportedMethod() now expects the a hooks params object as it's last param with the following properties:
    •   {
           getNonEvmSupportedMethods: (scope: CaipChainId) => string[];
       } 
      
      
      

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've highlighted breaking changes using the "BREAKING" category above as appropriate
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@jiexi jiexi requested a review from a team as a code owner January 23, 2025 18:12
@jiexi
Copy link
Contributor Author

jiexi commented Jan 23, 2025

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "21.0.2-preview-cba3b99d",
  "@metamask-previews/address-book-controller": "6.0.2-preview-cba3b99d",
  "@metamask-previews/announcement-controller": "7.0.2-preview-cba3b99d",
  "@metamask-previews/approval-controller": "7.1.2-preview-cba3b99d",
  "@metamask-previews/assets-controllers": "46.0.1-preview-cba3b99d",
  "@metamask-previews/base-controller": "7.1.1-preview-cba3b99d",
  "@metamask-previews/build-utils": "3.0.2-preview-cba3b99d",
  "@metamask-previews/composable-controller": "10.0.0-preview-cba3b99d",
  "@metamask-previews/controller-utils": "11.4.5-preview-cba3b99d",
  "@metamask-previews/ens-controller": "15.0.1-preview-cba3b99d",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-cba3b99d",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-cba3b99d",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-cba3b99d",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-cba3b99d",
  "@metamask-previews/keyring-controller": "19.0.4-preview-cba3b99d",
  "@metamask-previews/logging-controller": "6.0.3-preview-cba3b99d",
  "@metamask-previews/message-manager": "12.0.0-preview-cba3b99d",
  "@metamask-previews/multichain": "2.1.0-preview-cba3b99d",
  "@metamask-previews/multichain-transactions-controller": "0.0.1-preview-cba3b99d",
  "@metamask-previews/name-controller": "8.0.2-preview-cba3b99d",
  "@metamask-previews/network-controller": "22.1.1-preview-cba3b99d",
  "@metamask-previews/notification-services-controller": "0.16.0-preview-cba3b99d",
  "@metamask-previews/permission-controller": "11.0.5-preview-cba3b99d",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-cba3b99d",
  "@metamask-previews/phishing-controller": "12.3.1-preview-cba3b99d",
  "@metamask-previews/polling-controller": "12.0.2-preview-cba3b99d",
  "@metamask-previews/preferences-controller": "15.0.1-preview-cba3b99d",
  "@metamask-previews/profile-sync-controller": "4.1.1-preview-cba3b99d",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-cba3b99d",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-cba3b99d",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-cba3b99d",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-cba3b99d",
  "@metamask-previews/signature-controller": "23.2.0-preview-cba3b99d",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-cba3b99d",
  "@metamask-previews/transaction-controller": "43.0.0-preview-cba3b99d",
  "@metamask-previews/user-operation-controller": "22.0.0-preview-cba3b99d"
}

@jiexi
Copy link
Contributor Author

jiexi commented Jan 24, 2025

@metamaskbot publish-preview

@jiexi
Copy link
Contributor Author

jiexi commented Jan 24, 2025

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "21.0.2-preview-abb67026",
  "@metamask-previews/address-book-controller": "6.0.2-preview-abb67026",
  "@metamask-previews/announcement-controller": "7.0.2-preview-abb67026",
  "@metamask-previews/approval-controller": "7.1.2-preview-abb67026",
  "@metamask-previews/assets-controllers": "46.0.1-preview-abb67026",
  "@metamask-previews/base-controller": "7.1.1-preview-abb67026",
  "@metamask-previews/build-utils": "3.0.2-preview-abb67026",
  "@metamask-previews/composable-controller": "10.0.0-preview-abb67026",
  "@metamask-previews/controller-utils": "11.4.5-preview-abb67026",
  "@metamask-previews/ens-controller": "15.0.1-preview-abb67026",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-abb67026",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-abb67026",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-abb67026",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-abb67026",
  "@metamask-previews/keyring-controller": "19.0.4-preview-abb67026",
  "@metamask-previews/logging-controller": "6.0.3-preview-abb67026",
  "@metamask-previews/message-manager": "12.0.0-preview-abb67026",
  "@metamask-previews/multichain": "2.1.0-preview-abb67026",
  "@metamask-previews/multichain-transactions-controller": "0.0.1-preview-abb67026",
  "@metamask-previews/name-controller": "8.0.2-preview-abb67026",
  "@metamask-previews/network-controller": "22.1.1-preview-abb67026",
  "@metamask-previews/notification-services-controller": "0.16.0-preview-abb67026",
  "@metamask-previews/permission-controller": "11.0.5-preview-abb67026",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-abb67026",
  "@metamask-previews/phishing-controller": "12.3.1-preview-abb67026",
  "@metamask-previews/polling-controller": "12.0.2-preview-abb67026",
  "@metamask-previews/preferences-controller": "15.0.1-preview-abb67026",
  "@metamask-previews/profile-sync-controller": "4.1.1-preview-abb67026",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-abb67026",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-abb67026",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-abb67026",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-abb67026",
  "@metamask-previews/signature-controller": "23.2.0-preview-abb67026",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-abb67026",
  "@metamask-previews/transaction-controller": "43.0.0-preview-abb67026",
  "@metamask-previews/user-operation-controller": "22.0.0-preview-abb67026"
}

@jiexi
Copy link
Contributor Author

jiexi commented Jan 29, 2025

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "21.0.2-preview-3fc797ab",
  "@metamask-previews/address-book-controller": "6.0.2-preview-3fc797ab",
  "@metamask-previews/announcement-controller": "7.0.2-preview-3fc797ab",
  "@metamask-previews/approval-controller": "7.1.2-preview-3fc797ab",
  "@metamask-previews/assets-controllers": "46.0.1-preview-3fc797ab",
  "@metamask-previews/base-controller": "7.1.1-preview-3fc797ab",
  "@metamask-previews/build-utils": "3.0.2-preview-3fc797ab",
  "@metamask-previews/composable-controller": "10.0.0-preview-3fc797ab",
  "@metamask-previews/controller-utils": "11.4.5-preview-3fc797ab",
  "@metamask-previews/ens-controller": "15.0.1-preview-3fc797ab",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-3fc797ab",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-3fc797ab",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-3fc797ab",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-3fc797ab",
  "@metamask-previews/keyring-controller": "19.0.4-preview-3fc797ab",
  "@metamask-previews/logging-controller": "6.0.3-preview-3fc797ab",
  "@metamask-previews/message-manager": "12.0.0-preview-3fc797ab",
  "@metamask-previews/multichain": "2.1.0-preview-3fc797ab",
  "@metamask-previews/multichain-transactions-controller": "0.0.1-preview-3fc797ab",
  "@metamask-previews/name-controller": "8.0.2-preview-3fc797ab",
  "@metamask-previews/network-controller": "22.1.1-preview-3fc797ab",
  "@metamask-previews/notification-services-controller": "0.17.0-preview-3fc797ab",
  "@metamask-previews/permission-controller": "11.0.5-preview-3fc797ab",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-3fc797ab",
  "@metamask-previews/phishing-controller": "12.3.1-preview-3fc797ab",
  "@metamask-previews/polling-controller": "12.0.2-preview-3fc797ab",
  "@metamask-previews/preferences-controller": "15.0.1-preview-3fc797ab",
  "@metamask-previews/profile-sync-controller": "4.1.1-preview-3fc797ab",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-3fc797ab",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-3fc797ab",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-3fc797ab",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-3fc797ab",
  "@metamask-previews/signature-controller": "23.2.0-preview-3fc797ab",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-3fc797ab",
  "@metamask-previews/transaction-controller": "43.0.0-preview-3fc797ab",
  "@metamask-previews/user-operation-controller": "22.0.0-preview-3fc797ab"
}

@jiexi
Copy link
Contributor Author

jiexi commented Jan 29, 2025

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "21.0.2-preview-b6ada138",
  "@metamask-previews/address-book-controller": "6.0.2-preview-b6ada138",
  "@metamask-previews/announcement-controller": "7.0.2-preview-b6ada138",
  "@metamask-previews/approval-controller": "7.1.2-preview-b6ada138",
  "@metamask-previews/assets-controllers": "46.0.1-preview-b6ada138",
  "@metamask-previews/base-controller": "7.1.1-preview-b6ada138",
  "@metamask-previews/build-utils": "3.0.2-preview-b6ada138",
  "@metamask-previews/composable-controller": "10.0.0-preview-b6ada138",
  "@metamask-previews/controller-utils": "11.4.5-preview-b6ada138",
  "@metamask-previews/ens-controller": "15.0.1-preview-b6ada138",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-b6ada138",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-b6ada138",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-b6ada138",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-b6ada138",
  "@metamask-previews/keyring-controller": "19.0.4-preview-b6ada138",
  "@metamask-previews/logging-controller": "6.0.3-preview-b6ada138",
  "@metamask-previews/message-manager": "12.0.0-preview-b6ada138",
  "@metamask-previews/multichain": "2.1.0-preview-b6ada138",
  "@metamask-previews/multichain-transactions-controller": "0.0.1-preview-b6ada138",
  "@metamask-previews/name-controller": "8.0.2-preview-b6ada138",
  "@metamask-previews/network-controller": "22.1.1-preview-b6ada138",
  "@metamask-previews/notification-services-controller": "0.17.0-preview-b6ada138",
  "@metamask-previews/permission-controller": "11.0.5-preview-b6ada138",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-b6ada138",
  "@metamask-previews/phishing-controller": "12.3.1-preview-b6ada138",
  "@metamask-previews/polling-controller": "12.0.2-preview-b6ada138",
  "@metamask-previews/preferences-controller": "15.0.1-preview-b6ada138",
  "@metamask-previews/profile-sync-controller": "4.1.1-preview-b6ada138",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-b6ada138",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-b6ada138",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-b6ada138",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-b6ada138",
  "@metamask-previews/signature-controller": "23.2.0-preview-b6ada138",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-b6ada138",
  "@metamask-previews/transaction-controller": "43.0.0-preview-b6ada138",
  "@metamask-previews/user-operation-controller": "22.0.0-preview-b6ada138"
}

@jiexi
Copy link
Contributor Author

jiexi commented Jan 29, 2025

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "21.0.2-preview-5dfebad9",
  "@metamask-previews/address-book-controller": "6.0.2-preview-5dfebad9",
  "@metamask-previews/announcement-controller": "7.0.2-preview-5dfebad9",
  "@metamask-previews/approval-controller": "7.1.2-preview-5dfebad9",
  "@metamask-previews/assets-controllers": "46.0.1-preview-5dfebad9",
  "@metamask-previews/base-controller": "7.1.1-preview-5dfebad9",
  "@metamask-previews/build-utils": "3.0.2-preview-5dfebad9",
  "@metamask-previews/composable-controller": "10.0.0-preview-5dfebad9",
  "@metamask-previews/controller-utils": "11.4.5-preview-5dfebad9",
  "@metamask-previews/ens-controller": "15.0.1-preview-5dfebad9",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-5dfebad9",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-5dfebad9",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-5dfebad9",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-5dfebad9",
  "@metamask-previews/keyring-controller": "19.0.4-preview-5dfebad9",
  "@metamask-previews/logging-controller": "6.0.3-preview-5dfebad9",
  "@metamask-previews/message-manager": "12.0.0-preview-5dfebad9",
  "@metamask-previews/multichain": "2.1.0-preview-5dfebad9",
  "@metamask-previews/multichain-transactions-controller": "0.0.1-preview-5dfebad9",
  "@metamask-previews/name-controller": "8.0.2-preview-5dfebad9",
  "@metamask-previews/network-controller": "22.1.1-preview-5dfebad9",
  "@metamask-previews/notification-services-controller": "0.17.0-preview-5dfebad9",
  "@metamask-previews/permission-controller": "11.0.5-preview-5dfebad9",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-5dfebad9",
  "@metamask-previews/phishing-controller": "12.3.1-preview-5dfebad9",
  "@metamask-previews/polling-controller": "12.0.2-preview-5dfebad9",
  "@metamask-previews/preferences-controller": "15.0.1-preview-5dfebad9",
  "@metamask-previews/profile-sync-controller": "4.1.1-preview-5dfebad9",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-5dfebad9",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-5dfebad9",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-5dfebad9",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-5dfebad9",
  "@metamask-previews/signature-controller": "23.2.0-preview-5dfebad9",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-5dfebad9",
  "@metamask-previews/transaction-controller": "43.0.0-preview-5dfebad9",
  "@metamask-previews/user-operation-controller": "22.0.0-preview-5dfebad9"
}

@jiexi
Copy link
Contributor Author

jiexi commented Feb 3, 2025

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented Feb 3, 2025

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "22.0.0-preview-082735ba",
  "@metamask-previews/address-book-controller": "6.0.2-preview-082735ba",
  "@metamask-previews/announcement-controller": "7.0.2-preview-082735ba",
  "@metamask-previews/approval-controller": "7.1.2-preview-082735ba",
  "@metamask-previews/assets-controllers": "47.0.0-preview-082735ba",
  "@metamask-previews/base-controller": "7.1.1-preview-082735ba",
  "@metamask-previews/build-utils": "3.0.2-preview-082735ba",
  "@metamask-previews/composable-controller": "10.0.0-preview-082735ba",
  "@metamask-previews/controller-utils": "11.4.5-preview-082735ba",
  "@metamask-previews/earn-controller": "0.0.0-preview-082735ba",
  "@metamask-previews/ens-controller": "15.0.1-preview-082735ba",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-082735ba",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-082735ba",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-082735ba",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-082735ba",
  "@metamask-previews/keyring-controller": "19.0.5-preview-082735ba",
  "@metamask-previews/logging-controller": "6.0.3-preview-082735ba",
  "@metamask-previews/message-manager": "12.0.0-preview-082735ba",
  "@metamask-previews/multichain": "2.1.0-preview-082735ba",
  "@metamask-previews/multichain-transactions-controller": "0.1.0-preview-082735ba",
  "@metamask-previews/name-controller": "8.0.2-preview-082735ba",
  "@metamask-previews/network-controller": "22.1.1-preview-082735ba",
  "@metamask-previews/notification-services-controller": "0.18.0-preview-082735ba",
  "@metamask-previews/permission-controller": "11.0.5-preview-082735ba",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-082735ba",
  "@metamask-previews/phishing-controller": "12.3.1-preview-082735ba",
  "@metamask-previews/polling-controller": "12.0.2-preview-082735ba",
  "@metamask-previews/preferences-controller": "15.0.1-preview-082735ba",
  "@metamask-previews/profile-sync-controller": "5.0.0-preview-082735ba",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-082735ba",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-082735ba",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-082735ba",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-082735ba",
  "@metamask-previews/signature-controller": "23.2.0-preview-082735ba",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-082735ba",
  "@metamask-previews/transaction-controller": "44.0.0-preview-082735ba",
  "@metamask-previews/user-operation-controller": "23.0.0-preview-082735ba"
}

@jiexi jiexi changed the title WIP: Adapt multichain api for sip 26 feat: Integrate non-evm SIP-26 support into @metamask/multichain Feb 4, 2025
@jiexi
Copy link
Contributor Author

jiexi commented Feb 4, 2025

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented Feb 4, 2025

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "22.0.0-preview-0d0d258d",
  "@metamask-previews/address-book-controller": "6.0.2-preview-0d0d258d",
  "@metamask-previews/announcement-controller": "7.0.2-preview-0d0d258d",
  "@metamask-previews/approval-controller": "7.1.2-preview-0d0d258d",
  "@metamask-previews/assets-controllers": "47.0.0-preview-0d0d258d",
  "@metamask-previews/base-controller": "7.1.1-preview-0d0d258d",
  "@metamask-previews/build-utils": "3.0.2-preview-0d0d258d",
  "@metamask-previews/composable-controller": "10.0.0-preview-0d0d258d",
  "@metamask-previews/controller-utils": "11.5.0-preview-0d0d258d",
  "@metamask-previews/earn-controller": "0.1.0-preview-0d0d258d",
  "@metamask-previews/ens-controller": "15.0.1-preview-0d0d258d",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-0d0d258d",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-0d0d258d",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-0d0d258d",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-0d0d258d",
  "@metamask-previews/keyring-controller": "19.0.5-preview-0d0d258d",
  "@metamask-previews/logging-controller": "6.0.3-preview-0d0d258d",
  "@metamask-previews/message-manager": "12.0.0-preview-0d0d258d",
  "@metamask-previews/multichain": "2.1.0-preview-0d0d258d",
  "@metamask-previews/multichain-transactions-controller": "0.1.0-preview-0d0d258d",
  "@metamask-previews/name-controller": "8.0.2-preview-0d0d258d",
  "@metamask-previews/network-controller": "22.2.0-preview-0d0d258d",
  "@metamask-previews/notification-services-controller": "0.18.0-preview-0d0d258d",
  "@metamask-previews/permission-controller": "11.0.5-preview-0d0d258d",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-0d0d258d",
  "@metamask-previews/phishing-controller": "12.3.1-preview-0d0d258d",
  "@metamask-previews/polling-controller": "12.0.2-preview-0d0d258d",
  "@metamask-previews/preferences-controller": "15.0.1-preview-0d0d258d",
  "@metamask-previews/profile-sync-controller": "5.0.0-preview-0d0d258d",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-0d0d258d",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-0d0d258d",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-0d0d258d",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-0d0d258d",
  "@metamask-previews/signature-controller": "23.2.0-preview-0d0d258d",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-0d0d258d",
  "@metamask-previews/transaction-controller": "44.1.0-preview-0d0d258d",
  "@metamask-previews/user-operation-controller": "23.0.0-preview-0d0d258d"
}

Comment on lines +75 to +78
} else {
methods = isCaipChainId(scopeString)
? getNonEvmSupportedMethods(scopeString)
: [];
Copy link
Contributor

@adonesky1 adonesky1 Feb 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@FrederikBolding just wondering if we've considered what wallet:<caip-2-reference> (e.g. wallet:solana) scoped snaps would mean/look like. Not saying this case won't exist, just curious if we've thought about it.

optionalScopes: {
'foo:1': {
accounts: ['foo:1:0xdeadbeef'],
it('gets methods from getNonEvmSupportedMethods for scope non-evm namespace', () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
it('gets methods from getNonEvmSupportedMethods for scope non-evm namespace', () => {
it('gets methods from getNonEvmSupportedMethods for non-evm (not `eip155`, `wallet` or `wallet:eip155`) scopes', () => {

Comment on lines +732 to +735
{
getEvmInternalAccounts: expect.any(Function),
getNonEvmAccountAddresses: expect.any(Function),
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah this pattern is a bit funny, passing these hooks to the utility helpers.... ah well

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah... not my favorite

@jiexi
Copy link
Contributor Author

jiexi commented Feb 5, 2025

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented Feb 5, 2025

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "22.0.0-preview-958adf52",
  "@metamask-previews/address-book-controller": "6.0.2-preview-958adf52",
  "@metamask-previews/announcement-controller": "7.0.2-preview-958adf52",
  "@metamask-previews/approval-controller": "7.1.2-preview-958adf52",
  "@metamask-previews/assets-controllers": "47.0.0-preview-958adf52",
  "@metamask-previews/base-controller": "7.1.1-preview-958adf52",
  "@metamask-previews/build-utils": "3.0.2-preview-958adf52",
  "@metamask-previews/composable-controller": "10.0.0-preview-958adf52",
  "@metamask-previews/controller-utils": "11.5.0-preview-958adf52",
  "@metamask-previews/earn-controller": "0.1.0-preview-958adf52",
  "@metamask-previews/ens-controller": "15.0.1-preview-958adf52",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-958adf52",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-958adf52",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-958adf52",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-958adf52",
  "@metamask-previews/keyring-controller": "19.0.5-preview-958adf52",
  "@metamask-previews/logging-controller": "6.0.3-preview-958adf52",
  "@metamask-previews/message-manager": "12.0.0-preview-958adf52",
  "@metamask-previews/multichain": "2.1.0-preview-958adf52",
  "@metamask-previews/multichain-transactions-controller": "0.1.0-preview-958adf52",
  "@metamask-previews/name-controller": "8.0.2-preview-958adf52",
  "@metamask-previews/network-controller": "22.2.0-preview-958adf52",
  "@metamask-previews/notification-services-controller": "0.19.0-preview-958adf52",
  "@metamask-previews/permission-controller": "11.0.5-preview-958adf52",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-958adf52",
  "@metamask-previews/phishing-controller": "12.3.1-preview-958adf52",
  "@metamask-previews/polling-controller": "12.0.2-preview-958adf52",
  "@metamask-previews/preferences-controller": "15.0.1-preview-958adf52",
  "@metamask-previews/profile-sync-controller": "6.0.0-preview-958adf52",
  "@metamask-previews/queued-request-controller": "9.0.0-preview-958adf52",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-958adf52",
  "@metamask-previews/remote-feature-flag-controller": "1.3.0-preview-958adf52",
  "@metamask-previews/selected-network-controller": "21.0.0-preview-958adf52",
  "@metamask-previews/signature-controller": "23.2.0-preview-958adf52",
  "@metamask-previews/token-search-discovery-controller": "1.0.0-preview-958adf52",
  "@metamask-previews/transaction-controller": "44.1.0-preview-958adf52",
  "@metamask-previews/user-operation-controller": "23.0.0-preview-958adf52"
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants