@metamask-previews/bridge-status-controller 75.4.0-preview-00a181c → 75.4.0-preview-a302de5c3

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.
package/CHANGELOG.md CHANGED
@@ -7,13 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Added
11
-
12
- - Add SwapBridge submit and status failure telemetry classifiers for a later emit ([#9947](https://github.com/MetaMask/core/pull/9947))
13
- - New exports: `getHashPresenceProperties`, `getStatusFailurePhase`, `getSubmitErrorCode`, `getSubmitFailureTelemetry`, and `getStatusFailureTelemetry`
14
- - Return types `HashPresenceProperties` and `FailureTelemetryProperties` come from `@metamask/bridge-controller`
15
- - Classifies submit and status failures from the code path (not from `error_message`)
16
-
17
10
  ### Changed
18
11
 
19
12
  - Bump `@metamask/bridge-controller` from `^80.1.0` to `^80.1.1` ([#10035](https://github.com/MetaMask/core/pull/10035))
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSubmitFailureTelemetry = exports.getSubmitErrorCode = exports.getStatusFailureTelemetry = exports.getStatusFailurePhase = exports.getHashPresenceProperties = exports.isBatchSellHistoryItem = exports.getBatchSellHistoryItemsForTxHash = exports.BridgeStatusController = exports.BridgeStatusAction = exports.BridgeId = exports.MAX_ATTEMPTS = exports.BRIDGE_STATUS_CONTROLLER_NAME = exports.DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE = exports.REFRESH_INTERVAL_MS = exports.BaseQuoteStatusUpdateErrorTypes = exports.QuoteStatusGetError = exports.QuoteStatusUpdateError = void 0;
3
+ exports.isBatchSellHistoryItem = exports.getBatchSellHistoryItemsForTxHash = exports.BridgeStatusController = exports.BridgeStatusAction = exports.BridgeId = exports.MAX_ATTEMPTS = exports.BRIDGE_STATUS_CONTROLLER_NAME = exports.DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE = exports.REFRESH_INTERVAL_MS = exports.BaseQuoteStatusUpdateErrorTypes = exports.QuoteStatusGetError = exports.QuoteStatusUpdateError = void 0;
4
4
  // Export custom error classes
5
5
  var errors_js_1 = require("./quote-status-manager/errors.cjs");
6
6
  Object.defineProperty(exports, "QuoteStatusUpdateError", { enumerable: true, get: function () { return errors_js_1.QuoteStatusUpdateError; } });
@@ -21,10 +21,4 @@ Object.defineProperty(exports, "BridgeStatusController", { enumerable: true, get
21
21
  var history_js_1 = require("./utils/history.cjs");
22
22
  Object.defineProperty(exports, "getBatchSellHistoryItemsForTxHash", { enumerable: true, get: function () { return history_js_1.getBatchSellHistoryItemsForTxHash; } });
23
23
  Object.defineProperty(exports, "isBatchSellHistoryItem", { enumerable: true, get: function () { return history_js_1.isBatchSellHistoryItem; } });
24
- var metrics_js_1 = require("./utils/metrics.cjs");
25
- Object.defineProperty(exports, "getHashPresenceProperties", { enumerable: true, get: function () { return metrics_js_1.getHashPresenceProperties; } });
26
- Object.defineProperty(exports, "getStatusFailurePhase", { enumerable: true, get: function () { return metrics_js_1.getStatusFailurePhase; } });
27
- Object.defineProperty(exports, "getStatusFailureTelemetry", { enumerable: true, get: function () { return metrics_js_1.getStatusFailureTelemetry; } });
28
- Object.defineProperty(exports, "getSubmitErrorCode", { enumerable: true, get: function () { return metrics_js_1.getSubmitErrorCode; } });
29
- Object.defineProperty(exports, "getSubmitFailureTelemetry", { enumerable: true, get: function () { return metrics_js_1.getSubmitFailureTelemetry; } });
30
24
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,+DAG0C;AAFxC,mHAAA,sBAAsB,OAAA;AACtB,gHAAA,mBAAmB,OAAA;AAErB,qEAAsF;AAA7E,+HAAA,+BAA+B,OAAA;AAExC,mBAAmB;AACnB,gDAKwB;AAJtB,mHAAA,mBAAmB,OAAA;AACnB,sIAAA,sCAAsC,OAAA;AACtC,6HAAA,6BAA6B,OAAA;AAC7B,4GAAA,YAAY,OAAA;AAkCd,wCAA0D;AAAjD,oGAAA,QAAQ,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAErC,8EAAuE;AAA9D,qIAAA,sBAAsB,OAAA;AAE/B,kDAG4B;AAF1B,+HAAA,iCAAiC,OAAA;AACjC,oHAAA,sBAAsB,OAAA;AAGxB,kDAM4B;AAL1B,uHAAA,yBAAyB,OAAA;AACzB,mHAAA,qBAAqB,OAAA;AACrB,uHAAA,yBAAyB,OAAA;AACzB,gHAAA,kBAAkB,OAAA;AAClB,uHAAA,yBAAyB,OAAA","sourcesContent":["// Export custom error classes\nexport {\n QuoteStatusUpdateError,\n QuoteStatusGetError,\n} from './quote-status-manager/errors.js';\nexport { BaseQuoteStatusUpdateErrorTypes } from './quote-status-manager/constants.js';\n\n// Export constants\nexport {\n REFRESH_INTERVAL_MS,\n DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE,\n BRIDGE_STATUS_CONTROLLER_NAME,\n MAX_ATTEMPTS,\n} from './constants.js';\n\nexport type {\n FetchFunction,\n StatusRequest,\n StatusRequestDto,\n StatusRequestWithSrcTxHash,\n StatusResponse,\n RefuelStatusResponse,\n BridgeHistoryItem,\n BridgeStatusControllerState,\n QuoteStatusPersistEntry,\n BridgeStatusControllerMessenger,\n BridgeStatusControllerActions,\n BridgeStatusControllerGetStateAction,\n BridgeStatusControllerEvents,\n BridgeStatusControllerStateChangeEvent,\n StartPollingForBridgeTxStatusArgs,\n StartPollingForBridgeTxStatusArgsSerialized,\n TokenAmountValuesSerialized,\n QuoteMetadataSerialized,\n} from './types.js';\n\nexport type {\n BridgeStatusControllerStartPollingForBridgeTxStatusAction,\n BridgeStatusControllerWipeBridgeStatusAction,\n BridgeStatusControllerResetStateAction,\n BridgeStatusControllerSubmitTxAction,\n BridgeStatusControllerSubmitIntentAction,\n BridgeStatusControllerRestartPollingForFailedAttemptsAction,\n BridgeStatusControllerGetBridgeHistoryItemByTxMetaIdAction,\n} from './bridge-status-controller-method-action-types.js';\n\nexport { BridgeId, BridgeStatusAction } from './types.js';\n\nexport { BridgeStatusController } from './bridge-status-controller.js';\n\nexport {\n getBatchSellHistoryItemsForTxHash,\n isBatchSellHistoryItem,\n} from './utils/history.js';\n\nexport {\n getHashPresenceProperties,\n getStatusFailurePhase,\n getStatusFailureTelemetry,\n getSubmitErrorCode,\n getSubmitFailureTelemetry,\n} from './utils/metrics.js';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,+DAG0C;AAFxC,mHAAA,sBAAsB,OAAA;AACtB,gHAAA,mBAAmB,OAAA;AAErB,qEAAsF;AAA7E,+HAAA,+BAA+B,OAAA;AAExC,mBAAmB;AACnB,gDAKwB;AAJtB,mHAAA,mBAAmB,OAAA;AACnB,sIAAA,sCAAsC,OAAA;AACtC,6HAAA,6BAA6B,OAAA;AAC7B,4GAAA,YAAY,OAAA;AAkCd,wCAA0D;AAAjD,oGAAA,QAAQ,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAErC,8EAAuE;AAA9D,qIAAA,sBAAsB,OAAA;AAE/B,kDAG4B;AAF1B,+HAAA,iCAAiC,OAAA;AACjC,oHAAA,sBAAsB,OAAA","sourcesContent":["// Export custom error classes\nexport {\n QuoteStatusUpdateError,\n QuoteStatusGetError,\n} from './quote-status-manager/errors.js';\nexport { BaseQuoteStatusUpdateErrorTypes } from './quote-status-manager/constants.js';\n\n// Export constants\nexport {\n REFRESH_INTERVAL_MS,\n DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE,\n BRIDGE_STATUS_CONTROLLER_NAME,\n MAX_ATTEMPTS,\n} from './constants.js';\n\nexport type {\n FetchFunction,\n StatusRequest,\n StatusRequestDto,\n StatusRequestWithSrcTxHash,\n StatusResponse,\n RefuelStatusResponse,\n BridgeHistoryItem,\n BridgeStatusControllerState,\n QuoteStatusPersistEntry,\n BridgeStatusControllerMessenger,\n BridgeStatusControllerActions,\n BridgeStatusControllerGetStateAction,\n BridgeStatusControllerEvents,\n BridgeStatusControllerStateChangeEvent,\n StartPollingForBridgeTxStatusArgs,\n StartPollingForBridgeTxStatusArgsSerialized,\n TokenAmountValuesSerialized,\n QuoteMetadataSerialized,\n} from './types.js';\n\nexport type {\n BridgeStatusControllerStartPollingForBridgeTxStatusAction,\n BridgeStatusControllerWipeBridgeStatusAction,\n BridgeStatusControllerResetStateAction,\n BridgeStatusControllerSubmitTxAction,\n BridgeStatusControllerSubmitIntentAction,\n BridgeStatusControllerRestartPollingForFailedAttemptsAction,\n BridgeStatusControllerGetBridgeHistoryItemByTxMetaIdAction,\n} from './bridge-status-controller-method-action-types.js';\n\nexport { BridgeId, BridgeStatusAction } from './types.js';\n\nexport { BridgeStatusController } from './bridge-status-controller.js';\n\nexport {\n getBatchSellHistoryItemsForTxHash,\n isBatchSellHistoryItem,\n} from './utils/history.js';\n"]}
package/dist/index.d.cts CHANGED
@@ -6,5 +6,4 @@ export type { BridgeStatusControllerStartPollingForBridgeTxStatusAction, BridgeS
6
6
  export { BridgeId, BridgeStatusAction } from "./types.cjs";
7
7
  export { BridgeStatusController } from "./bridge-status-controller.cjs";
8
8
  export { getBatchSellHistoryItemsForTxHash, isBatchSellHistoryItem, } from "./utils/history.cjs";
9
- export { getHashPresenceProperties, getStatusFailurePhase, getStatusFailureTelemetry, getSubmitErrorCode, getSubmitFailureTelemetry, } from "./utils/metrics.cjs";
10
9
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,0CAAyC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,6CAA4C;AAGtF,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,6BAA6B,EAC7B,YAAY,GACb,wBAAuB;AAExB,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,sCAAsC,EACtC,iCAAiC,EACjC,2CAA2C,EAC3C,2BAA2B,EAC3B,uBAAuB,GACxB,oBAAmB;AAEpB,YAAY,EACV,yDAAyD,EACzD,4CAA4C,EAC5C,sCAAsC,EACtC,oCAAoC,EACpC,wCAAwC,EACxC,2DAA2D,EAC3D,0DAA0D,GAC3D,2DAA0D;AAE3D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAmB;AAE1D,OAAO,EAAE,sBAAsB,EAAE,uCAAsC;AAEvE,OAAO,EACL,iCAAiC,EACjC,sBAAsB,GACvB,4BAA2B;AAE5B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,GAC1B,4BAA2B"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,0CAAyC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,6CAA4C;AAGtF,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,6BAA6B,EAC7B,YAAY,GACb,wBAAuB;AAExB,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,sCAAsC,EACtC,iCAAiC,EACjC,2CAA2C,EAC3C,2BAA2B,EAC3B,uBAAuB,GACxB,oBAAmB;AAEpB,YAAY,EACV,yDAAyD,EACzD,4CAA4C,EAC5C,sCAAsC,EACtC,oCAAoC,EACpC,wCAAwC,EACxC,2DAA2D,EAC3D,0DAA0D,GAC3D,2DAA0D;AAE3D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAmB;AAE1D,OAAO,EAAE,sBAAsB,EAAE,uCAAsC;AAEvE,OAAO,EACL,iCAAiC,EACjC,sBAAsB,GACvB,4BAA2B"}
package/dist/index.d.mts CHANGED
@@ -6,5 +6,4 @@ export type { BridgeStatusControllerStartPollingForBridgeTxStatusAction, BridgeS
6
6
  export { BridgeId, BridgeStatusAction } from "./types.mjs";
7
7
  export { BridgeStatusController } from "./bridge-status-controller.mjs";
8
8
  export { getBatchSellHistoryItemsForTxHash, isBatchSellHistoryItem, } from "./utils/history.mjs";
9
- export { getHashPresenceProperties, getStatusFailurePhase, getStatusFailureTelemetry, getSubmitErrorCode, getSubmitFailureTelemetry, } from "./utils/metrics.mjs";
10
9
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,0CAAyC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,6CAA4C;AAGtF,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,6BAA6B,EAC7B,YAAY,GACb,wBAAuB;AAExB,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,sCAAsC,EACtC,iCAAiC,EACjC,2CAA2C,EAC3C,2BAA2B,EAC3B,uBAAuB,GACxB,oBAAmB;AAEpB,YAAY,EACV,yDAAyD,EACzD,4CAA4C,EAC5C,sCAAsC,EACtC,oCAAoC,EACpC,wCAAwC,EACxC,2DAA2D,EAC3D,0DAA0D,GAC3D,2DAA0D;AAE3D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAmB;AAE1D,OAAO,EAAE,sBAAsB,EAAE,uCAAsC;AAEvE,OAAO,EACL,iCAAiC,EACjC,sBAAsB,GACvB,4BAA2B;AAE5B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,GAC1B,4BAA2B"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,0CAAyC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,6CAA4C;AAGtF,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,6BAA6B,EAC7B,YAAY,GACb,wBAAuB;AAExB,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,sCAAsC,EACtC,iCAAiC,EACjC,2CAA2C,EAC3C,2BAA2B,EAC3B,uBAAuB,GACxB,oBAAmB;AAEpB,YAAY,EACV,yDAAyD,EACzD,4CAA4C,EAC5C,sCAAsC,EACtC,oCAAoC,EACpC,wCAAwC,EACxC,2DAA2D,EAC3D,0DAA0D,GAC3D,2DAA0D;AAE3D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAmB;AAE1D,OAAO,EAAE,sBAAsB,EAAE,uCAAsC;AAEvE,OAAO,EACL,iCAAiC,EACjC,sBAAsB,GACvB,4BAA2B"}
package/dist/index.mjs CHANGED
@@ -6,5 +6,4 @@ export { REFRESH_INTERVAL_MS, DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE, BRIDGE_STA
6
6
  export { BridgeId, BridgeStatusAction } from "./types.mjs";
7
7
  export { BridgeStatusController } from "./bridge-status-controller.mjs";
8
8
  export { getBatchSellHistoryItemsForTxHash, isBatchSellHistoryItem } from "./utils/history.mjs";
9
- export { getHashPresenceProperties, getStatusFailurePhase, getStatusFailureTelemetry, getSubmitErrorCode, getSubmitFailureTelemetry } from "./utils/metrics.mjs";
10
9
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACpB,0CAAyC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,6CAA4C;AAEtF,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,6BAA6B,EAC7B,YAAY,EACb,wBAAuB;AAiCxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAmB;AAE1D,OAAO,EAAE,sBAAsB,EAAE,uCAAsC;AAEvE,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACvB,4BAA2B;AAE5B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EAC1B,4BAA2B","sourcesContent":["// Export custom error classes\nexport {\n QuoteStatusUpdateError,\n QuoteStatusGetError,\n} from './quote-status-manager/errors.js';\nexport { BaseQuoteStatusUpdateErrorTypes } from './quote-status-manager/constants.js';\n\n// Export constants\nexport {\n REFRESH_INTERVAL_MS,\n DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE,\n BRIDGE_STATUS_CONTROLLER_NAME,\n MAX_ATTEMPTS,\n} from './constants.js';\n\nexport type {\n FetchFunction,\n StatusRequest,\n StatusRequestDto,\n StatusRequestWithSrcTxHash,\n StatusResponse,\n RefuelStatusResponse,\n BridgeHistoryItem,\n BridgeStatusControllerState,\n QuoteStatusPersistEntry,\n BridgeStatusControllerMessenger,\n BridgeStatusControllerActions,\n BridgeStatusControllerGetStateAction,\n BridgeStatusControllerEvents,\n BridgeStatusControllerStateChangeEvent,\n StartPollingForBridgeTxStatusArgs,\n StartPollingForBridgeTxStatusArgsSerialized,\n TokenAmountValuesSerialized,\n QuoteMetadataSerialized,\n} from './types.js';\n\nexport type {\n BridgeStatusControllerStartPollingForBridgeTxStatusAction,\n BridgeStatusControllerWipeBridgeStatusAction,\n BridgeStatusControllerResetStateAction,\n BridgeStatusControllerSubmitTxAction,\n BridgeStatusControllerSubmitIntentAction,\n BridgeStatusControllerRestartPollingForFailedAttemptsAction,\n BridgeStatusControllerGetBridgeHistoryItemByTxMetaIdAction,\n} from './bridge-status-controller-method-action-types.js';\n\nexport { BridgeId, BridgeStatusAction } from './types.js';\n\nexport { BridgeStatusController } from './bridge-status-controller.js';\n\nexport {\n getBatchSellHistoryItemsForTxHash,\n isBatchSellHistoryItem,\n} from './utils/history.js';\n\nexport {\n getHashPresenceProperties,\n getStatusFailurePhase,\n getStatusFailureTelemetry,\n getSubmitErrorCode,\n getSubmitFailureTelemetry,\n} from './utils/metrics.js';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACpB,0CAAyC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,6CAA4C;AAEtF,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,sCAAsC,EACtC,6BAA6B,EAC7B,YAAY,EACb,wBAAuB;AAiCxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAmB;AAE1D,OAAO,EAAE,sBAAsB,EAAE,uCAAsC;AAEvE,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACvB,4BAA2B","sourcesContent":["// Export custom error classes\nexport {\n QuoteStatusUpdateError,\n QuoteStatusGetError,\n} from './quote-status-manager/errors.js';\nexport { BaseQuoteStatusUpdateErrorTypes } from './quote-status-manager/constants.js';\n\n// Export constants\nexport {\n REFRESH_INTERVAL_MS,\n DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE,\n BRIDGE_STATUS_CONTROLLER_NAME,\n MAX_ATTEMPTS,\n} from './constants.js';\n\nexport type {\n FetchFunction,\n StatusRequest,\n StatusRequestDto,\n StatusRequestWithSrcTxHash,\n StatusResponse,\n RefuelStatusResponse,\n BridgeHistoryItem,\n BridgeStatusControllerState,\n QuoteStatusPersistEntry,\n BridgeStatusControllerMessenger,\n BridgeStatusControllerActions,\n BridgeStatusControllerGetStateAction,\n BridgeStatusControllerEvents,\n BridgeStatusControllerStateChangeEvent,\n StartPollingForBridgeTxStatusArgs,\n StartPollingForBridgeTxStatusArgsSerialized,\n TokenAmountValuesSerialized,\n QuoteMetadataSerialized,\n} from './types.js';\n\nexport type {\n BridgeStatusControllerStartPollingForBridgeTxStatusAction,\n BridgeStatusControllerWipeBridgeStatusAction,\n BridgeStatusControllerResetStateAction,\n BridgeStatusControllerSubmitTxAction,\n BridgeStatusControllerSubmitIntentAction,\n BridgeStatusControllerRestartPollingForFailedAttemptsAction,\n BridgeStatusControllerGetBridgeHistoryItemByTxMetaIdAction,\n} from './bridge-status-controller-method-action-types.js';\n\nexport { BridgeId, BridgeStatusAction } from './types.js';\n\nexport { BridgeStatusController } from './bridge-status-controller.js';\n\nexport {\n getBatchSellHistoryItemsForTxHash,\n isBatchSellHistoryItem,\n} from './utils/history.js';\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStatusFailureTelemetry = exports.getSubmitFailureTelemetry = exports.getStatusFailurePhase = exports.getHashPresenceProperties = exports.getSubmitErrorCode = exports.getEVMTxPropertiesFromTransactionMeta = exports.getRequestMetadataFromHistory = exports.getTradeDataFromHistory = exports.getPreConfirmationPropertiesFromQuote = exports.getPriceImpactFromQuote = exports.getTradeDataFromQuote = exports.getRequestParamFromHistory = exports.getFinalizedTxProperties = exports.getTxStatusesFromHistory = void 0;
3
+ exports.getEVMTxPropertiesFromTransactionMeta = exports.getRequestMetadataFromHistory = exports.getTradeDataFromHistory = exports.getPreConfirmationPropertiesFromQuote = exports.getPriceImpactFromQuote = exports.getTradeDataFromQuote = exports.getRequestParamFromHistory = exports.getFinalizedTxProperties = exports.getTxStatusesFromHistory = void 0;
4
4
  const bridge_controller_1 = require("@metamask/bridge-controller");
5
5
  const transaction_controller_1 = require("@metamask/transaction-controller");
6
6
  const bignumber_js_1 = require("bignumber.js");
@@ -245,79 +245,4 @@ const getEVMTxPropertiesFromTransactionMeta = (transactionMeta, account) => {
245
245
  };
246
246
  };
247
247
  exports.getEVMTxPropertiesFromTransactionMeta = getEVMTxPropertiesFromTransactionMeta;
248
- /**
249
- * Classify a thrown value from submit (sign/broadcast) catch paths.
250
- *
251
- * @param error - The thrown value from submit.
252
- * @returns The Mixpanel `error_code`.
253
- */
254
- const getSubmitErrorCode = (error) => {
255
- if (error === undefined || error === null) {
256
- return bridge_controller_1.SwapBridgeErrorCode.MissingErrorObject;
257
- }
258
- if (error instanceof Error) {
259
- return bridge_controller_1.SwapBridgeErrorCode.Unknown;
260
- }
261
- return bridge_controller_1.SwapBridgeErrorCode.NonErrorRejection;
262
- };
263
- exports.getSubmitErrorCode = getSubmitErrorCode;
264
- /**
265
- * @param sourceHash - Source tx hash if known at emit time.
266
- * @param destinationHash - Destination tx hash if known at emit time.
267
- * @returns Boolean hash-presence properties.
268
- */
269
- const getHashPresenceProperties = (sourceHash, destinationHash) => {
270
- return {
271
- source_hash_present: Boolean(sourceHash),
272
- destination_hash_present: Boolean(destinationHash),
273
- };
274
- };
275
- exports.getHashPresenceProperties = getHashPresenceProperties;
276
- /**
277
- * Prefer destination_execution over source_execution over poll.
278
- *
279
- * @param hashPresence - Hash presence at emit time.
280
- * @returns The Mixpanel `failure_phase` for a status/polling Failed event.
281
- */
282
- const getStatusFailurePhase = (hashPresence) => {
283
- if (hashPresence.destination_hash_present) {
284
- return bridge_controller_1.FailurePhase.DestinationExecution;
285
- }
286
- if (hashPresence.source_hash_present) {
287
- return bridge_controller_1.FailurePhase.SourceExecution;
288
- }
289
- return bridge_controller_1.FailurePhase.Poll;
290
- };
291
- exports.getStatusFailurePhase = getStatusFailurePhase;
292
- /**
293
- * Telemetry for Failed events emitted from the submit catch (no tx hash yet).
294
- *
295
- * @param error - The thrown value from submit.
296
- * @returns Phase, error code, and hash-presence flags.
297
- */
298
- const getSubmitFailureTelemetry = (error) => {
299
- return {
300
- failure_phase: bridge_controller_1.FailurePhase.Broadcast,
301
- error_code: (0, exports.getSubmitErrorCode)(error),
302
- source_hash_present: false,
303
- destination_hash_present: false,
304
- };
305
- };
306
- exports.getSubmitFailureTelemetry = getSubmitFailureTelemetry;
307
- /**
308
- * Telemetry for Failed events derived from a status poll.
309
- *
310
- * @param sourceHash - Source tx hash if known.
311
- * @param destinationHash - Destination tx hash if known.
312
- * @returns Phase, error code, and hash-presence flags.
313
- */
314
- const getStatusFailureTelemetry = (sourceHash, destinationHash) => {
315
- const hashPresence = (0, exports.getHashPresenceProperties)(sourceHash, destinationHash);
316
- return {
317
- ...hashPresence,
318
- failure_phase: (0, exports.getStatusFailurePhase)(hashPresence),
319
- error_code: bridge_controller_1.SwapBridgeErrorCode.StatusFailedWithoutReason,
320
- };
321
- };
322
- exports.getStatusFailureTelemetry = getStatusFailureTelemetry;
323
248
  //# sourceMappingURL=metrics.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.cjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\nimport {\n StatusTypes,\n getAccountHardwareType,\n formatChainIdToHex,\n isEthUsdt,\n formatChainIdToCaip,\n formatProviderLabel,\n isCustomSlippage,\n getSwapType,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n MetaMetricsSwapsEventSource,\n FeatureId,\n UnifiedSwapBridgeEventName,\n FailurePhase,\n SwapBridgeErrorCode,\n} from '@metamask/bridge-controller';\nimport type {\n AccountHardwareType,\n QuoteFetchData,\n QuoteMetadata,\n QuoteResponseV1,\n TxStatusData,\n RequestParams,\n TradeData,\n RequestMetadata,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n HashPresenceProperties,\n FailureTelemetryProperties,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { CaipAssetType, Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types.js';\nimport { calcActualGasUsed } from './gas.js';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount.js';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime =\n txMeta?.type === TransactionType.swap\n ? txMeta?.time\n : historyItem.completionTime;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n token_security_type_destination:\n historyItem.tokenSecurityTypeDestination ?? null,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n batchSellTrades?: BatchSellTradesResponse | null,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.total?.usd ?? 0),\n gas_included:\n quoteResponse.quote.gasIncluded ?? batchSellTrades?.gasIncluded ?? false,\n gas_included_7702:\n quoteResponse.quote.gasIncluded7702 ??\n batchSellTrades?.gasIncluded7702 ??\n false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse?.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponseV1['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\n/**\n * Before the tx is confirmed, its data is not available in txHistory\n * The quote is used to populate event properties before confirmation\n *\n * @param quoteResponse - The quote response\n * @param isStxEnabled - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param accountHardwareType - The hardware wallet type used to submit the tx, or null if not a hardware wallet\n * @param location - The entry point from which the user initiated the swap or bridge (e.g. Main View, Token View, Trending Explore)\n * @param abTests - Legacy A/B test context for `ab_tests` (backward compatibility)\n * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)\n * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.\n * @param batchSellTrades - The batch sell trades response\n * @param batchId - The batch ID of the transaction batch.\n * @param quotesReceivedContext - The client context captured when quotes were received.\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n isStxEnabled: boolean,\n accountHardwareType: AccountHardwareType,\n location?: MetaMetricsSwapsEventSource,\n abTests?: Record<string, string>,\n activeAbTests?: { key: string; value: string }[],\n tokenSecurityTypeDestination?: string | null,\n batchSellTrades?: BatchSellTradesResponse | null,\n batchId?: Hex,\n quotesReceivedContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse, batchSellTrades),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n token_address_source: quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n token_address_destination: quote.destAsset.assetId,\n token_security_type_destination: tokenSecurityTypeDestination ?? null,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type: getSwapType(\n quoteResponse.quote.srcChainId,\n quoteResponse.quote.destChainId,\n ),\n usd_amount_source: Number(quoteResponse?.sentAmount?.usd ?? 0),\n stx_enabled: isStxEnabled,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n slippage_limit:\n quotesReceivedContext?.slippage_limit ?? quote.slippage ?? 0,\n custom_slippage: quotesReceivedContext?.custom_slippage ?? false,\n location,\n ...(abTests &&\n Object.keys(abTests).length > 0 && {\n ab_tests: abTests,\n }),\n ...(activeAbTests &&\n activeAbTests.length > 0 && {\n active_ab_tests: activeAbTests,\n }),\n ...(batchId ? { batch_id: batchId } : {}),\n feature_id: quoteResponse.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n gas_included_7702: historyItem.quote.gasIncluded7702 ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const {\n quote,\n slippagePercentage,\n isStxEnabled,\n customSlippage,\n batchSellData,\n featureId,\n } = historyItem;\n const accountHardwareType = getAccountHardwareType(account);\n const isBatchSell =\n Boolean(batchSellData) || featureId === FeatureId.BATCH_SELL;\n const isUnifiedSwapBridge =\n featureId === undefined || featureId === FeatureId.UNIFIED_SWAP_BRIDGE;\n let inferredCustomSlippage = false;\n if (isBatchSell) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage ?? 0);\n } else if (!isUnifiedSwapBridge) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage);\n }\n\n return {\n slippage_limit: slippagePercentage ?? 0,\n custom_slippage: customSlippage ?? inferredCustomSlippage,\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @param account - The account that submitted the transaction\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n const accountHardwareType = getAccountHardwareType(account);\n\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: [\n `Transaction ${transactionMeta.status}`,\n transactionMeta.error?.message,\n ]\n .filter(Boolean)\n .join('. '),\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 0,\n slippage_limit: 0,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_security_type_destination: null,\n custom_slippage: false,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n gas_included_7702: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),\n };\n};\n\n/**\n * Classify a thrown value from submit (sign/broadcast) catch paths.\n *\n * @param error - The thrown value from submit.\n * @returns The Mixpanel `error_code`.\n */\nexport const getSubmitErrorCode = (error: unknown): SwapBridgeErrorCode => {\n if (error === undefined || error === null) {\n return SwapBridgeErrorCode.MissingErrorObject;\n }\n if (error instanceof Error) {\n return SwapBridgeErrorCode.Unknown;\n }\n return SwapBridgeErrorCode.NonErrorRejection;\n};\n\n/**\n * @param sourceHash - Source tx hash if known at emit time.\n * @param destinationHash - Destination tx hash if known at emit time.\n * @returns Boolean hash-presence properties.\n */\nexport const getHashPresenceProperties = (\n sourceHash?: string | null,\n destinationHash?: string | null,\n): HashPresenceProperties => {\n return {\n source_hash_present: Boolean(sourceHash),\n destination_hash_present: Boolean(destinationHash),\n };\n};\n\n/**\n * Prefer destination_execution over source_execution over poll.\n *\n * @param hashPresence - Hash presence at emit time.\n * @returns The Mixpanel `failure_phase` for a status/polling Failed event.\n */\nexport const getStatusFailurePhase = (\n hashPresence: HashPresenceProperties,\n): FailurePhase => {\n if (hashPresence.destination_hash_present) {\n return FailurePhase.DestinationExecution;\n }\n if (hashPresence.source_hash_present) {\n return FailurePhase.SourceExecution;\n }\n return FailurePhase.Poll;\n};\n\n/**\n * Telemetry for Failed events emitted from the submit catch (no tx hash yet).\n *\n * @param error - The thrown value from submit.\n * @returns Phase, error code, and hash-presence flags.\n */\nexport const getSubmitFailureTelemetry = (\n error: unknown,\n): FailureTelemetryProperties => {\n return {\n failure_phase: FailurePhase.Broadcast,\n error_code: getSubmitErrorCode(error),\n source_hash_present: false,\n destination_hash_present: false,\n };\n};\n\n/**\n * Telemetry for Failed events derived from a status poll.\n *\n * @param sourceHash - Source tx hash if known.\n * @param destinationHash - Destination tx hash if known.\n * @returns Phase, error code, and hash-presence flags.\n */\nexport const getStatusFailureTelemetry = (\n sourceHash?: string | null,\n destinationHash?: string | null,\n): FailureTelemetryProperties => {\n const hashPresence = getHashPresenceProperties(sourceHash, destinationHash);\n return {\n ...hashPresence,\n failure_phase: getStatusFailurePhase(hashPresence),\n error_code: SwapBridgeErrorCode.StatusFailedWithoutReason,\n };\n};\n"]}
1
+ {"version":3,"file":"metrics.cjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\nimport {\n StatusTypes,\n getAccountHardwareType,\n formatChainIdToHex,\n isEthUsdt,\n formatChainIdToCaip,\n formatProviderLabel,\n isCustomSlippage,\n getSwapType,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n MetaMetricsSwapsEventSource,\n FeatureId,\n UnifiedSwapBridgeEventName,\n} from '@metamask/bridge-controller';\nimport type {\n AccountHardwareType,\n QuoteFetchData,\n QuoteMetadata,\n QuoteResponseV1,\n TxStatusData,\n RequestParams,\n TradeData,\n RequestMetadata,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { CaipAssetType, Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types.js';\nimport { calcActualGasUsed } from './gas.js';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount.js';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime =\n txMeta?.type === TransactionType.swap\n ? txMeta?.time\n : historyItem.completionTime;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n token_security_type_destination:\n historyItem.tokenSecurityTypeDestination ?? null,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n batchSellTrades?: BatchSellTradesResponse | null,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.total?.usd ?? 0),\n gas_included:\n quoteResponse.quote.gasIncluded ?? batchSellTrades?.gasIncluded ?? false,\n gas_included_7702:\n quoteResponse.quote.gasIncluded7702 ??\n batchSellTrades?.gasIncluded7702 ??\n false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse?.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponseV1['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\n/**\n * Before the tx is confirmed, its data is not available in txHistory\n * The quote is used to populate event properties before confirmation\n *\n * @param quoteResponse - The quote response\n * @param isStxEnabled - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param accountHardwareType - The hardware wallet type used to submit the tx, or null if not a hardware wallet\n * @param location - The entry point from which the user initiated the swap or bridge (e.g. Main View, Token View, Trending Explore)\n * @param abTests - Legacy A/B test context for `ab_tests` (backward compatibility)\n * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)\n * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.\n * @param batchSellTrades - The batch sell trades response\n * @param batchId - The batch ID of the transaction batch.\n * @param quotesReceivedContext - The client context captured when quotes were received.\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n isStxEnabled: boolean,\n accountHardwareType: AccountHardwareType,\n location?: MetaMetricsSwapsEventSource,\n abTests?: Record<string, string>,\n activeAbTests?: { key: string; value: string }[],\n tokenSecurityTypeDestination?: string | null,\n batchSellTrades?: BatchSellTradesResponse | null,\n batchId?: Hex,\n quotesReceivedContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse, batchSellTrades),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n token_address_source: quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n token_address_destination: quote.destAsset.assetId,\n token_security_type_destination: tokenSecurityTypeDestination ?? null,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type: getSwapType(\n quoteResponse.quote.srcChainId,\n quoteResponse.quote.destChainId,\n ),\n usd_amount_source: Number(quoteResponse?.sentAmount?.usd ?? 0),\n stx_enabled: isStxEnabled,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n slippage_limit:\n quotesReceivedContext?.slippage_limit ?? quote.slippage ?? 0,\n custom_slippage: quotesReceivedContext?.custom_slippage ?? false,\n location,\n ...(abTests &&\n Object.keys(abTests).length > 0 && {\n ab_tests: abTests,\n }),\n ...(activeAbTests &&\n activeAbTests.length > 0 && {\n active_ab_tests: activeAbTests,\n }),\n ...(batchId ? { batch_id: batchId } : {}),\n feature_id: quoteResponse.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n gas_included_7702: historyItem.quote.gasIncluded7702 ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const {\n quote,\n slippagePercentage,\n isStxEnabled,\n customSlippage,\n batchSellData,\n featureId,\n } = historyItem;\n const accountHardwareType = getAccountHardwareType(account);\n const isBatchSell =\n Boolean(batchSellData) || featureId === FeatureId.BATCH_SELL;\n const isUnifiedSwapBridge =\n featureId === undefined || featureId === FeatureId.UNIFIED_SWAP_BRIDGE;\n let inferredCustomSlippage = false;\n if (isBatchSell) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage ?? 0);\n } else if (!isUnifiedSwapBridge) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage);\n }\n\n return {\n slippage_limit: slippagePercentage ?? 0,\n custom_slippage: customSlippage ?? inferredCustomSlippage,\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @param account - The account that submitted the transaction\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n const accountHardwareType = getAccountHardwareType(account);\n\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: [\n `Transaction ${transactionMeta.status}`,\n transactionMeta.error?.message,\n ]\n .filter(Boolean)\n .join('. '),\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 0,\n slippage_limit: 0,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_security_type_destination: null,\n custom_slippage: false,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n gas_included_7702: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),\n };\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { AccountsControllerState } from "@metamask/accounts-controller";
2
- import { StatusTypes, MetricsActionType, MetricsSwapType, MetaMetricsSwapsEventSource, FeatureId, UnifiedSwapBridgeEventName, FailurePhase, SwapBridgeErrorCode } from "@metamask/bridge-controller";
3
- import type { AccountHardwareType, QuoteFetchData, QuoteMetadata, QuoteResponseV1, TxStatusData, RequestParams, TradeData, RequestMetadata, BatchSellTradesResponse, RequiredEventContextFromClient, HashPresenceProperties, FailureTelemetryProperties } from "@metamask/bridge-controller";
2
+ import { StatusTypes, MetricsActionType, MetricsSwapType, MetaMetricsSwapsEventSource, FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
3
+ import type { AccountHardwareType, QuoteFetchData, QuoteMetadata, QuoteResponseV1, TxStatusData, RequestParams, TradeData, RequestMetadata, BatchSellTradesResponse, RequiredEventContextFromClient } from "@metamask/bridge-controller";
4
4
  import type { TransactionMeta } from "@metamask/transaction-controller";
5
5
  import type { Hex } from "@metamask/utils";
6
6
  import type { BridgeHistoryItem } from "../types.cjs";
@@ -117,39 +117,4 @@ export declare const getEVMTxPropertiesFromTransactionMeta: (transactionMeta: Tr
117
117
  usd_actual_gas: number;
118
118
  action_type: MetricsActionType;
119
119
  };
120
- /**
121
- * Classify a thrown value from submit (sign/broadcast) catch paths.
122
- *
123
- * @param error - The thrown value from submit.
124
- * @returns The Mixpanel `error_code`.
125
- */
126
- export declare const getSubmitErrorCode: (error: unknown) => SwapBridgeErrorCode;
127
- /**
128
- * @param sourceHash - Source tx hash if known at emit time.
129
- * @param destinationHash - Destination tx hash if known at emit time.
130
- * @returns Boolean hash-presence properties.
131
- */
132
- export declare const getHashPresenceProperties: (sourceHash?: string | null, destinationHash?: string | null) => HashPresenceProperties;
133
- /**
134
- * Prefer destination_execution over source_execution over poll.
135
- *
136
- * @param hashPresence - Hash presence at emit time.
137
- * @returns The Mixpanel `failure_phase` for a status/polling Failed event.
138
- */
139
- export declare const getStatusFailurePhase: (hashPresence: HashPresenceProperties) => FailurePhase;
140
- /**
141
- * Telemetry for Failed events emitted from the submit catch (no tx hash yet).
142
- *
143
- * @param error - The thrown value from submit.
144
- * @returns Phase, error code, and hash-presence flags.
145
- */
146
- export declare const getSubmitFailureTelemetry: (error: unknown) => FailureTelemetryProperties;
147
- /**
148
- * Telemetry for Failed events derived from a status poll.
149
- *
150
- * @param sourceHash - Source tx hash if known.
151
- * @param destinationHash - Destination tx hash if known.
152
- * @returns Phase, error code, and hash-presence flags.
153
- */
154
- export declare const getStatusFailureTelemetry: (sourceHash?: string | null, destinationHash?: string | null) => FailureTelemetryProperties;
155
120
  //# sourceMappingURL=metrics.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.cts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,EACL,WAAW,EASX,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACpB,oCAAoC;AACrC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,sBAAsB,EACtB,0BAA0B,EAC3B,oCAAoC;AAKrC,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AACxE,OAAO,KAAK,EAAiB,GAAG,EAAE,wBAAwB;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAoB;AAOrD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;CA6CjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,iBAAiB,KAC7B,aAWF,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBACjB,eAAe,GAAG,aAAa,oBAC5B,uBAAuB,GAAG,IAAI,KAC/C,SAeF,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,eAAe,CAAC,OAAO,CAAC,KAC9B,KAAK,cAAc,EAAE,cAAc,CAErC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qCAAqC,kBACjC,eAAe,GAAG,aAAa,gBAChC,OAAO,uBACA,mBAAmB,aAC7B,2BAA2B,YAC5B,OAAO,MAAM,EAAE,MAAM,CAAC,kBAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,iCACjB,MAAM,GAAG,IAAI,oBAC1B,uBAAuB,GAAG,IAAI,YACtC,GAAG,0BACW,8BAA8B,CAAC,2BAA2B,cAAc,CAAC;;;;aAJ1E,MAAM;eAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBACrB,iBAAiB,KAC7B,SAWF,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAC3B,iBAAiB,YACpB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KACxE,eA+BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,oBAC/B,eAAe,YACtB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8D1E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,mBAQnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,gBACvB,MAAM,GAAG,IAAI,oBACR,MAAM,GAAG,IAAI,KAC9B,sBAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,iBAClB,sBAAsB,KACnC,YAQF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,UAC7B,OAAO,KACb,0BAOF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,gBACvB,MAAM,GAAG,IAAI,oBACR,MAAM,GAAG,IAAI,KAC9B,0BAOF,CAAC"}
1
+ {"version":3,"file":"metrics.d.cts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,EACL,WAAW,EASX,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,0BAA0B,EAC3B,oCAAoC;AACrC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC/B,oCAAoC;AAKrC,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AACxE,OAAO,KAAK,EAAiB,GAAG,EAAE,wBAAwB;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAoB;AAOrD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;CA6CjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,iBAAiB,KAC7B,aAWF,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBACjB,eAAe,GAAG,aAAa,oBAC5B,uBAAuB,GAAG,IAAI,KAC/C,SAeF,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,eAAe,CAAC,OAAO,CAAC,KAC9B,KAAK,cAAc,EAAE,cAAc,CAErC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qCAAqC,kBACjC,eAAe,GAAG,aAAa,gBAChC,OAAO,uBACA,mBAAmB,aAC7B,2BAA2B,YAC5B,OAAO,MAAM,EAAE,MAAM,CAAC,kBAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,iCACjB,MAAM,GAAG,IAAI,oBAC1B,uBAAuB,GAAG,IAAI,YACtC,GAAG,0BACW,8BAA8B,CAAC,2BAA2B,cAAc,CAAC;;;;aAJ1E,MAAM;eAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBACrB,iBAAiB,KAC7B,SAWF,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAC3B,iBAAiB,YACpB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KACxE,eA+BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,oBAC/B,eAAe,YACtB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8D1E,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AccountsControllerState } from "@metamask/accounts-controller";
2
- import { StatusTypes, MetricsActionType, MetricsSwapType, MetaMetricsSwapsEventSource, FeatureId, UnifiedSwapBridgeEventName, FailurePhase, SwapBridgeErrorCode } from "@metamask/bridge-controller";
3
- import type { AccountHardwareType, QuoteFetchData, QuoteMetadata, QuoteResponseV1, TxStatusData, RequestParams, TradeData, RequestMetadata, BatchSellTradesResponse, RequiredEventContextFromClient, HashPresenceProperties, FailureTelemetryProperties } from "@metamask/bridge-controller";
2
+ import { StatusTypes, MetricsActionType, MetricsSwapType, MetaMetricsSwapsEventSource, FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
3
+ import type { AccountHardwareType, QuoteFetchData, QuoteMetadata, QuoteResponseV1, TxStatusData, RequestParams, TradeData, RequestMetadata, BatchSellTradesResponse, RequiredEventContextFromClient } from "@metamask/bridge-controller";
4
4
  import type { TransactionMeta } from "@metamask/transaction-controller";
5
5
  import type { Hex } from "@metamask/utils";
6
6
  import type { BridgeHistoryItem } from "../types.mjs";
@@ -117,39 +117,4 @@ export declare const getEVMTxPropertiesFromTransactionMeta: (transactionMeta: Tr
117
117
  usd_actual_gas: number;
118
118
  action_type: MetricsActionType;
119
119
  };
120
- /**
121
- * Classify a thrown value from submit (sign/broadcast) catch paths.
122
- *
123
- * @param error - The thrown value from submit.
124
- * @returns The Mixpanel `error_code`.
125
- */
126
- export declare const getSubmitErrorCode: (error: unknown) => SwapBridgeErrorCode;
127
- /**
128
- * @param sourceHash - Source tx hash if known at emit time.
129
- * @param destinationHash - Destination tx hash if known at emit time.
130
- * @returns Boolean hash-presence properties.
131
- */
132
- export declare const getHashPresenceProperties: (sourceHash?: string | null, destinationHash?: string | null) => HashPresenceProperties;
133
- /**
134
- * Prefer destination_execution over source_execution over poll.
135
- *
136
- * @param hashPresence - Hash presence at emit time.
137
- * @returns The Mixpanel `failure_phase` for a status/polling Failed event.
138
- */
139
- export declare const getStatusFailurePhase: (hashPresence: HashPresenceProperties) => FailurePhase;
140
- /**
141
- * Telemetry for Failed events emitted from the submit catch (no tx hash yet).
142
- *
143
- * @param error - The thrown value from submit.
144
- * @returns Phase, error code, and hash-presence flags.
145
- */
146
- export declare const getSubmitFailureTelemetry: (error: unknown) => FailureTelemetryProperties;
147
- /**
148
- * Telemetry for Failed events derived from a status poll.
149
- *
150
- * @param sourceHash - Source tx hash if known.
151
- * @param destinationHash - Destination tx hash if known.
152
- * @returns Phase, error code, and hash-presence flags.
153
- */
154
- export declare const getStatusFailureTelemetry: (sourceHash?: string | null, destinationHash?: string | null) => FailureTelemetryProperties;
155
120
  //# sourceMappingURL=metrics.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.mts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,EACL,WAAW,EASX,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACpB,oCAAoC;AACrC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,sBAAsB,EACtB,0BAA0B,EAC3B,oCAAoC;AAKrC,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AACxE,OAAO,KAAK,EAAiB,GAAG,EAAE,wBAAwB;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAoB;AAOrD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;CA6CjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,iBAAiB,KAC7B,aAWF,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBACjB,eAAe,GAAG,aAAa,oBAC5B,uBAAuB,GAAG,IAAI,KAC/C,SAeF,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,eAAe,CAAC,OAAO,CAAC,KAC9B,KAAK,cAAc,EAAE,cAAc,CAErC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qCAAqC,kBACjC,eAAe,GAAG,aAAa,gBAChC,OAAO,uBACA,mBAAmB,aAC7B,2BAA2B,YAC5B,OAAO,MAAM,EAAE,MAAM,CAAC,kBAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,iCACjB,MAAM,GAAG,IAAI,oBAC1B,uBAAuB,GAAG,IAAI,YACtC,GAAG,0BACW,8BAA8B,CAAC,2BAA2B,cAAc,CAAC;;;;aAJ1E,MAAM;eAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBACrB,iBAAiB,KAC7B,SAWF,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAC3B,iBAAiB,YACpB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KACxE,eA+BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,oBAC/B,eAAe,YACtB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8D1E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,mBAQnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,gBACvB,MAAM,GAAG,IAAI,oBACR,MAAM,GAAG,IAAI,KAC9B,sBAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,iBAClB,sBAAsB,KACnC,YAQF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,UAC7B,OAAO,KACb,0BAOF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,gBACvB,MAAM,GAAG,IAAI,oBACR,MAAM,GAAG,IAAI,KAC9B,0BAOF,CAAC"}
1
+ {"version":3,"file":"metrics.d.mts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,EACL,WAAW,EASX,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,0BAA0B,EAC3B,oCAAoC;AACrC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC/B,oCAAoC;AAKrC,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AACxE,OAAO,KAAK,EAAiB,GAAG,EAAE,wBAAwB;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAoB;AAOrD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;CA6CjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,iBAAiB,KAC7B,aAWF,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBACjB,eAAe,GAAG,aAAa,oBAC5B,uBAAuB,GAAG,IAAI,KAC/C,SAeF,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,eAAe,CAAC,OAAO,CAAC,KAC9B,KAAK,cAAc,EAAE,cAAc,CAErC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qCAAqC,kBACjC,eAAe,GAAG,aAAa,gBAChC,OAAO,uBACA,mBAAmB,aAC7B,2BAA2B,YAC5B,OAAO,MAAM,EAAE,MAAM,CAAC,kBAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,iCACjB,MAAM,GAAG,IAAI,oBAC1B,uBAAuB,GAAG,IAAI,YACtC,GAAG,0BACW,8BAA8B,CAAC,2BAA2B,cAAc,CAAC;;;;aAJ1E,MAAM;eAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBACrB,iBAAiB,KAC7B,SAWF,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAC3B,iBAAiB,YACpB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KACxE,eA+BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,oBAC/B,eAAe,YACtB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8D1E,CAAC"}
@@ -1,4 +1,4 @@
1
- import { StatusTypes, getAccountHardwareType, formatChainIdToHex, isEthUsdt, formatChainIdToCaip, formatProviderLabel, isCustomSlippage, getSwapType, formatAddressToAssetId, MetricsActionType, MetricsSwapType, MetaMetricsSwapsEventSource, FeatureId, UnifiedSwapBridgeEventName, FailurePhase, SwapBridgeErrorCode } from "@metamask/bridge-controller";
1
+ import { StatusTypes, getAccountHardwareType, formatChainIdToHex, isEthUsdt, formatChainIdToCaip, formatProviderLabel, isCustomSlippage, getSwapType, formatAddressToAssetId, MetricsActionType, MetricsSwapType, MetaMetricsSwapsEventSource, FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
2
2
  import { TransactionStatus, TransactionType } from "@metamask/transaction-controller";
3
3
  import { BigNumber } from "bignumber.js";
4
4
  import { calcActualGasUsed } from "./gas.mjs";
@@ -233,74 +233,4 @@ export const getEVMTxPropertiesFromTransactionMeta = (transactionMeta, account)
233
233
  ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),
234
234
  };
235
235
  };
236
- /**
237
- * Classify a thrown value from submit (sign/broadcast) catch paths.
238
- *
239
- * @param error - The thrown value from submit.
240
- * @returns The Mixpanel `error_code`.
241
- */
242
- export const getSubmitErrorCode = (error) => {
243
- if (error === undefined || error === null) {
244
- return SwapBridgeErrorCode.MissingErrorObject;
245
- }
246
- if (error instanceof Error) {
247
- return SwapBridgeErrorCode.Unknown;
248
- }
249
- return SwapBridgeErrorCode.NonErrorRejection;
250
- };
251
- /**
252
- * @param sourceHash - Source tx hash if known at emit time.
253
- * @param destinationHash - Destination tx hash if known at emit time.
254
- * @returns Boolean hash-presence properties.
255
- */
256
- export const getHashPresenceProperties = (sourceHash, destinationHash) => {
257
- return {
258
- source_hash_present: Boolean(sourceHash),
259
- destination_hash_present: Boolean(destinationHash),
260
- };
261
- };
262
- /**
263
- * Prefer destination_execution over source_execution over poll.
264
- *
265
- * @param hashPresence - Hash presence at emit time.
266
- * @returns The Mixpanel `failure_phase` for a status/polling Failed event.
267
- */
268
- export const getStatusFailurePhase = (hashPresence) => {
269
- if (hashPresence.destination_hash_present) {
270
- return FailurePhase.DestinationExecution;
271
- }
272
- if (hashPresence.source_hash_present) {
273
- return FailurePhase.SourceExecution;
274
- }
275
- return FailurePhase.Poll;
276
- };
277
- /**
278
- * Telemetry for Failed events emitted from the submit catch (no tx hash yet).
279
- *
280
- * @param error - The thrown value from submit.
281
- * @returns Phase, error code, and hash-presence flags.
282
- */
283
- export const getSubmitFailureTelemetry = (error) => {
284
- return {
285
- failure_phase: FailurePhase.Broadcast,
286
- error_code: getSubmitErrorCode(error),
287
- source_hash_present: false,
288
- destination_hash_present: false,
289
- };
290
- };
291
- /**
292
- * Telemetry for Failed events derived from a status poll.
293
- *
294
- * @param sourceHash - Source tx hash if known.
295
- * @param destinationHash - Destination tx hash if known.
296
- * @returns Phase, error code, and hash-presence flags.
297
- */
298
- export const getStatusFailureTelemetry = (sourceHash, destinationHash) => {
299
- const hashPresence = getHashPresenceProperties(sourceHash, destinationHash);
300
- return {
301
- ...hashPresence,
302
- failure_phase: getStatusFailurePhase(hashPresence),
303
- error_code: SwapBridgeErrorCode.StatusFailedWithoutReason,
304
- };
305
- };
306
236
  //# sourceMappingURL=metrics.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.mjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\nimport {\n StatusTypes,\n getAccountHardwareType,\n formatChainIdToHex,\n isEthUsdt,\n formatChainIdToCaip,\n formatProviderLabel,\n isCustomSlippage,\n getSwapType,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n MetaMetricsSwapsEventSource,\n FeatureId,\n UnifiedSwapBridgeEventName,\n FailurePhase,\n SwapBridgeErrorCode,\n} from '@metamask/bridge-controller';\nimport type {\n AccountHardwareType,\n QuoteFetchData,\n QuoteMetadata,\n QuoteResponseV1,\n TxStatusData,\n RequestParams,\n TradeData,\n RequestMetadata,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n HashPresenceProperties,\n FailureTelemetryProperties,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { CaipAssetType, Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types.js';\nimport { calcActualGasUsed } from './gas.js';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount.js';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime =\n txMeta?.type === TransactionType.swap\n ? txMeta?.time\n : historyItem.completionTime;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n token_security_type_destination:\n historyItem.tokenSecurityTypeDestination ?? null,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n batchSellTrades?: BatchSellTradesResponse | null,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.total?.usd ?? 0),\n gas_included:\n quoteResponse.quote.gasIncluded ?? batchSellTrades?.gasIncluded ?? false,\n gas_included_7702:\n quoteResponse.quote.gasIncluded7702 ??\n batchSellTrades?.gasIncluded7702 ??\n false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse?.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponseV1['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\n/**\n * Before the tx is confirmed, its data is not available in txHistory\n * The quote is used to populate event properties before confirmation\n *\n * @param quoteResponse - The quote response\n * @param isStxEnabled - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param accountHardwareType - The hardware wallet type used to submit the tx, or null if not a hardware wallet\n * @param location - The entry point from which the user initiated the swap or bridge (e.g. Main View, Token View, Trending Explore)\n * @param abTests - Legacy A/B test context for `ab_tests` (backward compatibility)\n * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)\n * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.\n * @param batchSellTrades - The batch sell trades response\n * @param batchId - The batch ID of the transaction batch.\n * @param quotesReceivedContext - The client context captured when quotes were received.\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n isStxEnabled: boolean,\n accountHardwareType: AccountHardwareType,\n location?: MetaMetricsSwapsEventSource,\n abTests?: Record<string, string>,\n activeAbTests?: { key: string; value: string }[],\n tokenSecurityTypeDestination?: string | null,\n batchSellTrades?: BatchSellTradesResponse | null,\n batchId?: Hex,\n quotesReceivedContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse, batchSellTrades),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n token_address_source: quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n token_address_destination: quote.destAsset.assetId,\n token_security_type_destination: tokenSecurityTypeDestination ?? null,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type: getSwapType(\n quoteResponse.quote.srcChainId,\n quoteResponse.quote.destChainId,\n ),\n usd_amount_source: Number(quoteResponse?.sentAmount?.usd ?? 0),\n stx_enabled: isStxEnabled,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n slippage_limit:\n quotesReceivedContext?.slippage_limit ?? quote.slippage ?? 0,\n custom_slippage: quotesReceivedContext?.custom_slippage ?? false,\n location,\n ...(abTests &&\n Object.keys(abTests).length > 0 && {\n ab_tests: abTests,\n }),\n ...(activeAbTests &&\n activeAbTests.length > 0 && {\n active_ab_tests: activeAbTests,\n }),\n ...(batchId ? { batch_id: batchId } : {}),\n feature_id: quoteResponse.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n gas_included_7702: historyItem.quote.gasIncluded7702 ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const {\n quote,\n slippagePercentage,\n isStxEnabled,\n customSlippage,\n batchSellData,\n featureId,\n } = historyItem;\n const accountHardwareType = getAccountHardwareType(account);\n const isBatchSell =\n Boolean(batchSellData) || featureId === FeatureId.BATCH_SELL;\n const isUnifiedSwapBridge =\n featureId === undefined || featureId === FeatureId.UNIFIED_SWAP_BRIDGE;\n let inferredCustomSlippage = false;\n if (isBatchSell) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage ?? 0);\n } else if (!isUnifiedSwapBridge) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage);\n }\n\n return {\n slippage_limit: slippagePercentage ?? 0,\n custom_slippage: customSlippage ?? inferredCustomSlippage,\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @param account - The account that submitted the transaction\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n const accountHardwareType = getAccountHardwareType(account);\n\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: [\n `Transaction ${transactionMeta.status}`,\n transactionMeta.error?.message,\n ]\n .filter(Boolean)\n .join('. '),\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 0,\n slippage_limit: 0,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_security_type_destination: null,\n custom_slippage: false,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n gas_included_7702: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),\n };\n};\n\n/**\n * Classify a thrown value from submit (sign/broadcast) catch paths.\n *\n * @param error - The thrown value from submit.\n * @returns The Mixpanel `error_code`.\n */\nexport const getSubmitErrorCode = (error: unknown): SwapBridgeErrorCode => {\n if (error === undefined || error === null) {\n return SwapBridgeErrorCode.MissingErrorObject;\n }\n if (error instanceof Error) {\n return SwapBridgeErrorCode.Unknown;\n }\n return SwapBridgeErrorCode.NonErrorRejection;\n};\n\n/**\n * @param sourceHash - Source tx hash if known at emit time.\n * @param destinationHash - Destination tx hash if known at emit time.\n * @returns Boolean hash-presence properties.\n */\nexport const getHashPresenceProperties = (\n sourceHash?: string | null,\n destinationHash?: string | null,\n): HashPresenceProperties => {\n return {\n source_hash_present: Boolean(sourceHash),\n destination_hash_present: Boolean(destinationHash),\n };\n};\n\n/**\n * Prefer destination_execution over source_execution over poll.\n *\n * @param hashPresence - Hash presence at emit time.\n * @returns The Mixpanel `failure_phase` for a status/polling Failed event.\n */\nexport const getStatusFailurePhase = (\n hashPresence: HashPresenceProperties,\n): FailurePhase => {\n if (hashPresence.destination_hash_present) {\n return FailurePhase.DestinationExecution;\n }\n if (hashPresence.source_hash_present) {\n return FailurePhase.SourceExecution;\n }\n return FailurePhase.Poll;\n};\n\n/**\n * Telemetry for Failed events emitted from the submit catch (no tx hash yet).\n *\n * @param error - The thrown value from submit.\n * @returns Phase, error code, and hash-presence flags.\n */\nexport const getSubmitFailureTelemetry = (\n error: unknown,\n): FailureTelemetryProperties => {\n return {\n failure_phase: FailurePhase.Broadcast,\n error_code: getSubmitErrorCode(error),\n source_hash_present: false,\n destination_hash_present: false,\n };\n};\n\n/**\n * Telemetry for Failed events derived from a status poll.\n *\n * @param sourceHash - Source tx hash if known.\n * @param destinationHash - Destination tx hash if known.\n * @returns Phase, error code, and hash-presence flags.\n */\nexport const getStatusFailureTelemetry = (\n sourceHash?: string | null,\n destinationHash?: string | null,\n): FailureTelemetryProperties => {\n const hashPresence = getHashPresenceProperties(sourceHash, destinationHash);\n return {\n ...hashPresence,\n failure_phase: getStatusFailurePhase(hashPresence),\n error_code: SwapBridgeErrorCode.StatusFailedWithoutReason,\n };\n};\n"]}
1
+ {"version":3,"file":"metrics.mjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\nimport {\n StatusTypes,\n getAccountHardwareType,\n formatChainIdToHex,\n isEthUsdt,\n formatChainIdToCaip,\n formatProviderLabel,\n isCustomSlippage,\n getSwapType,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n MetaMetricsSwapsEventSource,\n FeatureId,\n UnifiedSwapBridgeEventName,\n} from '@metamask/bridge-controller';\nimport type {\n AccountHardwareType,\n QuoteFetchData,\n QuoteMetadata,\n QuoteResponseV1,\n TxStatusData,\n RequestParams,\n TradeData,\n RequestMetadata,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { CaipAssetType, Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types.js';\nimport { calcActualGasUsed } from './gas.js';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount.js';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime =\n txMeta?.type === TransactionType.swap\n ? txMeta?.time\n : historyItem.completionTime;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n token_security_type_destination:\n historyItem.tokenSecurityTypeDestination ?? null,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n batchSellTrades?: BatchSellTradesResponse | null,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.total?.usd ?? 0),\n gas_included:\n quoteResponse.quote.gasIncluded ?? batchSellTrades?.gasIncluded ?? false,\n gas_included_7702:\n quoteResponse.quote.gasIncluded7702 ??\n batchSellTrades?.gasIncluded7702 ??\n false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse?.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponseV1['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\n/**\n * Before the tx is confirmed, its data is not available in txHistory\n * The quote is used to populate event properties before confirmation\n *\n * @param quoteResponse - The quote response\n * @param isStxEnabled - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param accountHardwareType - The hardware wallet type used to submit the tx, or null if not a hardware wallet\n * @param location - The entry point from which the user initiated the swap or bridge (e.g. Main View, Token View, Trending Explore)\n * @param abTests - Legacy A/B test context for `ab_tests` (backward compatibility)\n * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)\n * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.\n * @param batchSellTrades - The batch sell trades response\n * @param batchId - The batch ID of the transaction batch.\n * @param quotesReceivedContext - The client context captured when quotes were received.\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponseV1 & QuoteMetadata,\n isStxEnabled: boolean,\n accountHardwareType: AccountHardwareType,\n location?: MetaMetricsSwapsEventSource,\n abTests?: Record<string, string>,\n activeAbTests?: { key: string; value: string }[],\n tokenSecurityTypeDestination?: string | null,\n batchSellTrades?: BatchSellTradesResponse | null,\n batchId?: Hex,\n quotesReceivedContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse, batchSellTrades),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n token_address_source: quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n token_address_destination: quote.destAsset.assetId,\n token_security_type_destination: tokenSecurityTypeDestination ?? null,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type: getSwapType(\n quoteResponse.quote.srcChainId,\n quoteResponse.quote.destChainId,\n ),\n usd_amount_source: Number(quoteResponse?.sentAmount?.usd ?? 0),\n stx_enabled: isStxEnabled,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n slippage_limit:\n quotesReceivedContext?.slippage_limit ?? quote.slippage ?? 0,\n custom_slippage: quotesReceivedContext?.custom_slippage ?? false,\n location,\n ...(abTests &&\n Object.keys(abTests).length > 0 && {\n ab_tests: abTests,\n }),\n ...(activeAbTests &&\n activeAbTests.length > 0 && {\n active_ab_tests: activeAbTests,\n }),\n ...(batchId ? { batch_id: batchId } : {}),\n feature_id: quoteResponse.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n gas_included_7702: historyItem.quote.gasIncluded7702 ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const {\n quote,\n slippagePercentage,\n isStxEnabled,\n customSlippage,\n batchSellData,\n featureId,\n } = historyItem;\n const accountHardwareType = getAccountHardwareType(account);\n const isBatchSell =\n Boolean(batchSellData) || featureId === FeatureId.BATCH_SELL;\n const isUnifiedSwapBridge =\n featureId === undefined || featureId === FeatureId.UNIFIED_SWAP_BRIDGE;\n let inferredCustomSlippage = false;\n if (isBatchSell) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage ?? 0);\n } else if (!isUnifiedSwapBridge) {\n inferredCustomSlippage = isCustomSlippage(slippagePercentage);\n }\n\n return {\n slippage_limit: slippagePercentage ?? 0,\n custom_slippage: customSlippage ?? inferredCustomSlippage,\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @param account - The account that submitted the transaction\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n const accountHardwareType = getAccountHardwareType(account);\n\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: [\n `Transaction ${transactionMeta.status}`,\n transactionMeta.error?.message,\n ]\n .filter(Boolean)\n .join('. '),\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 0,\n slippage_limit: 0,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_security_type_destination: null,\n custom_slippage: false,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n gas_included_7702: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/bridge-status-controller",
3
- "version": "75.4.0-preview-00a181c",
3
+ "version": "75.4.0-preview-a302de5c3",
4
4
  "description": "Manages bridge-related status fetching functionality for MetaMask",
5
5
  "keywords": [
6
6
  "Ethereum",