Skip to content

Conversation

@matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Jan 6, 2026

Explanation

Support Relay quotes using the entire payment token balance, by using the EXACT_INPUT trade type, rather than the standard EXPECTED_OUTPUT.

Enabled via the new setIsMaxAmount public method and messenger action.

References

Related to #6498

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
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Introduces max-amount quotes in Transaction Pay, enabling relay quotes that consume the full payment token balance and updating totals/metadata accordingly.

  • Adds setIsMaxAmount action/method and isMaxAmount in TransactionData; triggers source amount recalculation and quote refresh
  • Relay strategy: uses EXACT_INPUT trade type when isMaxAmount is true; forbids included transactions in this mode; request/response types extended to support this
  • Quotes now include targetAmount; totals calculation updated to use targetAmount when isMaxAmount is selected
  • Syncs metamaskPay metadata with new targetFiat; adds optional targetFiat to MetamaskPayMetadata in transaction-controller
  • Updates tests across bridge/relay/test strategies and utils to cover new paths and calculations

Written by Cursor Bugbot for commit 9462ebb. This will update automatically on new commits. Configure here.

@matthewwalsh0 matthewwalsh0 changed the title feat(transaction-pay-controller): support max payment token amount feat(transaction-pay-controller): max quotes Jan 6, 2026
@matthewwalsh0 matthewwalsh0 marked this pull request as ready for review January 6, 2026 19:56
@matthewwalsh0 matthewwalsh0 requested review from a team as code owners January 6, 2026 19:56
@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

github-actions bot commented Jan 6, 2026

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": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/accounts-controller": "35.0.0-preview-4f3e9ca7",
  "@metamask-previews/address-book-controller": "7.0.1-preview-4f3e9ca7",
  "@metamask-previews/analytics-controller": "1.0.0-preview-4f3e9ca7",
  "@metamask-previews/announcement-controller": "8.0.0-preview-4f3e9ca7",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/approval-controller": "8.0.0-preview-4f3e9ca7",
  "@metamask-previews/assets-controllers": "94.1.0-preview-4f3e9ca7",
  "@metamask-previews/base-controller": "9.0.0-preview-4f3e9ca7",
  "@metamask-previews/bridge-controller": "64.2.0-preview-4f3e9ca7",
  "@metamask-previews/bridge-status-controller": "64.2.0-preview-4f3e9ca7",
  "@metamask-previews/build-utils": "3.0.4-preview-4f3e9ca7",
  "@metamask-previews/chain-agnostic-permission": "1.3.0-preview-4f3e9ca7",
  "@metamask-previews/claims-controller": "0.3.1-preview-4f3e9ca7",
  "@metamask-previews/composable-controller": "12.0.0-preview-4f3e9ca7",
  "@metamask-previews/controller-utils": "11.17.0-preview-4f3e9ca7",
  "@metamask-previews/core-backend": "5.0.0-preview-4f3e9ca7",
  "@metamask-previews/delegation-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/earn-controller": "11.0.0-preview-4f3e9ca7",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-4f3e9ca7",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-4f3e9ca7",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-4f3e9ca7",
  "@metamask-previews/ens-controller": "19.0.0-preview-4f3e9ca7",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-4f3e9ca7",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-4f3e9ca7",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-4f3e9ca7",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-4f3e9ca7",
  "@metamask-previews/foundryup": "1.0.1-preview-4f3e9ca7",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-4f3e9ca7",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-4f3e9ca7",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-4f3e9ca7",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-4f3e9ca7",
  "@metamask-previews/keyring-controller": "25.0.0-preview-4f3e9ca7",
  "@metamask-previews/logging-controller": "7.0.1-preview-4f3e9ca7",
  "@metamask-previews/message-manager": "14.1.0-preview-4f3e9ca7",
  "@metamask-previews/messenger": "0.3.0-preview-4f3e9ca7",
  "@metamask-previews/multichain-account-service": "4.1.0-preview-4f3e9ca7",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-4f3e9ca7",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-4f3e9ca7",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-4f3e9ca7",
  "@metamask-previews/name-controller": "9.0.0-preview-4f3e9ca7",
  "@metamask-previews/network-controller": "27.1.0-preview-4f3e9ca7",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-4f3e9ca7",
  "@metamask-previews/permission-controller": "12.1.1-preview-4f3e9ca7",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-4f3e9ca7",
  "@metamask-previews/phishing-controller": "16.1.0-preview-4f3e9ca7",
  "@metamask-previews/polling-controller": "16.0.0-preview-4f3e9ca7",
  "@metamask-previews/preferences-controller": "22.0.0-preview-4f3e9ca7",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-4f3e9ca7",
  "@metamask-previews/ramps-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-4f3e9ca7",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/sample-controllers": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-4f3e9ca7",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-4f3e9ca7",
  "@metamask-previews/shield-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/signature-controller": "38.0.0-preview-4f3e9ca7",
  "@metamask-previews/storage-service": "0.0.1-preview-4f3e9ca7",
  "@metamask-previews/subscription-controller": "5.4.0-preview-4f3e9ca7",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/transaction-controller": "62.7.0-preview-4f3e9ca7",
  "@metamask-previews/transaction-pay-controller": "10.5.0-preview-4f3e9ca7",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-4f3e9ca7"
}

@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

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": "4.0.0-preview-9462ebb8",
  "@metamask-previews/accounts-controller": "35.0.0-preview-9462ebb8",
  "@metamask-previews/address-book-controller": "7.0.1-preview-9462ebb8",
  "@metamask-previews/analytics-controller": "1.0.0-preview-9462ebb8",
  "@metamask-previews/announcement-controller": "8.0.0-preview-9462ebb8",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/approval-controller": "8.0.0-preview-9462ebb8",
  "@metamask-previews/assets-controllers": "94.1.0-preview-9462ebb8",
  "@metamask-previews/base-controller": "9.0.0-preview-9462ebb8",
  "@metamask-previews/bridge-controller": "64.2.0-preview-9462ebb8",
  "@metamask-previews/bridge-status-controller": "64.2.0-preview-9462ebb8",
  "@metamask-previews/build-utils": "3.0.4-preview-9462ebb8",
  "@metamask-previews/chain-agnostic-permission": "1.3.0-preview-9462ebb8",
  "@metamask-previews/claims-controller": "0.3.1-preview-9462ebb8",
  "@metamask-previews/composable-controller": "12.0.0-preview-9462ebb8",
  "@metamask-previews/controller-utils": "11.17.0-preview-9462ebb8",
  "@metamask-previews/core-backend": "5.0.0-preview-9462ebb8",
  "@metamask-previews/delegation-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/earn-controller": "11.0.0-preview-9462ebb8",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-9462ebb8",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-9462ebb8",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-9462ebb8",
  "@metamask-previews/ens-controller": "19.0.0-preview-9462ebb8",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-9462ebb8",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-9462ebb8",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-9462ebb8",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-9462ebb8",
  "@metamask-previews/foundryup": "1.0.1-preview-9462ebb8",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-9462ebb8",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-9462ebb8",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-9462ebb8",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-9462ebb8",
  "@metamask-previews/keyring-controller": "25.0.0-preview-9462ebb8",
  "@metamask-previews/logging-controller": "7.0.1-preview-9462ebb8",
  "@metamask-previews/message-manager": "14.1.0-preview-9462ebb8",
  "@metamask-previews/messenger": "0.3.0-preview-9462ebb8",
  "@metamask-previews/multichain-account-service": "4.1.0-preview-9462ebb8",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-9462ebb8",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-9462ebb8",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-9462ebb8",
  "@metamask-previews/name-controller": "9.0.0-preview-9462ebb8",
  "@metamask-previews/network-controller": "27.1.0-preview-9462ebb8",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-9462ebb8",
  "@metamask-previews/permission-controller": "12.1.1-preview-9462ebb8",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-9462ebb8",
  "@metamask-previews/phishing-controller": "16.1.0-preview-9462ebb8",
  "@metamask-previews/polling-controller": "16.0.0-preview-9462ebb8",
  "@metamask-previews/preferences-controller": "22.0.0-preview-9462ebb8",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-9462ebb8",
  "@metamask-previews/ramps-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-9462ebb8",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/sample-controllers": "4.0.0-preview-9462ebb8",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-9462ebb8",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-9462ebb8",
  "@metamask-previews/shield-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/signature-controller": "38.0.0-preview-9462ebb8",
  "@metamask-previews/storage-service": "0.0.1-preview-9462ebb8",
  "@metamask-previews/subscription-controller": "5.4.0-preview-9462ebb8",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/transaction-controller": "62.7.0-preview-9462ebb8",
  "@metamask-previews/transaction-pay-controller": "10.5.0-preview-9462ebb8",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-9462ebb8"
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants