Skip to content

Transaction pay controller new assets state#8163

Open
bergarces wants to merge 11 commits intomainfrom
transaction-pay-controller-new-assets-state
Open

Transaction pay controller new assets state#8163
bergarces wants to merge 11 commits intomainfrom
transaction-pay-controller-new-assets-state

Conversation

@bergarces
Copy link
Contributor

@bergarces bergarces commented Mar 10, 2026

Explanation

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

Note

Medium Risk
Changes the data source for balances/metadata/rates behind a feature flag and adds cross-controller messenger calls, which could affect quoting/payment calculations if state shapes or gating logic are wrong.

Overview
Updates transaction-pay-controller to optionally source token metadata, balances, and fiat rates from a single AssetsController:getStateForTransactionPay call when the new assetsUnifyState remote feature flag (with app minimum-version gating via AppMetadataController:getState) is enabled, falling back to the existing per-controller getState calls otherwise.

This is wired through the messenger AllowedActions (breaking type change), adds new dependencies/TS project references, expands mocks/tests to cover the new flag and data source behavior, and removes the unused getAllTokenBalances helper.

Separately, assets-controller tightens formatExchangeRatesForBridge typings by reusing canonical @metamask/assets-controllers state types (dropping local bridge entry types) and adjusts casting to match those types.

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

@bergarces bergarces requested review from a team as code owners March 10, 2026 14:44
@bergarces bergarces force-pushed the transaction-pay-controller-new-assets-state branch from 1a70549 to 1e09ec5 Compare March 10, 2026 14:46
@bergarces
Copy link
Contributor Author

@metamaskbot publish-previews

@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": "5.0.0-preview-3b760ee09",
  "@metamask-previews/accounts-controller": "37.0.0-preview-3b760ee09",
  "@metamask-previews/address-book-controller": "7.0.1-preview-3b760ee09",
  "@metamask-previews/ai-controllers": "0.2.0-preview-3b760ee09",
  "@metamask-previews/analytics-controller": "1.0.0-preview-3b760ee09",
  "@metamask-previews/analytics-data-regulation-controller": "0.0.0-preview-3b760ee09",
  "@metamask-previews/announcement-controller": "8.0.0-preview-3b760ee09",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-3b760ee09",
  "@metamask-previews/approval-controller": "8.0.0-preview-3b760ee09",
  "@metamask-previews/assets-controller": "2.3.0-preview-3b760ee09",
  "@metamask-previews/assets-controllers": "100.2.0-preview-3b760ee09",
  "@metamask-previews/base-controller": "9.0.0-preview-3b760ee09",
  "@metamask-previews/base-data-service": "0.0.0-preview-3b760ee09",
  "@metamask-previews/bridge-controller": "69.0.0-preview-3b760ee09",
  "@metamask-previews/bridge-status-controller": "68.0.1-preview-3b760ee09",
  "@metamask-previews/build-utils": "3.0.4-preview-3b760ee09",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-3b760ee09",
  "@metamask-previews/claims-controller": "0.4.2-preview-3b760ee09",
  "@metamask-previews/client-controller": "1.0.0-preview-3b760ee09",
  "@metamask-previews/compliance-controller": "1.0.1-preview-3b760ee09",
  "@metamask-previews/composable-controller": "12.0.0-preview-3b760ee09",
  "@metamask-previews/config-registry-controller": "0.1.0-preview-3b760ee09",
  "@metamask-previews/connectivity-controller": "0.1.0-preview-3b760ee09",
  "@metamask-previews/controller-utils": "11.19.0-preview-3b760ee09",
  "@metamask-previews/core-backend": "6.1.0-preview-3b760ee09",
  "@metamask-previews/delegation-controller": "2.0.2-preview-3b760ee09",
  "@metamask-previews/earn-controller": "11.1.2-preview-3b760ee09",
  "@metamask-previews/eip-5792-middleware": "3.0.0-preview-3b760ee09",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-3b760ee09",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-3b760ee09",
  "@metamask-previews/ens-controller": "19.0.3-preview-3b760ee09",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-3b760ee09",
  "@metamask-previews/eth-block-tracker": "15.0.1-preview-3b760ee09",
  "@metamask-previews/eth-json-rpc-middleware": "23.1.0-preview-3b760ee09",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-3b760ee09",
  "@metamask-previews/foundryup": "1.0.1-preview-3b760ee09",
  "@metamask-previews/gas-fee-controller": "26.0.3-preview-3b760ee09",
  "@metamask-previews/gator-permissions-controller": "2.1.0-preview-3b760ee09",
  "@metamask-previews/geolocation-controller": "0.1.1-preview-3b760ee09",
  "@metamask-previews/json-rpc-engine": "10.2.3-preview-3b760ee09",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-3b760ee09",
  "@metamask-previews/keyring-controller": "25.1.0-preview-3b760ee09",
  "@metamask-previews/logging-controller": "7.0.1-preview-3b760ee09",
  "@metamask-previews/message-manager": "14.1.0-preview-3b760ee09",
  "@metamask-previews/messenger": "0.3.0-preview-3b760ee09",
  "@metamask-previews/multichain-account-service": "7.1.0-preview-3b760ee09",
  "@metamask-previews/multichain-api-middleware": "1.2.7-preview-3b760ee09",
  "@metamask-previews/multichain-network-controller": "3.0.5-preview-3b760ee09",
  "@metamask-previews/multichain-transactions-controller": "7.0.2-preview-3b760ee09",
  "@metamask-previews/name-controller": "9.0.0-preview-3b760ee09",
  "@metamask-previews/network-controller": "30.0.0-preview-3b760ee09",
  "@metamask-previews/network-enablement-controller": "4.2.0-preview-3b760ee09",
  "@metamask-previews/notification-services-controller": "22.0.0-preview-3b760ee09",
  "@metamask-previews/permission-controller": "12.2.0-preview-3b760ee09",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-3b760ee09",
  "@metamask-previews/perps-controller": "1.0.0-preview-3b760ee09",
  "@metamask-previews/phishing-controller": "16.3.0-preview-3b760ee09",
  "@metamask-previews/polling-controller": "16.0.3-preview-3b760ee09",
  "@metamask-previews/preferences-controller": "23.0.0-preview-3b760ee09",
  "@metamask-previews/profile-metrics-controller": "3.0.2-preview-3b760ee09",
  "@metamask-previews/profile-sync-controller": "27.1.0-preview-3b760ee09",
  "@metamask-previews/ramps-controller": "10.2.0-preview-3b760ee09",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-3b760ee09",
  "@metamask-previews/remote-feature-flag-controller": "4.1.0-preview-3b760ee09",
  "@metamask-previews/sample-controllers": "4.0.3-preview-3b760ee09",
  "@metamask-previews/seedless-onboarding-controller": "8.1.0-preview-3b760ee09",
  "@metamask-previews/selected-network-controller": "26.0.3-preview-3b760ee09",
  "@metamask-previews/shield-controller": "5.0.1-preview-3b760ee09",
  "@metamask-previews/signature-controller": "39.0.5-preview-3b760ee09",
  "@metamask-previews/storage-service": "1.0.0-preview-3b760ee09",
  "@metamask-previews/subscription-controller": "6.0.0-preview-3b760ee09",
  "@metamask-previews/transaction-controller": "62.21.0-preview-3b760ee09",
  "@metamask-previews/transaction-pay-controller": "16.4.1-preview-3b760ee09",
  "@metamask-previews/user-operation-controller": "41.0.3-preview-3b760ee09"
}

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

@bergarces
Copy link
Contributor Author

@metamaskbot publish-previews

@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": "5.0.1-preview-d8831108d",
  "@metamask-previews/accounts-controller": "37.0.0-preview-d8831108d",
  "@metamask-previews/address-book-controller": "7.0.1-preview-d8831108d",
  "@metamask-previews/ai-controllers": "0.2.0-preview-d8831108d",
  "@metamask-previews/analytics-controller": "1.0.0-preview-d8831108d",
  "@metamask-previews/analytics-data-regulation-controller": "0.0.0-preview-d8831108d",
  "@metamask-previews/announcement-controller": "8.0.0-preview-d8831108d",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-d8831108d",
  "@metamask-previews/approval-controller": "8.0.0-preview-d8831108d",
  "@metamask-previews/assets-controller": "2.3.0-preview-d8831108d",
  "@metamask-previews/assets-controllers": "100.2.1-preview-d8831108d",
  "@metamask-previews/base-controller": "9.0.0-preview-d8831108d",
  "@metamask-previews/base-data-service": "0.0.0-preview-d8831108d",
  "@metamask-previews/bridge-controller": "69.0.1-preview-d8831108d",
  "@metamask-previews/bridge-status-controller": "68.0.2-preview-d8831108d",
  "@metamask-previews/build-utils": "3.0.4-preview-d8831108d",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-d8831108d",
  "@metamask-previews/claims-controller": "0.4.3-preview-d8831108d",
  "@metamask-previews/client-controller": "1.0.0-preview-d8831108d",
  "@metamask-previews/compliance-controller": "1.0.1-preview-d8831108d",
  "@metamask-previews/composable-controller": "12.0.0-preview-d8831108d",
  "@metamask-previews/config-registry-controller": "0.1.1-preview-d8831108d",
  "@metamask-previews/connectivity-controller": "0.1.0-preview-d8831108d",
  "@metamask-previews/controller-utils": "11.19.0-preview-d8831108d",
  "@metamask-previews/core-backend": "6.1.1-preview-d8831108d",
  "@metamask-previews/delegation-controller": "2.0.2-preview-d8831108d",
  "@metamask-previews/earn-controller": "11.1.2-preview-d8831108d",
  "@metamask-previews/eip-5792-middleware": "3.0.0-preview-d8831108d",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-d8831108d",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-d8831108d",
  "@metamask-previews/ens-controller": "19.0.3-preview-d8831108d",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-d8831108d",
  "@metamask-previews/eth-block-tracker": "15.0.1-preview-d8831108d",
  "@metamask-previews/eth-json-rpc-middleware": "23.1.0-preview-d8831108d",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-d8831108d",
  "@metamask-previews/foundryup": "1.0.1-preview-d8831108d",
  "@metamask-previews/gas-fee-controller": "26.0.3-preview-d8831108d",
  "@metamask-previews/gator-permissions-controller": "2.1.0-preview-d8831108d",
  "@metamask-previews/geolocation-controller": "0.1.1-preview-d8831108d",
  "@metamask-previews/json-rpc-engine": "10.2.3-preview-d8831108d",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-d8831108d",
  "@metamask-previews/keyring-controller": "25.1.0-preview-d8831108d",
  "@metamask-previews/logging-controller": "7.0.1-preview-d8831108d",
  "@metamask-previews/message-manager": "14.1.0-preview-d8831108d",
  "@metamask-previews/messenger": "0.3.0-preview-d8831108d",
  "@metamask-previews/multichain-account-service": "7.1.0-preview-d8831108d",
  "@metamask-previews/multichain-api-middleware": "1.2.7-preview-d8831108d",
  "@metamask-previews/multichain-network-controller": "3.0.5-preview-d8831108d",
  "@metamask-previews/multichain-transactions-controller": "7.0.2-preview-d8831108d",
  "@metamask-previews/name-controller": "9.0.0-preview-d8831108d",
  "@metamask-previews/network-controller": "30.0.0-preview-d8831108d",
  "@metamask-previews/network-enablement-controller": "4.2.0-preview-d8831108d",
  "@metamask-previews/notification-services-controller": "22.1.0-preview-d8831108d",
  "@metamask-previews/permission-controller": "12.2.0-preview-d8831108d",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-d8831108d",
  "@metamask-previews/perps-controller": "1.0.1-preview-d8831108d",
  "@metamask-previews/phishing-controller": "16.3.0-preview-d8831108d",
  "@metamask-previews/polling-controller": "16.0.3-preview-d8831108d",
  "@metamask-previews/preferences-controller": "23.0.0-preview-d8831108d",
  "@metamask-previews/profile-metrics-controller": "3.0.3-preview-d8831108d",
  "@metamask-previews/profile-sync-controller": "28.0.0-preview-d8831108d",
  "@metamask-previews/ramps-controller": "10.2.0-preview-d8831108d",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-d8831108d",
  "@metamask-previews/remote-feature-flag-controller": "4.1.0-preview-d8831108d",
  "@metamask-previews/sample-controllers": "4.0.3-preview-d8831108d",
  "@metamask-previews/seedless-onboarding-controller": "8.1.0-preview-d8831108d",
  "@metamask-previews/selected-network-controller": "26.0.3-preview-d8831108d",
  "@metamask-previews/shield-controller": "5.0.1-preview-d8831108d",
  "@metamask-previews/signature-controller": "39.0.5-preview-d8831108d",
  "@metamask-previews/storage-service": "1.0.0-preview-d8831108d",
  "@metamask-previews/subscription-controller": "6.0.1-preview-d8831108d",
  "@metamask-previews/transaction-controller": "62.21.0-preview-d8831108d",
  "@metamask-previews/transaction-pay-controller": "16.4.1-preview-d8831108d",
  "@metamask-previews/user-operation-controller": "41.0.3-preview-d8831108d"
}

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.

1 participant