Skip to content

Conversation

@matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Nov 14, 2025

Explanation

Include sourceAmounts in TransactionPayQuote so the clients can validate the exact source amount is available.

Also:

  • Include both an optimistic estimate and max source network fee in TransactionPayQuote.
  • Factor gas fee tokens in the target network fee.
  • Use fixed fiat rates for stablecoins.

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

Note

Adds sourceAmount to quotes/totals, exposes estimate and max source network fees (with human/raw), accounts for gas fee tokens in target fees, and fixes USD rates for Polygon USDCe/Arbitrum USDC.

  • API/Types (BREAKING)
    • Add sourceAmount to TransactionPayQuote and TransactionPayTotals.
    • Change fees.sourceNetwork to include { estimate, max } (each an Amount with fiat/usd/human/raw).
    • Add isTargetGasFeeToken to fees and propagate in totals.
  • Strategies
    • Bridge/Relay: populate sourceAmount; compute source fees as estimate and max; keep target network fee; refine provider fee for Relay (max of relayer fee vs value loss).
    • Test strategy updated to return new fee and amount shapes.
  • Gas utils
    • calculateGasCost/calculateTransactionGasCost now return Amount (fiat/usd/human/raw) and support isMax.
    • Consider selected gas fee token cost when present; fall back to native if sufficient balance/unavailable.
  • Token utils
    • Use fixed USD rate (1) for stablecoins on Polygon USDCe and Arbitrum USDC; expose new chain/token constants.
  • Totals/Quotes
    • Totals aggregate new Amount shapes (source fees estimate/max, sourceAmount) and set isTargetGasFeeToken.
    • Transaction metadata networkFeeFiat uses fees.sourceNetwork.estimate.usd.
  • Misc
    • Centralize chain/token constants; adjust tests accordingly.

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

@matthewwalsh0 matthewwalsh0 marked this pull request as ready for review November 16, 2025 20:28
@matthewwalsh0 matthewwalsh0 requested review from a team as code owners November 16, 2025 20:28
@matthewwalsh0
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": "3.0.0-preview-8d5916c4",
  "@metamask-previews/accounts-controller": "34.0.0-preview-8d5916c4",
  "@metamask-previews/address-book-controller": "7.0.0-preview-8d5916c4",
  "@metamask-previews/analytics-controller": "0.0.0-preview-8d5916c4",
  "@metamask-previews/announcement-controller": "8.0.0-preview-8d5916c4",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-8d5916c4",
  "@metamask-previews/approval-controller": "8.0.0-preview-8d5916c4",
  "@metamask-previews/assets-controllers": "88.0.0-preview-8d5916c4",
  "@metamask-previews/base-controller": "9.0.0-preview-8d5916c4",
  "@metamask-previews/bridge-controller": "60.1.0-preview-8d5916c4",
  "@metamask-previews/bridge-status-controller": "60.1.0-preview-8d5916c4",
  "@metamask-previews/build-utils": "3.0.4-preview-8d5916c4",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-8d5916c4",
  "@metamask-previews/claims-controller": "0.2.0-preview-8d5916c4",
  "@metamask-previews/composable-controller": "12.0.0-preview-8d5916c4",
  "@metamask-previews/controller-utils": "11.15.0-preview-8d5916c4",
  "@metamask-previews/core-backend": "4.0.0-preview-8d5916c4",
  "@metamask-previews/delegation-controller": "1.0.0-preview-8d5916c4",
  "@metamask-previews/earn-controller": "10.0.0-preview-8d5916c4",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-8d5916c4",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-8d5916c4",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-8d5916c4",
  "@metamask-previews/ens-controller": "18.0.0-preview-8d5916c4",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-8d5916c4",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-8d5916c4",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-8d5916c4",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-8d5916c4",
  "@metamask-previews/foundryup": "1.0.1-preview-8d5916c4",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-8d5916c4",
  "@metamask-previews/gator-permissions-controller": "0.4.0-preview-8d5916c4",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-8d5916c4",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-8d5916c4",
  "@metamask-previews/keyring-controller": "24.0.0-preview-8d5916c4",
  "@metamask-previews/logging-controller": "7.0.0-preview-8d5916c4",
  "@metamask-previews/message-manager": "14.0.0-preview-8d5916c4",
  "@metamask-previews/messenger": "0.3.0-preview-8d5916c4",
  "@metamask-previews/multichain-account-service": "3.0.0-preview-8d5916c4",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-8d5916c4",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-8d5916c4",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-8d5916c4",
  "@metamask-previews/name-controller": "9.0.0-preview-8d5916c4",
  "@metamask-previews/network-controller": "25.0.0-preview-8d5916c4",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-8d5916c4",
  "@metamask-previews/notification-services-controller": "20.0.0-preview-8d5916c4",
  "@metamask-previews/permission-controller": "12.1.0-preview-8d5916c4",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-8d5916c4",
  "@metamask-previews/phishing-controller": "15.0.0-preview-8d5916c4",
  "@metamask-previews/polling-controller": "15.0.0-preview-8d5916c4",
  "@metamask-previews/preferences-controller": "21.0.0-preview-8d5916c4",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-8d5916c4",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-8d5916c4",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-8d5916c4",
  "@metamask-previews/sample-controllers": "3.0.0-preview-8d5916c4",
  "@metamask-previews/seedless-onboarding-controller": "6.1.0-preview-8d5916c4",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-8d5916c4",
  "@metamask-previews/shield-controller": "2.1.0-preview-8d5916c4",
  "@metamask-previews/signature-controller": "36.0.0-preview-8d5916c4",
  "@metamask-previews/subscription-controller": "4.2.2-preview-8d5916c4",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-8d5916c4",
  "@metamask-previews/transaction-controller": "61.3.0-preview-8d5916c4",
  "@metamask-previews/transaction-pay-controller": "6.0.0-preview-8d5916c4",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-8d5916c4"
}

@matthewwalsh0 matthewwalsh0 enabled auto-merge (squash) November 17, 2025 10:26
@matthewwalsh0 matthewwalsh0 force-pushed the feat/quote-source-amounts branch from 8d5916c to 8e804fb Compare November 17, 2025 10:26
@matthewwalsh0 matthewwalsh0 merged commit 0d94a87 into main Nov 17, 2025
272 checks passed
@matthewwalsh0 matthewwalsh0 deleted the feat/quote-source-amounts branch November 17, 2025 10:30
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.

3 participants