@metamask-previews/bridge-status-controller 67.0.1-preview-685dbf46b → 68.0.0-preview-bc00f2c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +10 -2
  2. package/dist/bridge-status-controller.cjs +26 -21
  3. package/dist/bridge-status-controller.cjs.map +1 -1
  4. package/dist/bridge-status-controller.d.cts +4 -6
  5. package/dist/bridge-status-controller.d.cts.map +1 -1
  6. package/dist/bridge-status-controller.d.mts +4 -6
  7. package/dist/bridge-status-controller.d.mts.map +1 -1
  8. package/dist/bridge-status-controller.intent.cjs +80 -18
  9. package/dist/bridge-status-controller.intent.cjs.map +1 -1
  10. package/dist/bridge-status-controller.intent.d.cts +38 -5
  11. package/dist/bridge-status-controller.intent.d.cts.map +1 -1
  12. package/dist/bridge-status-controller.intent.d.mts +38 -5
  13. package/dist/bridge-status-controller.intent.d.mts.map +1 -1
  14. package/dist/bridge-status-controller.intent.mjs +78 -16
  15. package/dist/bridge-status-controller.intent.mjs.map +1 -1
  16. package/dist/bridge-status-controller.mjs +28 -23
  17. package/dist/bridge-status-controller.mjs.map +1 -1
  18. package/dist/types.cjs.map +1 -1
  19. package/dist/types.d.cts +2 -1
  20. package/dist/types.d.cts.map +1 -1
  21. package/dist/types.d.mts +2 -1
  22. package/dist/types.d.mts.map +1 -1
  23. package/dist/types.mjs.map +1 -1
  24. package/dist/utils/intent-api.cjs +10 -6
  25. package/dist/utils/intent-api.cjs.map +1 -1
  26. package/dist/utils/intent-api.d.cts +8 -7
  27. package/dist/utils/intent-api.d.cts.map +1 -1
  28. package/dist/utils/intent-api.d.mts +8 -7
  29. package/dist/utils/intent-api.d.mts.map +1 -1
  30. package/dist/utils/intent-api.mjs +10 -6
  31. package/dist/utils/intent-api.mjs.map +1 -1
  32. package/dist/utils/transaction.d.cts +9 -1
  33. package/dist/utils/transaction.d.cts.map +1 -1
  34. package/dist/utils/transaction.d.mts +9 -1
  35. package/dist/utils/transaction.d.mts.map +1 -1
  36. package/package.json +4 -3
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Changed
11
+
12
+ - Bump `@metamask/transaction-controller` from `^62.19.0` to `^62.20.0` ([#8104](https://github.com/MetaMask/core/pull/8104))
13
+
14
+ ## [68.0.0]
15
+
10
16
  ### Added
11
17
 
12
18
  - Added optional `abTests` property to `BridgeHistoryItem` to persist A/B test context across the transaction lifecycle ([#8007](https://github.com/MetaMask/core/pull/8007))
@@ -16,8 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
22
 
17
23
  ### Changed
18
24
 
19
- - Bump `@metamask/bridge-controller` from `^67.1.1` to `^67.4.0` ([#8024](https://github.com/MetaMask/core/pull/8024), [#8051](https://github.com/MetaMask/core/pull/8051), [#8070](https://github.com/MetaMask/core/pull/8070))
25
+ - Bump `@metamask/bridge-controller` from `^67.1.1` to `^68.0.0` ([#8024](https://github.com/MetaMask/core/pull/8024), [#8051](https://github.com/MetaMask/core/pull/8051), [#8070](https://github.com/MetaMask/core/pull/8070), [#8101](https://github.com/MetaMask/core/pull/8101))
20
26
  - Bump `@metamask/transaction-controller` from `^62.17.1` to `^62.19.0` ([#8005](https://github.com/MetaMask/core/pull/8005), [#8031](https://github.com/MetaMask/core/pull/8031))
27
+ - **BREAKING:** Move intent signing and submission orchestration into `BridgeStatusController`, including internal EIP-712 signing via `KeyringController` and the new `IntentManager` flow. ([#8048](https://github.com/MetaMask/core/pull/8048))
21
28
 
22
29
  ## [67.0.1]
23
30
 
@@ -992,7 +999,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
992
999
 
993
1000
  - Initial release ([#5317](https://github.com/MetaMask/core/pull/5317))
994
1001
 
995
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@67.0.1...HEAD
1002
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@68.0.0...HEAD
1003
+ [68.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@67.0.1...@metamask/bridge-status-controller@68.0.0
996
1004
  [67.0.1]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@67.0.0...@metamask/bridge-status-controller@67.0.1
997
1005
  [67.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@66.1.0...@metamask/bridge-status-controller@67.0.0
998
1006
  [66.1.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@66.0.2...@metamask/bridge-status-controller@66.1.0
@@ -10,11 +10,12 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _BridgeStatusController_instances, _BridgeStatusController_pollingTokensByTxMetaId, _BridgeStatusController_intentStatusManager, _BridgeStatusController_clientId, _BridgeStatusController_fetchFn, _BridgeStatusController_config, _BridgeStatusController_addTransactionFn, _BridgeStatusController_addTransactionBatchFn, _BridgeStatusController_updateTransactionFn, _BridgeStatusController_estimateGasFeeFn, _BridgeStatusController_trace, _BridgeStatusController_markTxAsFailed, _BridgeStatusController_restartPollingForIncompleteHistoryItems, _BridgeStatusController_addTxToHistory, _BridgeStatusController_rekeyHistoryItem, _BridgeStatusController_startPollingForTxId, _BridgeStatusController_shouldPollHistoryItem, _BridgeStatusController_getMultichainSelectedAccount, _BridgeStatusController_handleFetchFailure, _BridgeStatusController_fetchBridgeTxStatus, _BridgeStatusController_getJwt, _BridgeStatusController_getSrcTxHash, _BridgeStatusController_updateSrcTxHash, _BridgeStatusController_wipeBridgeStatusByChainId, _BridgeStatusController_handleNonEvmTx, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, _BridgeStatusController_waitForTxConfirmation, _BridgeStatusController_handleApprovalTx, _BridgeStatusController_handleEvmTransaction, _BridgeStatusController_handleUSDTAllowanceReset, _BridgeStatusController_calculateGasFees, _BridgeStatusController_handleEvmTransactionBatch, _BridgeStatusController_trackUnifiedSwapBridgeEvent;
13
+ var _BridgeStatusController_instances, _BridgeStatusController_pollingTokensByTxMetaId, _BridgeStatusController_intentManager, _BridgeStatusController_clientId, _BridgeStatusController_fetchFn, _BridgeStatusController_config, _BridgeStatusController_addTransactionFn, _BridgeStatusController_addTransactionBatchFn, _BridgeStatusController_updateTransactionFn, _BridgeStatusController_estimateGasFeeFn, _BridgeStatusController_trace, _BridgeStatusController_markTxAsFailed, _BridgeStatusController_restartPollingForIncompleteHistoryItems, _BridgeStatusController_addTxToHistory, _BridgeStatusController_rekeyHistoryItem, _BridgeStatusController_startPollingForTxId, _BridgeStatusController_shouldPollHistoryItem, _BridgeStatusController_getMultichainSelectedAccount, _BridgeStatusController_handleFetchFailure, _BridgeStatusController_fetchBridgeTxStatus, _BridgeStatusController_getJwt, _BridgeStatusController_getSrcTxHash, _BridgeStatusController_updateSrcTxHash, _BridgeStatusController_wipeBridgeStatusByChainId, _BridgeStatusController_handleNonEvmTx, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, _BridgeStatusController_waitForTxConfirmation, _BridgeStatusController_handleApprovalTx, _BridgeStatusController_handleEvmTransaction, _BridgeStatusController_handleUSDTAllowanceReset, _BridgeStatusController_calculateGasFees, _BridgeStatusController_handleEvmTransactionBatch, _BridgeStatusController_trackUnifiedSwapBridgeEvent;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.BridgeStatusController = void 0;
16
16
  const bridge_controller_1 = require("@metamask/bridge-controller");
17
17
  const controller_utils_1 = require("@metamask/controller-utils");
18
+ const keyring_controller_1 = require("@metamask/keyring-controller");
18
19
  const polling_controller_1 = require("@metamask/polling-controller");
19
20
  const transaction_controller_1 = require("@metamask/transaction-controller");
20
21
  const utils_1 = require("@metamask/utils");
@@ -50,7 +51,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
50
51
  });
51
52
  _BridgeStatusController_instances.add(this);
52
53
  _BridgeStatusController_pollingTokensByTxMetaId.set(this, {});
53
- _BridgeStatusController_intentStatusManager.set(this, void 0);
54
+ _BridgeStatusController_intentManager.set(this, void 0);
54
55
  _BridgeStatusController_clientId.set(this, void 0);
55
56
  _BridgeStatusController_fetchFn.set(this, void 0);
56
57
  _BridgeStatusController_config.set(this, void 0);
@@ -380,16 +381,14 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
380
381
  try {
381
382
  let status;
382
383
  let validationFailures = [];
383
- let intentTranslation = null;
384
- let intentOrderStatus;
385
384
  const isIntent = Boolean(historyItem.quote.intent);
386
385
  if (isIntent) {
387
- const { srcChainId } = historyItem.quote;
388
- const intentApi = new intent_api_1.IntentApiImpl(__classPrivateFieldGet(this, _BridgeStatusController_config, "f").customBridgeApiBaseUrl, __classPrivateFieldGet(this, _BridgeStatusController_fetchFn, "f"));
389
- const intentOrder = await intentApi.getOrderStatus(bridgeTxMetaId, historyItem.quote.intent?.protocol ?? '', srcChainId.toString(), __classPrivateFieldGet(this, _BridgeStatusController_clientId, "f"), await __classPrivateFieldGet(this, _BridgeStatusController_getJwt, "f").call(this));
390
- intentOrderStatus = intentOrder.status;
391
- intentTranslation = (0, intent_api_1.translateIntentOrderToBridgeStatus)(intentOrder, srcChainId, historyItem.status.srcChain.txHash);
392
- status = intentTranslation.status;
386
+ const intentTxStatus = await __classPrivateFieldGet(this, _BridgeStatusController_intentManager, "f").getIntentTransactionStatus(bridgeTxMetaId, historyItem, __classPrivateFieldGet(this, _BridgeStatusController_clientId, "f"));
387
+ if (intentTxStatus?.bridgeStatus === null ||
388
+ intentTxStatus?.bridgeStatus === undefined) {
389
+ return;
390
+ }
391
+ status = intentTxStatus.bridgeStatus.status;
393
392
  }
394
393
  else {
395
394
  // We try here because we receive 500 errors from Bridge API if we try to fetch immediately after submitting the source tx
@@ -429,8 +428,8 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
429
428
  this.update((state) => {
430
429
  state.txHistory[bridgeTxMetaId] = newBridgeHistoryItem;
431
430
  });
432
- if (isIntent && intentTranslation && intentOrderStatus) {
433
- __classPrivateFieldGet(this, _BridgeStatusController_intentStatusManager, "f").syncTransactionFromIntentStatus(bridgeTxMetaId, historyItem, intentTranslation, intentOrderStatus);
431
+ if (isIntent) {
432
+ __classPrivateFieldGet(this, _BridgeStatusController_intentManager, "f").syncTransactionFromIntentStatus(bridgeTxMetaId, historyItem);
434
433
  }
435
434
  // 5. After effects
436
435
  const pollingToken = __classPrivateFieldGet(this, _BridgeStatusController_pollingTokensByTxMetaId, "f")[bridgeTxMetaId];
@@ -909,19 +908,18 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
909
908
  return txMeta;
910
909
  };
911
910
  /**
912
- * UI-signed intent submission (fast path): the UI generates the EIP-712 signature and calls this with the raw signature.
913
- * Here we submit the order to the intent provider and create a synthetic history entry for UX.
911
+ * Submits an intent order and creates a synthetic history entry for UX.
912
+ * The EIP-712 payload is always signed inside this controller via KeyringController.
914
913
  *
915
914
  * @param params - Object containing intent submission parameters
916
915
  * @param params.quoteResponse - Quote carrying intent data
917
- * @param params.signature - Hex signature produced by eth_signTypedData_v4
918
916
  * @param params.accountAddress - The EOA submitting the order
919
917
  * @param params.location - The entry point from which the user initiated the swap or bridge
920
918
  * @param params.abTests - A/B test context to attribute events to specific experiments
921
919
  * @returns A lightweight TransactionMeta-like object for history linking
922
920
  */
923
921
  this.submitIntent = async (params) => {
924
- const { quoteResponse, signature, accountAddress, location, abTests } = params;
922
+ const { quoteResponse, accountAddress, location, abTests } = params;
925
923
  this.messenger.call('BridgeController:stopPollingForQuotes', bridge_controller_1.AbortReason.TransactionSubmitted);
926
924
  // Build pre-confirmation properties for error tracking parity with submitTx
927
925
  const account = __classPrivateFieldGet(this, _BridgeStatusController_instances, "m", _BridgeStatusController_getMultichainSelectedAccount).call(this, accountAddress);
@@ -945,6 +943,10 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
945
943
  }
946
944
  }
947
945
  const { srcChainId: chainId, requestId } = quoteResponse.quote;
946
+ const signature = await this.messenger.call('KeyringController:signTypedMessage', {
947
+ from: accountAddress,
948
+ data: intent.typedData,
949
+ }, keyring_controller_1.SignTypedDataVersion.V4);
948
950
  const submissionParams = {
949
951
  srcChainId: chainId.toString(),
950
952
  quoteId: requestId,
@@ -953,8 +955,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
953
955
  userAddress: accountAddress,
954
956
  aggregatorId: intent.protocol,
955
957
  };
956
- const intentApi = new intent_api_1.IntentApiImpl(__classPrivateFieldGet(this, _BridgeStatusController_config, "f").customBridgeApiBaseUrl, __classPrivateFieldGet(this, _BridgeStatusController_fetchFn, "f"));
957
- const intentOrder = await intentApi.submitIntent(submissionParams, __classPrivateFieldGet(this, _BridgeStatusController_clientId, "f"), await __classPrivateFieldGet(this, _BridgeStatusController_getJwt, "f").call(this));
958
+ const intentOrder = await __classPrivateFieldGet(this, _BridgeStatusController_intentManager, "f").submitIntent(submissionParams, __classPrivateFieldGet(this, _BridgeStatusController_clientId, "f"));
958
959
  const orderUid = intentOrder.id;
959
960
  // Determine transaction type: swap for same-chain, bridge for cross-chain
960
961
  const isCrossChainTx = (0, bridge_controller_1.isCrossChain)(quoteResponse.quote.srcChainId, quoteResponse.quote.destChainId);
@@ -1049,10 +1050,11 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
1049
1050
  * @param eventProperties - The properties for the event
1050
1051
  */
1051
1052
  _BridgeStatusController_trackUnifiedSwapBridgeEvent.set(this, (eventName, txMetaId, eventProperties) => {
1053
+ const { ab_tests: eventAbTests } = eventProperties ?? {};
1052
1054
  const historyAbTests = txMetaId
1053
1055
  ? this.state.txHistory?.[txMetaId]?.abTests
1054
1056
  : undefined;
1055
- const resolvedAbTests = eventProperties?.ab_tests ?? historyAbTests ?? undefined;
1057
+ const resolvedAbTests = eventAbTests ?? historyAbTests ?? undefined;
1056
1058
  const baseProperties = {
1057
1059
  action_type: bridge_controller_1.MetricsActionType.SWAPBRIDGE_V1,
1058
1060
  location: eventProperties?.location ??
@@ -1116,9 +1118,12 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
1116
1118
  customBridgeApiBaseUrl: config?.customBridgeApiBaseUrl ?? constants_1.BRIDGE_PROD_API_BASE_URL,
1117
1119
  }, "f");
1118
1120
  __classPrivateFieldSet(this, _BridgeStatusController_trace, traceFn ?? ((_request, fn) => fn?.()), "f");
1119
- __classPrivateFieldSet(this, _BridgeStatusController_intentStatusManager, new bridge_status_controller_intent_1.IntentStatusManager({
1121
+ __classPrivateFieldSet(this, _BridgeStatusController_intentManager, new bridge_status_controller_intent_1.IntentManager({
1120
1122
  messenger: this.messenger,
1121
1123
  updateTransactionFn: __classPrivateFieldGet(this, _BridgeStatusController_updateTransactionFn, "f"),
1124
+ customBridgeApiBaseUrl: __classPrivateFieldGet(this, _BridgeStatusController_config, "f").customBridgeApiBaseUrl,
1125
+ fetchFn: __classPrivateFieldGet(this, _BridgeStatusController_fetchFn, "f"),
1126
+ getJwt: __classPrivateFieldGet(this, _BridgeStatusController_getJwt, "f"),
1122
1127
  }), "f");
1123
1128
  // Register action handlers
1124
1129
  this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:startPollingForBridgeTxStatus`, this.startPollingForBridgeTxStatus.bind(this));
@@ -1176,7 +1181,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
1176
1181
  }
1177
1182
  }
1178
1183
  exports.BridgeStatusController = BridgeStatusController;
1179
- _BridgeStatusController_pollingTokensByTxMetaId = new WeakMap(), _BridgeStatusController_intentStatusManager = new WeakMap(), _BridgeStatusController_clientId = new WeakMap(), _BridgeStatusController_fetchFn = new WeakMap(), _BridgeStatusController_config = new WeakMap(), _BridgeStatusController_addTransactionFn = new WeakMap(), _BridgeStatusController_addTransactionBatchFn = new WeakMap(), _BridgeStatusController_updateTransactionFn = new WeakMap(), _BridgeStatusController_estimateGasFeeFn = new WeakMap(), _BridgeStatusController_trace = new WeakMap(), _BridgeStatusController_markTxAsFailed = new WeakMap(), _BridgeStatusController_restartPollingForIncompleteHistoryItems = new WeakMap(), _BridgeStatusController_addTxToHistory = new WeakMap(), _BridgeStatusController_rekeyHistoryItem = new WeakMap(), _BridgeStatusController_startPollingForTxId = new WeakMap(), _BridgeStatusController_shouldPollHistoryItem = new WeakMap(), _BridgeStatusController_handleFetchFailure = new WeakMap(), _BridgeStatusController_fetchBridgeTxStatus = new WeakMap(), _BridgeStatusController_getJwt = new WeakMap(), _BridgeStatusController_getSrcTxHash = new WeakMap(), _BridgeStatusController_updateSrcTxHash = new WeakMap(), _BridgeStatusController_wipeBridgeStatusByChainId = new WeakMap(), _BridgeStatusController_handleNonEvmTx = new WeakMap(), _BridgeStatusController_waitForHashAndReturnFinalTxMeta = new WeakMap(), _BridgeStatusController_waitForTxConfirmation = new WeakMap(), _BridgeStatusController_handleApprovalTx = new WeakMap(), _BridgeStatusController_handleEvmTransaction = new WeakMap(), _BridgeStatusController_handleUSDTAllowanceReset = new WeakMap(), _BridgeStatusController_calculateGasFees = new WeakMap(), _BridgeStatusController_handleEvmTransactionBatch = new WeakMap(), _BridgeStatusController_trackUnifiedSwapBridgeEvent = new WeakMap(), _BridgeStatusController_instances = new WeakSet(), _BridgeStatusController_getMultichainSelectedAccount = function _BridgeStatusController_getMultichainSelectedAccount(accountAddress) {
1184
+ _BridgeStatusController_pollingTokensByTxMetaId = new WeakMap(), _BridgeStatusController_intentManager = new WeakMap(), _BridgeStatusController_clientId = new WeakMap(), _BridgeStatusController_fetchFn = new WeakMap(), _BridgeStatusController_config = new WeakMap(), _BridgeStatusController_addTransactionFn = new WeakMap(), _BridgeStatusController_addTransactionBatchFn = new WeakMap(), _BridgeStatusController_updateTransactionFn = new WeakMap(), _BridgeStatusController_estimateGasFeeFn = new WeakMap(), _BridgeStatusController_trace = new WeakMap(), _BridgeStatusController_markTxAsFailed = new WeakMap(), _BridgeStatusController_restartPollingForIncompleteHistoryItems = new WeakMap(), _BridgeStatusController_addTxToHistory = new WeakMap(), _BridgeStatusController_rekeyHistoryItem = new WeakMap(), _BridgeStatusController_startPollingForTxId = new WeakMap(), _BridgeStatusController_shouldPollHistoryItem = new WeakMap(), _BridgeStatusController_handleFetchFailure = new WeakMap(), _BridgeStatusController_fetchBridgeTxStatus = new WeakMap(), _BridgeStatusController_getJwt = new WeakMap(), _BridgeStatusController_getSrcTxHash = new WeakMap(), _BridgeStatusController_updateSrcTxHash = new WeakMap(), _BridgeStatusController_wipeBridgeStatusByChainId = new WeakMap(), _BridgeStatusController_handleNonEvmTx = new WeakMap(), _BridgeStatusController_waitForHashAndReturnFinalTxMeta = new WeakMap(), _BridgeStatusController_waitForTxConfirmation = new WeakMap(), _BridgeStatusController_handleApprovalTx = new WeakMap(), _BridgeStatusController_handleEvmTransaction = new WeakMap(), _BridgeStatusController_handleUSDTAllowanceReset = new WeakMap(), _BridgeStatusController_calculateGasFees = new WeakMap(), _BridgeStatusController_handleEvmTransactionBatch = new WeakMap(), _BridgeStatusController_trackUnifiedSwapBridgeEvent = new WeakMap(), _BridgeStatusController_instances = new WeakSet(), _BridgeStatusController_getMultichainSelectedAccount = function _BridgeStatusController_getMultichainSelectedAccount(accountAddress) {
1180
1185
  return this.messenger.call('AccountsController:getAccountByAddress', accountAddress);
1181
1186
  };
1182
1187
  //# sourceMappingURL=bridge-status-controller.cjs.map