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
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