Skip to content

Conversation

@ffmcgee725
Copy link
Member

@ffmcgee725 ffmcgee725 commented Sep 16, 2025

Explanation

This PR integrates the auxiliaryFunds and requiredAssets capabilities defined under ERC-7682 to enable auxiliary funds flows and improve capability consistency across clients.

References

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 communicated my changes to consumers by updating changelogs for packages I've changed, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@ffmcgee725
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
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/account-tree-controller": "0.15.1-preview-1f079244",
  "@metamask-previews/accounts-controller": "33.1.0-preview-1f079244",
  "@metamask-previews/address-book-controller": "6.1.1-preview-1f079244",
  "@metamask-previews/announcement-controller": "7.0.3-preview-1f079244",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-1f079244",
  "@metamask-previews/approval-controller": "7.1.3-preview-1f079244",
  "@metamask-previews/assets-controllers": "75.0.0-preview-1f079244",
  "@metamask-previews/base-controller": "8.3.0-preview-1f079244",
  "@metamask-previews/bridge-controller": "42.0.0-preview-1f079244",
  "@metamask-previews/bridge-status-controller": "42.0.0-preview-1f079244",
  "@metamask-previews/build-utils": "3.0.3-preview-1f079244",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-1f079244",
  "@metamask-previews/composable-controller": "11.0.0-preview-1f079244",
  "@metamask-previews/controller-utils": "11.12.0-preview-1f079244",
  "@metamask-previews/delegation-controller": "0.7.0-preview-1f079244",
  "@metamask-previews/earn-controller": "7.0.0-preview-1f079244",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-1f079244",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-1f079244",
  "@metamask-previews/ens-controller": "17.0.1-preview-1f079244",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-1f079244",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-1f079244",
  "@metamask-previews/foundryup": "1.0.1-preview-1f079244",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-1f079244",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-1f079244",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-1f079244",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-1f079244",
  "@metamask-previews/keyring-controller": "23.1.0-preview-1f079244",
  "@metamask-previews/logging-controller": "6.0.4-preview-1f079244",
  "@metamask-previews/message-manager": "12.0.2-preview-1f079244",
  "@metamask-previews/messenger": "0.2.0-preview-1f079244",
  "@metamask-previews/multichain-account-service": "0.8.0-preview-1f079244",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-1f079244",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-1f079244",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-1f079244",
  "@metamask-previews/name-controller": "8.0.3-preview-1f079244",
  "@metamask-previews/network-controller": "24.1.0-preview-1f079244",
  "@metamask-previews/network-enablement-controller": "1.0.0-preview-1f079244",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-1f079244",
  "@metamask-previews/permission-controller": "11.0.6-preview-1f079244",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-1f079244",
  "@metamask-previews/phishing-controller": "13.1.0-preview-1f079244",
  "@metamask-previews/polling-controller": "14.0.0-preview-1f079244",
  "@metamask-previews/preferences-controller": "19.0.0-preview-1f079244",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-1f079244",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-1f079244",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-1f079244",
  "@metamask-previews/sample-controllers": "1.0.0-preview-1f079244",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-1f079244",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-1f079244",
  "@metamask-previews/shield-controller": "0.1.2-preview-1f079244",
  "@metamask-previews/signature-controller": "33.0.0-preview-1f079244",
  "@metamask-previews/subscription-controller": "0.0.0-preview-1f079244",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-1f079244",
  "@metamask-previews/transaction-controller": "60.3.0-preview-1f079244",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-1f079244"
}

@ffmcgee725
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
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/account-tree-controller": "0.15.1-preview-e85a6854",
  "@metamask-previews/accounts-controller": "33.1.0-preview-e85a6854",
  "@metamask-previews/address-book-controller": "6.1.1-preview-e85a6854",
  "@metamask-previews/announcement-controller": "7.0.3-preview-e85a6854",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-e85a6854",
  "@metamask-previews/approval-controller": "7.1.3-preview-e85a6854",
  "@metamask-previews/assets-controllers": "75.0.0-preview-e85a6854",
  "@metamask-previews/base-controller": "8.3.0-preview-e85a6854",
  "@metamask-previews/bridge-controller": "42.0.0-preview-e85a6854",
  "@metamask-previews/bridge-status-controller": "42.0.0-preview-e85a6854",
  "@metamask-previews/build-utils": "3.0.3-preview-e85a6854",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-e85a6854",
  "@metamask-previews/composable-controller": "11.0.0-preview-e85a6854",
  "@metamask-previews/controller-utils": "11.12.0-preview-e85a6854",
  "@metamask-previews/delegation-controller": "0.7.0-preview-e85a6854",
  "@metamask-previews/earn-controller": "7.0.0-preview-e85a6854",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-e85a6854",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-e85a6854",
  "@metamask-previews/ens-controller": "17.0.1-preview-e85a6854",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-e85a6854",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-e85a6854",
  "@metamask-previews/foundryup": "1.0.1-preview-e85a6854",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-e85a6854",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-e85a6854",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-e85a6854",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-e85a6854",
  "@metamask-previews/keyring-controller": "23.1.0-preview-e85a6854",
  "@metamask-previews/logging-controller": "6.0.4-preview-e85a6854",
  "@metamask-previews/message-manager": "12.0.2-preview-e85a6854",
  "@metamask-previews/messenger": "0.2.0-preview-e85a6854",
  "@metamask-previews/multichain-account-service": "0.8.0-preview-e85a6854",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-e85a6854",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-e85a6854",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-e85a6854",
  "@metamask-previews/name-controller": "8.0.3-preview-e85a6854",
  "@metamask-previews/network-controller": "24.1.0-preview-e85a6854",
  "@metamask-previews/network-enablement-controller": "1.0.0-preview-e85a6854",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-e85a6854",
  "@metamask-previews/permission-controller": "11.0.6-preview-e85a6854",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-e85a6854",
  "@metamask-previews/phishing-controller": "13.1.0-preview-e85a6854",
  "@metamask-previews/polling-controller": "14.0.0-preview-e85a6854",
  "@metamask-previews/preferences-controller": "19.0.0-preview-e85a6854",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-e85a6854",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-e85a6854",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-e85a6854",
  "@metamask-previews/sample-controllers": "1.0.0-preview-e85a6854",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-e85a6854",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-e85a6854",
  "@metamask-previews/shield-controller": "0.1.2-preview-e85a6854",
  "@metamask-previews/signature-controller": "33.0.0-preview-e85a6854",
  "@metamask-previews/subscription-controller": "0.0.0-preview-e85a6854",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-e85a6854",
  "@metamask-previews/transaction-controller": "60.3.0-preview-e85a6854",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-e85a6854"
}

@ffmcgee725
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
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/account-tree-controller": "0.15.1-preview-c896a02b",
  "@metamask-previews/accounts-controller": "33.1.0-preview-c896a02b",
  "@metamask-previews/address-book-controller": "6.1.1-preview-c896a02b",
  "@metamask-previews/announcement-controller": "7.0.3-preview-c896a02b",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-c896a02b",
  "@metamask-previews/approval-controller": "7.1.3-preview-c896a02b",
  "@metamask-previews/assets-controllers": "75.1.0-preview-c896a02b",
  "@metamask-previews/base-controller": "8.3.0-preview-c896a02b",
  "@metamask-previews/bridge-controller": "43.0.0-preview-c896a02b",
  "@metamask-previews/bridge-status-controller": "43.0.0-preview-c896a02b",
  "@metamask-previews/build-utils": "3.0.3-preview-c896a02b",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-c896a02b",
  "@metamask-previews/composable-controller": "11.0.0-preview-c896a02b",
  "@metamask-previews/controller-utils": "11.13.0-preview-c896a02b",
  "@metamask-previews/delegation-controller": "0.7.0-preview-c896a02b",
  "@metamask-previews/earn-controller": "7.0.0-preview-c896a02b",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-c896a02b",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-c896a02b",
  "@metamask-previews/ens-controller": "17.0.1-preview-c896a02b",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-c896a02b",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-c896a02b",
  "@metamask-previews/foundryup": "1.0.1-preview-c896a02b",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-c896a02b",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-c896a02b",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-c896a02b",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-c896a02b",
  "@metamask-previews/keyring-controller": "23.1.0-preview-c896a02b",
  "@metamask-previews/logging-controller": "6.0.4-preview-c896a02b",
  "@metamask-previews/message-manager": "12.0.2-preview-c896a02b",
  "@metamask-previews/messenger": "0.2.0-preview-c896a02b",
  "@metamask-previews/multichain-account-service": "0.8.0-preview-c896a02b",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-c896a02b",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-c896a02b",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-c896a02b",
  "@metamask-previews/name-controller": "8.0.3-preview-c896a02b",
  "@metamask-previews/network-controller": "24.1.0-preview-c896a02b",
  "@metamask-previews/network-enablement-controller": "1.1.0-preview-c896a02b",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-c896a02b",
  "@metamask-previews/permission-controller": "11.0.6-preview-c896a02b",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-c896a02b",
  "@metamask-previews/phishing-controller": "13.1.0-preview-c896a02b",
  "@metamask-previews/polling-controller": "14.0.0-preview-c896a02b",
  "@metamask-previews/preferences-controller": "19.0.0-preview-c896a02b",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-c896a02b",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-c896a02b",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-c896a02b",
  "@metamask-previews/sample-controllers": "1.0.0-preview-c896a02b",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-c896a02b",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-c896a02b",
  "@metamask-previews/shield-controller": "0.1.2-preview-c896a02b",
  "@metamask-previews/signature-controller": "33.0.0-preview-c896a02b",
  "@metamask-previews/subscription-controller": "0.0.0-preview-c896a02b",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-c896a02b",
  "@metamask-previews/transaction-controller": "60.3.0-preview-c896a02b",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-c896a02b"
}

@ffmcgee725 ffmcgee725 changed the title feat: add auxiliaryFunds + requiredAssets support to eip5792-middleware + initial client integration feat: add auxiliaryFunds + requiredAssets support to eip5792-middleware Sep 16, 2025
@ffmcgee725
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
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/account-tree-controller": "0.15.1-preview-0c2c1149",
  "@metamask-previews/accounts-controller": "33.1.0-preview-0c2c1149",
  "@metamask-previews/address-book-controller": "6.1.1-preview-0c2c1149",
  "@metamask-previews/announcement-controller": "7.0.3-preview-0c2c1149",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-0c2c1149",
  "@metamask-previews/approval-controller": "7.1.3-preview-0c2c1149",
  "@metamask-previews/assets-controllers": "75.1.0-preview-0c2c1149",
  "@metamask-previews/base-controller": "8.3.0-preview-0c2c1149",
  "@metamask-previews/bridge-controller": "43.0.0-preview-0c2c1149",
  "@metamask-previews/bridge-status-controller": "43.0.0-preview-0c2c1149",
  "@metamask-previews/build-utils": "3.0.3-preview-0c2c1149",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-0c2c1149",
  "@metamask-previews/composable-controller": "11.0.0-preview-0c2c1149",
  "@metamask-previews/controller-utils": "11.14.0-preview-0c2c1149",
  "@metamask-previews/delegation-controller": "0.7.0-preview-0c2c1149",
  "@metamask-previews/earn-controller": "7.0.0-preview-0c2c1149",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-0c2c1149",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-0c2c1149",
  "@metamask-previews/ens-controller": "17.0.1-preview-0c2c1149",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-0c2c1149",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-0c2c1149",
  "@metamask-previews/foundryup": "1.0.1-preview-0c2c1149",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-0c2c1149",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-0c2c1149",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-0c2c1149",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-0c2c1149",
  "@metamask-previews/keyring-controller": "23.1.0-preview-0c2c1149",
  "@metamask-previews/logging-controller": "6.0.4-preview-0c2c1149",
  "@metamask-previews/message-manager": "12.0.2-preview-0c2c1149",
  "@metamask-previews/messenger": "0.2.0-preview-0c2c1149",
  "@metamask-previews/multichain-account-service": "0.8.0-preview-0c2c1149",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-0c2c1149",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-0c2c1149",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-0c2c1149",
  "@metamask-previews/name-controller": "8.0.3-preview-0c2c1149",
  "@metamask-previews/network-controller": "24.1.0-preview-0c2c1149",
  "@metamask-previews/network-enablement-controller": "1.1.0-preview-0c2c1149",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-0c2c1149",
  "@metamask-previews/permission-controller": "11.0.6-preview-0c2c1149",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-0c2c1149",
  "@metamask-previews/phishing-controller": "13.1.0-preview-0c2c1149",
  "@metamask-previews/polling-controller": "14.0.0-preview-0c2c1149",
  "@metamask-previews/preferences-controller": "19.0.0-preview-0c2c1149",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-0c2c1149",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-0c2c1149",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-0c2c1149",
  "@metamask-previews/sample-controllers": "1.0.0-preview-0c2c1149",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-0c2c1149",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-0c2c1149",
  "@metamask-previews/shield-controller": "0.1.2-preview-0c2c1149",
  "@metamask-previews/signature-controller": "33.0.0-preview-0c2c1149",
  "@metamask-previews/subscription-controller": "0.0.0-preview-0c2c1149",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-0c2c1149",
  "@metamask-previews/transaction-controller": "60.3.0-preview-0c2c1149",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-0c2c1149"
}

cursor[bot]

This comment was marked as outdated.

jiexi
jiexi previously approved these changes Sep 17, 2025
if (!isAuxiliaryFundsSupported(chainId)) {
throw new JsonRpcError(
EIP7682ErrorCode.UnsupportedChain,
`The wallet no longer supports auxiliary funds on the requested chain: ${chainId}`,
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
`The wallet no longer supports auxiliary funds on the requested chain: ${chainId}`,
`The wallet does not support the auxiliary funds capability on the requested chain: ${chainId}`,

Copy link
Contributor

Choose a reason for hiding this comment

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

ah I see this was what was specified in the ERC https://github.com/ethereum/ERCs/blob/master/ERCS/erc-7682.md#error-codes

🤔 Ok ignore this for now I guess, but I feel like we should change it in the ERC

Copy link
Member Author

Choose a reason for hiding this comment

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

if (!isSupportedAccount) {
throw new JsonRpcError(
EIP5792ErrorCode.UnsupportedNonOptionalCapability,
`Unsupported non-optional capabilities: ${SupportedCapabilities.AuxiliaryFunds}`,
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
`Unsupported non-optional capabilities: ${SupportedCapabilities.AuxiliaryFunds}`,
`Unsupported non-optional capability: ${SupportedCapabilities.AuxiliaryFunds}`,

Copy link
Contributor

Choose a reason for hiding this comment

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

This one is actually wrong according to the spec: https://eips.ethereum.org/EIPS/eip-5792#error-codes

Copy link
Member Author

Choose a reason for hiding this comment

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

Comment on lines +27 to +31
export enum EIP7682ErrorCode {
UnsupportedAsset = 5771,
UnsupportedChain = 5772,
MalformedRequiredAssets = 5773,
}
Copy link
Contributor

Choose a reason for hiding this comment

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

why not make this an object with both codes and messages?

Copy link
Contributor

Choose a reason for hiding this comment

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

I guess you're following the pattern above with EIP5792ErrorCode...

Weird pattern to decouple message + code IMO

Up to you we could change it here or just do that in the future

Copy link
Member Author

Choose a reason for hiding this comment

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

☝🏾 exactly, following what was previously established. I'm good with refactoring this in a tech debt issue which makes sense when these are moved to @metamask/rpc-errors package. Should I put an issue on our board for moving these out of here and making these objects with both code and messages ?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes lets create a ticket for this 🙏

Copy link
Member Author

Choose a reason for hiding this comment

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


return {
...group[0],
amount: add0x(totalAmount.toString(16)) as Hex,
Copy link
Contributor

Choose a reason for hiding this comment

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

hmmm do we not have a toHex helper that would also get the typing right?

Copy link
Member Author

Choose a reason for hiding this comment

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

actually add0x already returns an Hex, so we don't need to typecast or use toHex at all.

80eba8b

@ffmcgee725
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
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/account-tree-controller": "0.16.1-preview-6b2341f8",
  "@metamask-previews/accounts-controller": "33.1.0-preview-6b2341f8",
  "@metamask-previews/address-book-controller": "6.1.1-preview-6b2341f8",
  "@metamask-previews/announcement-controller": "7.0.3-preview-6b2341f8",
  "@metamask-previews/app-metadata-controller": "1.0.0-preview-6b2341f8",
  "@metamask-previews/approval-controller": "7.1.3-preview-6b2341f8",
  "@metamask-previews/assets-controllers": "75.2.0-preview-6b2341f8",
  "@metamask-previews/base-controller": "8.4.0-preview-6b2341f8",
  "@metamask-previews/bridge-controller": "43.1.0-preview-6b2341f8",
  "@metamask-previews/bridge-status-controller": "43.1.0-preview-6b2341f8",
  "@metamask-previews/build-utils": "3.0.3-preview-6b2341f8",
  "@metamask-previews/chain-agnostic-permission": "1.1.1-preview-6b2341f8",
  "@metamask-previews/composable-controller": "11.0.0-preview-6b2341f8",
  "@metamask-previews/controller-utils": "11.14.0-preview-6b2341f8",
  "@metamask-previews/delegation-controller": "0.7.0-preview-6b2341f8",
  "@metamask-previews/earn-controller": "7.0.0-preview-6b2341f8",
  "@metamask-previews/eip-5792-middleware": "1.1.0-preview-6b2341f8",
  "@metamask-previews/eip1193-permission-middleware": "1.0.0-preview-6b2341f8",
  "@metamask-previews/ens-controller": "17.0.1-preview-6b2341f8",
  "@metamask-previews/error-reporting-service": "2.0.0-preview-6b2341f8",
  "@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-6b2341f8",
  "@metamask-previews/foundryup": "1.0.1-preview-6b2341f8",
  "@metamask-previews/gas-fee-controller": "24.0.0-preview-6b2341f8",
  "@metamask-previews/gator-permissions-controller": "0.1.0-preview-6b2341f8",
  "@metamask-previews/json-rpc-engine": "10.0.3-preview-6b2341f8",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-6b2341f8",
  "@metamask-previews/keyring-controller": "23.1.0-preview-6b2341f8",
  "@metamask-previews/logging-controller": "6.0.4-preview-6b2341f8",
  "@metamask-previews/message-manager": "12.0.2-preview-6b2341f8",
  "@metamask-previews/messenger": "0.3.0-preview-6b2341f8",
  "@metamask-previews/multichain-account-service": "0.9.0-preview-6b2341f8",
  "@metamask-previews/multichain-api-middleware": "1.0.0-preview-6b2341f8",
  "@metamask-previews/multichain-network-controller": "0.12.0-preview-6b2341f8",
  "@metamask-previews/multichain-transactions-controller": "5.0.0-preview-6b2341f8",
  "@metamask-previews/name-controller": "8.0.3-preview-6b2341f8",
  "@metamask-previews/network-controller": "24.1.0-preview-6b2341f8",
  "@metamask-previews/network-enablement-controller": "1.1.0-preview-6b2341f8",
  "@metamask-previews/notification-services-controller": "18.1.0-preview-6b2341f8",
  "@metamask-previews/permission-controller": "11.0.6-preview-6b2341f8",
  "@metamask-previews/permission-log-controller": "4.0.0-preview-6b2341f8",
  "@metamask-previews/phishing-controller": "13.1.0-preview-6b2341f8",
  "@metamask-previews/polling-controller": "14.0.0-preview-6b2341f8",
  "@metamask-previews/preferences-controller": "19.0.0-preview-6b2341f8",
  "@metamask-previews/profile-sync-controller": "25.0.0-preview-6b2341f8",
  "@metamask-previews/rate-limit-controller": "6.0.3-preview-6b2341f8",
  "@metamask-previews/remote-feature-flag-controller": "1.7.0-preview-6b2341f8",
  "@metamask-previews/sample-controllers": "1.0.0-preview-6b2341f8",
  "@metamask-previews/seedless-onboarding-controller": "4.0.0-preview-6b2341f8",
  "@metamask-previews/selected-network-controller": "24.0.0-preview-6b2341f8",
  "@metamask-previews/shield-controller": "0.1.2-preview-6b2341f8",
  "@metamask-previews/signature-controller": "33.0.0-preview-6b2341f8",
  "@metamask-previews/subscription-controller": "0.1.0-preview-6b2341f8",
  "@metamask-previews/token-search-discovery-controller": "3.3.0-preview-6b2341f8",
  "@metamask-previews/transaction-controller": "60.4.0-preview-6b2341f8",
  "@metamask-previews/user-operation-controller": "39.0.0-preview-6b2341f8"
}

Comment on lines 621 to 633
expect(result).toBeDefined();
expect(payload.capabilities?.auxiliaryFunds?.requiredAssets?.length).toBe(
1,
);
expect(
payload.capabilities?.auxiliaryFunds?.requiredAssets?.[0].amount,
).toBe('0x5');
expect(
payload.capabilities?.auxiliaryFunds?.requiredAssets?.[0].address,
).toBe('0x123');
expect(
payload.capabilities?.auxiliaryFunds?.requiredAssets?.[0].standard,
).toBe('erc20');
Copy link
Contributor

Choose a reason for hiding this comment

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

total nit:

Suggested change
expect(result).toBeDefined();
expect(payload.capabilities?.auxiliaryFunds?.requiredAssets?.length).toBe(
1,
);
expect(
payload.capabilities?.auxiliaryFunds?.requiredAssets?.[0].amount,
).toBe('0x5');
expect(
payload.capabilities?.auxiliaryFunds?.requiredAssets?.[0].address,
).toBe('0x123');
expect(
payload.capabilities?.auxiliaryFunds?.requiredAssets?.[0].standard,
).toBe('erc20');
expect(result).toBeDefined();
const requiredAssets = payload.capabilities?.auxiliaryFunds?.requiredAssets;
expect(requiredAssets).toHaveLength(1);
const [asset] = requiredAssets ?? [];
expect(asset).toMatchObject({
amount: '0x5',
address: '0x123',
standard: 'erc20',
});

Copy link
Member Author

Choose a reason for hiding this comment

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

}

for (const asset of auxiliaryFunds.requiredAssets) {
if (asset.standard !== 'erc20') {
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we have a tokenStandard enum we could use here?

Copy link
Contributor

Choose a reason for hiding this comment

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

I see a few competing ones around various modules/repos 🤔

Ok this is fine for now


const totalAmount = group.reduce((sum, asset) => {
return sum + BigInt(asset.amount);
}, 0n);
Copy link
Contributor

Choose a reason for hiding this comment

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

TIL -> I haven't used BigInt before!

Copy link
Contributor

@adonesky1 adonesky1 left a comment

Choose a reason for hiding this comment

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

LGTM!

@adonesky1 adonesky1 enabled auto-merge (squash) September 18, 2025 17:04
@adonesky1 adonesky1 merged commit 6af673b into main Sep 18, 2025
305 of 471 checks passed
@adonesky1 adonesky1 deleted the jc/WAPI-409 branch September 18, 2025 17:55
@ffmcgee725 ffmcgee725 mentioned this pull request Sep 19, 2025
4 tasks
ffmcgee725 added a commit that referenced this pull request Sep 19, 2025
## Explanation

Release for `@metamask/eip-5792-middleware`
- Add `auxiliaryFunds` + `requiredAssets` support defined under
[ERC-7682](https://eips.ethereum.org/EIPS/eip-7682)
([#6623](#6623))
- Bump `@metamask/transaction-controller` from `^60.2.0` to `^60.4.0`
([#6561](#6561),
[#6641](#6641))
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.0`
([#6588](#6588))

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

* Fixes https://consensyssoftware.atlassian.net/browse/WAPI-409

## 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 communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
aganglada pushed a commit that referenced this pull request Sep 24, 2025
…dleware` (#6623)

## Explanation

This PR integrates the `auxiliaryFunds` and `requiredAssets`
capabilities defined under
[ERC-7682](https://eips.ethereum.org/EIPS/eip-7682) to enable auxiliary
funds flows and improve capability consistency across clients.

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

* Fixes https://consensyssoftware.atlassian.net/browse/WAPI-409

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [x] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
aganglada pushed a commit that referenced this pull request Sep 24, 2025
## Explanation

Release for `@metamask/eip-5792-middleware`
- Add `auxiliaryFunds` + `requiredAssets` support defined under
[ERC-7682](https://eips.ethereum.org/EIPS/eip-7682)
([#6623](#6623))
- Bump `@metamask/transaction-controller` from `^60.2.0` to `^60.4.0`
([#6561](#6561),
[#6641](#6641))
- Bump `@metamask/utils` from `^11.4.2` to `^11.8.0`
([#6588](#6588))

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

* Fixes https://consensyssoftware.atlassian.net/browse/WAPI-409

## 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 communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
chainIds: Hex[],
) => Promise<Record<string, boolean>>;
/** Function to validate if auxiliary funds capability is supported. */
isAuxiliaryFundsSupported: (chainId: Hex) => boolean;
Copy link
Member

Choose a reason for hiding this comment

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

This should have been documented as a breaking change

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.

5 participants