@metamask-previews/bridge-status-controller 67.0.1-preview-0aca970c8 → 67.0.1-preview-b2b2c8f6a

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 +0 -1
  2. package/dist/bridge-status-controller.cjs +21 -26
  3. package/dist/bridge-status-controller.cjs.map +1 -1
  4. package/dist/bridge-status-controller.d.cts +6 -4
  5. package/dist/bridge-status-controller.d.cts.map +1 -1
  6. package/dist/bridge-status-controller.d.mts +6 -4
  7. package/dist/bridge-status-controller.d.mts.map +1 -1
  8. package/dist/bridge-status-controller.intent.cjs +18 -78
  9. package/dist/bridge-status-controller.intent.cjs.map +1 -1
  10. package/dist/bridge-status-controller.intent.d.cts +5 -38
  11. package/dist/bridge-status-controller.intent.d.cts.map +1 -1
  12. package/dist/bridge-status-controller.intent.d.mts +5 -38
  13. package/dist/bridge-status-controller.intent.d.mts.map +1 -1
  14. package/dist/bridge-status-controller.intent.mjs +16 -76
  15. package/dist/bridge-status-controller.intent.mjs.map +1 -1
  16. package/dist/bridge-status-controller.mjs +23 -28
  17. package/dist/bridge-status-controller.mjs.map +1 -1
  18. package/dist/types.cjs.map +1 -1
  19. package/dist/types.d.cts +1 -2
  20. package/dist/types.d.cts.map +1 -1
  21. package/dist/types.d.mts +1 -2
  22. package/dist/types.d.mts.map +1 -1
  23. package/dist/types.mjs.map +1 -1
  24. package/dist/utils/intent-api.cjs +6 -10
  25. package/dist/utils/intent-api.cjs.map +1 -1
  26. package/dist/utils/intent-api.d.cts +7 -8
  27. package/dist/utils/intent-api.d.cts.map +1 -1
  28. package/dist/utils/intent-api.d.mts +7 -8
  29. package/dist/utils/intent-api.d.mts.map +1 -1
  30. package/dist/utils/intent-api.mjs +6 -10
  31. package/dist/utils/intent-api.mjs.map +1 -1
  32. package/dist/utils/transaction.d.cts +1 -9
  33. package/dist/utils/transaction.d.cts.map +1 -1
  34. package/dist/utils/transaction.d.mts +1 -9
  35. package/dist/utils/transaction.d.mts.map +1 -1
  36. package/package.json +1 -2
package/CHANGELOG.md CHANGED
@@ -18,7 +18,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
18
18
 
19
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))
20
20
  - 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))
21
- - **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))
22
21
 
23
22
  ## [67.0.1]
24
23
 
@@ -10,12 +10,11 @@ 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_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;
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;
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");
19
18
  const polling_controller_1 = require("@metamask/polling-controller");
20
19
  const transaction_controller_1 = require("@metamask/transaction-controller");
21
20
  const utils_1 = require("@metamask/utils");
@@ -51,7 +50,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
51
50
  });
52
51
  _BridgeStatusController_instances.add(this);
53
52
  _BridgeStatusController_pollingTokensByTxMetaId.set(this, {});
54
- _BridgeStatusController_intentManager.set(this, void 0);
53
+ _BridgeStatusController_intentStatusManager.set(this, void 0);
55
54
  _BridgeStatusController_clientId.set(this, void 0);
56
55
  _BridgeStatusController_fetchFn.set(this, void 0);
57
56
  _BridgeStatusController_config.set(this, void 0);
@@ -381,14 +380,16 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
381
380
  try {
382
381
  let status;
383
382
  let validationFailures = [];
383
+ let intentTranslation = null;
384
+ let intentOrderStatus;
384
385
  const isIntent = Boolean(historyItem.quote.intent);
385
386
  if (isIntent) {
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
- throw new Error('Intent transaction status not found');
390
- }
391
- status = intentTxStatus.bridgeStatus.status;
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;
392
393
  }
393
394
  else {
394
395
  // We try here because we receive 500 errors from Bridge API if we try to fetch immediately after submitting the source tx
@@ -428,8 +429,8 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
428
429
  this.update((state) => {
429
430
  state.txHistory[bridgeTxMetaId] = newBridgeHistoryItem;
430
431
  });
431
- if (isIntent) {
432
- __classPrivateFieldGet(this, _BridgeStatusController_intentManager, "f").syncTransactionFromIntentStatus(bridgeTxMetaId, historyItem);
432
+ if (isIntent && intentTranslation && intentOrderStatus) {
433
+ __classPrivateFieldGet(this, _BridgeStatusController_intentStatusManager, "f").syncTransactionFromIntentStatus(bridgeTxMetaId, historyItem, intentTranslation, intentOrderStatus);
433
434
  }
434
435
  // 5. After effects
435
436
  const pollingToken = __classPrivateFieldGet(this, _BridgeStatusController_pollingTokensByTxMetaId, "f")[bridgeTxMetaId];
@@ -908,18 +909,19 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
908
909
  return txMeta;
909
910
  };
910
911
  /**
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.
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.
913
914
  *
914
915
  * @param params - Object containing intent submission parameters
915
916
  * @param params.quoteResponse - Quote carrying intent data
917
+ * @param params.signature - Hex signature produced by eth_signTypedData_v4
916
918
  * @param params.accountAddress - The EOA submitting the order
917
919
  * @param params.location - The entry point from which the user initiated the swap or bridge
918
920
  * @param params.abTests - A/B test context to attribute events to specific experiments
919
921
  * @returns A lightweight TransactionMeta-like object for history linking
920
922
  */
921
923
  this.submitIntent = async (params) => {
922
- const { quoteResponse, accountAddress, location, abTests } = params;
924
+ const { quoteResponse, signature, accountAddress, location, abTests } = params;
923
925
  this.messenger.call('BridgeController:stopPollingForQuotes', bridge_controller_1.AbortReason.TransactionSubmitted);
924
926
  // Build pre-confirmation properties for error tracking parity with submitTx
925
927
  const account = __classPrivateFieldGet(this, _BridgeStatusController_instances, "m", _BridgeStatusController_getMultichainSelectedAccount).call(this, accountAddress);
@@ -943,10 +945,6 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
943
945
  }
944
946
  }
945
947
  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);
950
948
  const submissionParams = {
951
949
  srcChainId: chainId.toString(),
952
950
  quoteId: requestId,
@@ -955,7 +953,8 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
955
953
  userAddress: accountAddress,
956
954
  aggregatorId: intent.protocol,
957
955
  };
958
- const intentOrder = await __classPrivateFieldGet(this, _BridgeStatusController_intentManager, "f").submitIntent(submissionParams, __classPrivateFieldGet(this, _BridgeStatusController_clientId, "f"));
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));
959
958
  const orderUid = intentOrder.id;
960
959
  // Determine transaction type: swap for same-chain, bridge for cross-chain
961
960
  const isCrossChainTx = (0, bridge_controller_1.isCrossChain)(quoteResponse.quote.srcChainId, quoteResponse.quote.destChainId);
@@ -1050,11 +1049,10 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
1050
1049
  * @param eventProperties - The properties for the event
1051
1050
  */
1052
1051
  _BridgeStatusController_trackUnifiedSwapBridgeEvent.set(this, (eventName, txMetaId, eventProperties) => {
1053
- const { ab_tests: eventAbTests } = eventProperties ?? {};
1054
1052
  const historyAbTests = txMetaId
1055
1053
  ? this.state.txHistory?.[txMetaId]?.abTests
1056
1054
  : undefined;
1057
- const resolvedAbTests = eventAbTests ?? historyAbTests ?? undefined;
1055
+ const resolvedAbTests = eventProperties?.ab_tests ?? historyAbTests ?? undefined;
1058
1056
  const baseProperties = {
1059
1057
  action_type: bridge_controller_1.MetricsActionType.SWAPBRIDGE_V1,
1060
1058
  location: eventProperties?.location ??
@@ -1118,12 +1116,9 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
1118
1116
  customBridgeApiBaseUrl: config?.customBridgeApiBaseUrl ?? constants_1.BRIDGE_PROD_API_BASE_URL,
1119
1117
  }, "f");
1120
1118
  __classPrivateFieldSet(this, _BridgeStatusController_trace, traceFn ?? ((_request, fn) => fn?.()), "f");
1121
- __classPrivateFieldSet(this, _BridgeStatusController_intentManager, new bridge_status_controller_intent_1.IntentManager({
1119
+ __classPrivateFieldSet(this, _BridgeStatusController_intentStatusManager, new bridge_status_controller_intent_1.IntentStatusManager({
1122
1120
  messenger: this.messenger,
1123
1121
  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"),
1127
1122
  }), "f");
1128
1123
  // Register action handlers
1129
1124
  this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:startPollingForBridgeTxStatus`, this.startPollingForBridgeTxStatus.bind(this));
@@ -1181,7 +1176,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
1181
1176
  }
1182
1177
  }
1183
1178
  exports.BridgeStatusController = BridgeStatusController;
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) {
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) {
1185
1180
  return this.messenger.call('AccountsController:getAccountByAddress', accountAddress);
1186
1181
  };
1187
1182
  //# sourceMappingURL=bridge-status-controller.cjs.map