@metamask/bridge-controller 70.1.1 → 71.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +46 -7
  2. package/dist/bridge-controller.cjs +36 -11
  3. package/dist/bridge-controller.cjs.map +1 -1
  4. package/dist/bridge-controller.d.cts +9 -1
  5. package/dist/bridge-controller.d.cts.map +1 -1
  6. package/dist/bridge-controller.d.mts +9 -1
  7. package/dist/bridge-controller.d.mts.map +1 -1
  8. package/dist/bridge-controller.mjs +37 -12
  9. package/dist/bridge-controller.mjs.map +1 -1
  10. package/dist/constants/bridge.cjs +1 -0
  11. package/dist/constants/bridge.cjs.map +1 -1
  12. package/dist/constants/bridge.d.cts.map +1 -1
  13. package/dist/constants/bridge.d.mts.map +1 -1
  14. package/dist/constants/bridge.mjs +1 -0
  15. package/dist/constants/bridge.mjs.map +1 -1
  16. package/dist/index.cjs +3 -2
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +2 -2
  19. package/dist/index.d.cts.map +1 -1
  20. package/dist/index.d.mts +2 -2
  21. package/dist/index.d.mts.map +1 -1
  22. package/dist/index.mjs +1 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/selectors.d.cts +22 -0
  25. package/dist/selectors.d.cts.map +1 -1
  26. package/dist/selectors.d.mts +22 -0
  27. package/dist/selectors.d.mts.map +1 -1
  28. package/dist/types.cjs.map +1 -1
  29. package/dist/types.d.cts +10 -2
  30. package/dist/types.d.cts.map +1 -1
  31. package/dist/types.d.mts +10 -2
  32. package/dist/types.d.mts.map +1 -1
  33. package/dist/types.mjs.map +1 -1
  34. package/dist/utils/feature-flags.d.cts +1 -0
  35. package/dist/utils/feature-flags.d.cts.map +1 -1
  36. package/dist/utils/feature-flags.d.mts +1 -0
  37. package/dist/utils/feature-flags.d.mts.map +1 -1
  38. package/dist/utils/metrics/constants.cjs +1 -0
  39. package/dist/utils/metrics/constants.cjs.map +1 -1
  40. package/dist/utils/metrics/constants.d.cts +1 -0
  41. package/dist/utils/metrics/constants.d.cts.map +1 -1
  42. package/dist/utils/metrics/constants.d.mts +1 -0
  43. package/dist/utils/metrics/constants.d.mts.map +1 -1
  44. package/dist/utils/metrics/constants.mjs +1 -0
  45. package/dist/utils/metrics/constants.mjs.map +1 -1
  46. package/dist/utils/metrics/properties.cjs +32 -3
  47. package/dist/utils/metrics/properties.cjs.map +1 -1
  48. package/dist/utils/metrics/properties.d.cts +15 -2
  49. package/dist/utils/metrics/properties.d.cts.map +1 -1
  50. package/dist/utils/metrics/properties.d.mts +15 -2
  51. package/dist/utils/metrics/properties.d.mts.map +1 -1
  52. package/dist/utils/metrics/properties.mjs +30 -2
  53. package/dist/utils/metrics/properties.mjs.map +1 -1
  54. package/dist/utils/metrics/types.cjs.map +1 -1
  55. package/dist/utils/metrics/types.d.cts +8 -4
  56. package/dist/utils/metrics/types.d.cts.map +1 -1
  57. package/dist/utils/metrics/types.d.mts +8 -4
  58. package/dist/utils/metrics/types.d.mts.map +1 -1
  59. package/dist/utils/metrics/types.mjs.map +1 -1
  60. package/dist/utils/validators.cjs +3 -0
  61. package/dist/utils/validators.cjs.map +1 -1
  62. package/dist/utils/validators.d.cts +6 -1
  63. package/dist/utils/validators.d.cts.map +1 -1
  64. package/dist/utils/validators.d.mts +6 -1
  65. package/dist/utils/validators.d.mts.map +1 -1
  66. package/dist/utils/validators.mjs +3 -0
  67. package/dist/utils/validators.mjs.map +1 -1
  68. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getQuotesReceivedProperties = exports.isCustomSlippage = exports.isHardwareWallet = exports.getRequestParams = exports.formatProviderLabel = exports.getSwapTypeFromQuote = exports.getSwapType = exports.toInputChangedPropertyValue = exports.toInputChangedPropertyKey = void 0;
3
+ exports.getQuotesReceivedProperties = exports.isCustomSlippage = exports.isHardwareWallet = exports.getAccountHardwareType = exports.getRequestParams = exports.formatProviderLabel = exports.getSwapTypeFromQuote = exports.getSwapType = exports.toInputChangedPropertyValue = exports.toInputChangedPropertyKey = void 0;
4
4
  const bridge_1 = require("../../constants/bridge.cjs");
5
5
  const types_1 = require("../../types.cjs");
6
6
  const bridge_2 = require("../bridge.cjs");
@@ -37,7 +37,19 @@ const getSwapTypeFromQuote = (quoteRequest) => {
37
37
  exports.getSwapTypeFromQuote = getSwapTypeFromQuote;
38
38
  const formatProviderLabel = ({ bridgeId, bridges, }) => `${bridgeId}_${bridges[0]}`;
39
39
  exports.formatProviderLabel = formatProviderLabel;
40
- const getRequestParams = ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }) => {
40
+ /**
41
+ * @param quoteRequest - The current quote request used to derive chain and token identity fields.
42
+ * @param quoteRequest.srcChainId - Source chain id of the quote request.
43
+ * @param quoteRequest.destChainId - Destination chain id of the quote request.
44
+ * @param quoteRequest.srcTokenAddress - Source token address of the quote request.
45
+ * @param quoteRequest.destTokenAddress - Destination token address of the quote request.
46
+ * @param tokenSecurityTypeDestination - The security classification of the destination token,
47
+ * supplied by the client (e.g. from token security/scanning data). Pass `null` when no
48
+ * security data is available for the selected destination token.
49
+ * @returns The analytics request params derived from the quote request, minus token symbols
50
+ * which the caller provides separately.
51
+ */
52
+ const getRequestParams = ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }, tokenSecurityTypeDestination) => {
41
53
  // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain
42
54
  // This also doesn't happen at runtime since the quote request is validated before metrics are published
43
55
  const srcChainIdCaip = (0, caip_formatters_1.formatChainIdToCaip)(srcChainId ?? types_1.ChainId.ETH);
@@ -52,11 +64,28 @@ const getRequestParams = ({ srcChainId, destChainId, srcTokenAddress, destTokenA
52
64
  token_address_destination: destTokenAddress
53
65
  ? ((0, caip_formatters_1.formatAddressToAssetId)(destTokenAddress, destChainId ?? srcChainIdCaip) ?? null)
54
66
  : null,
67
+ token_security_type_destination: tokenSecurityTypeDestination,
55
68
  };
56
69
  };
57
70
  exports.getRequestParams = getRequestParams;
71
+ const getAccountHardwareType = (selectedAccount) => {
72
+ // Unified bridge analytics only support the schema enum values for hardware accounts.
73
+ switch (selectedAccount?.metadata?.keyring.type) {
74
+ case 'Ledger Hardware':
75
+ return 'Ledger';
76
+ case 'Trezor Hardware':
77
+ return 'Trezor';
78
+ case 'QR Hardware Wallet Device':
79
+ return 'QR Hardware';
80
+ case 'Lattice Hardware':
81
+ return 'Lattice';
82
+ default:
83
+ return null;
84
+ }
85
+ };
86
+ exports.getAccountHardwareType = getAccountHardwareType;
58
87
  const isHardwareWallet = (selectedAccount) => {
59
- return selectedAccount?.metadata?.keyring.type?.includes('Hardware') ?? false;
88
+ return (0, exports.getAccountHardwareType)(selectedAccount) !== null;
60
89
  };
61
90
  exports.isHardwareWallet = isHardwareWallet;
62
91
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"properties.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge';\nimport { ChainId } from '../../types';\nimport type {\n GenericQuoteRequest,\n QuoteMetadata,\n QuoteRequest,\n QuoteResponse,\n TxData,\n} from '../../types';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters';\nimport { MetricsSwapType } from './constants';\nimport type {\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n bridgeId,\n bridges,\n}: QuoteResponse<TxData | string>['quote']): `${string}_${string}` =>\n `${bridgeId}_${bridges[0]}`;\n\nexport const getRequestParams = ({\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n}: Partial<GenericQuoteRequest>): Omit<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n };\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return selectedAccount?.metadata?.keyring.type?.includes('Hardware') ?? false;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>),\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>),\n usdBalanceSource?: number,\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n warnings,\n price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),\n };\n};\n"]}
1
+ {"version":3,"file":"properties.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge';\nimport { ChainId } from '../../types';\nimport type {\n GenericQuoteRequest,\n QuoteMetadata,\n QuoteRequest,\n QuoteResponse,\n TxData,\n} from '../../types';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters';\nimport { MetricsSwapType } from './constants';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n bridgeId,\n bridges,\n}: QuoteResponse<TxData | string>['quote']): `${string}_${string}` =>\n `${bridgeId}_${bridges[0]}`;\n\n/**\n * @param quoteRequest - The current quote request used to derive chain and token identity fields.\n * @param quoteRequest.srcChainId - Source chain id of the quote request.\n * @param quoteRequest.destChainId - Destination chain id of the quote request.\n * @param quoteRequest.srcTokenAddress - Source token address of the quote request.\n * @param quoteRequest.destTokenAddress - Destination token address of the quote request.\n * @param tokenSecurityTypeDestination - The security classification of the destination token,\n * supplied by the client (e.g. from token security/scanning data). Pass `null` when no\n * security data is available for the selected destination token.\n * @returns The analytics request params derived from the quote request, minus token symbols\n * which the caller provides separately.\n */\nexport const getRequestParams = (\n {\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n }: Partial<GenericQuoteRequest>,\n tokenSecurityTypeDestination: string | null,\n): Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n token_security_type_destination: tokenSecurityTypeDestination,\n };\n};\n\nexport const getAccountHardwareType = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n): AccountHardwareType => {\n // Unified bridge analytics only support the schema enum values for hardware accounts.\n switch (selectedAccount?.metadata?.keyring.type) {\n case 'Ledger Hardware':\n return 'Ledger';\n case 'Trezor Hardware':\n return 'Trezor';\n case 'QR Hardware Wallet Device':\n return 'QR Hardware';\n case 'Lattice Hardware':\n return 'Lattice';\n default:\n return null;\n }\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return getAccountHardwareType(selectedAccount) !== null;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>),\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>),\n usdBalanceSource?: number,\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n warnings,\n price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),\n };\n};\n"]}
@@ -1,13 +1,26 @@
1
1
  import type { AccountsControllerState } from "@metamask/accounts-controller";
2
2
  import type { GenericQuoteRequest, QuoteMetadata, QuoteRequest, QuoteResponse, TxData } from "../../types.cjs";
3
3
  import { MetricsSwapType } from "./constants.cjs";
4
- import type { InputKeys, InputValues, QuoteWarning, RequestParams } from "./types.cjs";
4
+ import type { AccountHardwareType, InputKeys, InputValues, QuoteWarning, RequestParams } from "./types.cjs";
5
5
  export declare const toInputChangedPropertyKey: Partial<Record<keyof QuoteRequest, InputKeys>>;
6
6
  export declare const toInputChangedPropertyValue: Partial<Record<keyof typeof toInputChangedPropertyKey, (input_value: Partial<GenericQuoteRequest>) => InputValues[keyof InputValues] | undefined>>;
7
7
  export declare const getSwapType: (srcChainId?: GenericQuoteRequest['srcChainId'], destChainId?: GenericQuoteRequest['destChainId']) => MetricsSwapType;
8
8
  export declare const getSwapTypeFromQuote: (quoteRequest: Partial<GenericQuoteRequest>) => MetricsSwapType;
9
9
  export declare const formatProviderLabel: ({ bridgeId, bridges, }: QuoteResponse<TxData | string>['quote']) => `${string}_${string}`;
10
- export declare const getRequestParams: ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }: Partial<GenericQuoteRequest>) => Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'>;
10
+ /**
11
+ * @param quoteRequest - The current quote request used to derive chain and token identity fields.
12
+ * @param quoteRequest.srcChainId - Source chain id of the quote request.
13
+ * @param quoteRequest.destChainId - Destination chain id of the quote request.
14
+ * @param quoteRequest.srcTokenAddress - Source token address of the quote request.
15
+ * @param quoteRequest.destTokenAddress - Destination token address of the quote request.
16
+ * @param tokenSecurityTypeDestination - The security classification of the destination token,
17
+ * supplied by the client (e.g. from token security/scanning data). Pass `null` when no
18
+ * security data is available for the selected destination token.
19
+ * @returns The analytics request params derived from the quote request, minus token symbols
20
+ * which the caller provides separately.
21
+ */
22
+ export declare const getRequestParams: ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }: Partial<GenericQuoteRequest>, tokenSecurityTypeDestination: string | null) => Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'>;
23
+ export declare const getAccountHardwareType: (selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string]) => AccountHardwareType;
11
24
  export declare const isHardwareWallet: (selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string]) => boolean;
12
25
  /**
13
26
  * @param slippage - The slippage percentage
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,MAAM,EACP,wBAAoB;AAMrB,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAgB;AAEjB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,QAAQ,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAG7B,cAAc,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,MAAM,IAAI,MAAM,EACnC,CAAC;AAE9B,eAAO,MAAM,gBAAgB,oEAK1B,QAAQ,mBAAmB,CAAC,KAAG,KAChC,aAAa,EACb,qBAAqB,GAAG,0BAA0B,CAoBnD,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,aAClD,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,qBAC/C,MAAM;;;;;;;;;;;;CAoB1B,CAAC"}
1
+ {"version":3,"file":"properties.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,MAAM,EACP,wBAAoB;AAMrB,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAgB;AAEjB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,QAAQ,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAG7B,cAAc,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,MAAM,IAAI,MAAM,EACnC,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,oEAMxB,QAAQ,mBAAmB,CAAC,gCACD,MAAM,GAAG,IAAI,KAC1C,KAAK,aAAa,EAAE,qBAAqB,GAAG,0BAA0B,CAoBxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBACf,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAChF,mBAcF,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,aAClD,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,qBAC/C,MAAM;;;;;;;;;;;;CAoB1B,CAAC"}
@@ -1,13 +1,26 @@
1
1
  import type { AccountsControllerState } from "@metamask/accounts-controller";
2
2
  import type { GenericQuoteRequest, QuoteMetadata, QuoteRequest, QuoteResponse, TxData } from "../../types.mjs";
3
3
  import { MetricsSwapType } from "./constants.mjs";
4
- import type { InputKeys, InputValues, QuoteWarning, RequestParams } from "./types.mjs";
4
+ import type { AccountHardwareType, InputKeys, InputValues, QuoteWarning, RequestParams } from "./types.mjs";
5
5
  export declare const toInputChangedPropertyKey: Partial<Record<keyof QuoteRequest, InputKeys>>;
6
6
  export declare const toInputChangedPropertyValue: Partial<Record<keyof typeof toInputChangedPropertyKey, (input_value: Partial<GenericQuoteRequest>) => InputValues[keyof InputValues] | undefined>>;
7
7
  export declare const getSwapType: (srcChainId?: GenericQuoteRequest['srcChainId'], destChainId?: GenericQuoteRequest['destChainId']) => MetricsSwapType;
8
8
  export declare const getSwapTypeFromQuote: (quoteRequest: Partial<GenericQuoteRequest>) => MetricsSwapType;
9
9
  export declare const formatProviderLabel: ({ bridgeId, bridges, }: QuoteResponse<TxData | string>['quote']) => `${string}_${string}`;
10
- export declare const getRequestParams: ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }: Partial<GenericQuoteRequest>) => Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'>;
10
+ /**
11
+ * @param quoteRequest - The current quote request used to derive chain and token identity fields.
12
+ * @param quoteRequest.srcChainId - Source chain id of the quote request.
13
+ * @param quoteRequest.destChainId - Destination chain id of the quote request.
14
+ * @param quoteRequest.srcTokenAddress - Source token address of the quote request.
15
+ * @param quoteRequest.destTokenAddress - Destination token address of the quote request.
16
+ * @param tokenSecurityTypeDestination - The security classification of the destination token,
17
+ * supplied by the client (e.g. from token security/scanning data). Pass `null` when no
18
+ * security data is available for the selected destination token.
19
+ * @returns The analytics request params derived from the quote request, minus token symbols
20
+ * which the caller provides separately.
21
+ */
22
+ export declare const getRequestParams: ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }: Partial<GenericQuoteRequest>, tokenSecurityTypeDestination: string | null) => Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'>;
23
+ export declare const getAccountHardwareType: (selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string]) => AccountHardwareType;
11
24
  export declare const isHardwareWallet: (selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string]) => boolean;
12
25
  /**
13
26
  * @param slippage - The slippage percentage
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,MAAM,EACP,wBAAoB;AAMrB,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAgB;AAEjB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,QAAQ,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAG7B,cAAc,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,MAAM,IAAI,MAAM,EACnC,CAAC;AAE9B,eAAO,MAAM,gBAAgB,oEAK1B,QAAQ,mBAAmB,CAAC,KAAG,KAChC,aAAa,EACb,qBAAqB,GAAG,0BAA0B,CAoBnD,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,aAClD,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,qBAC/C,MAAM;;;;;;;;;;;;CAoB1B,CAAC"}
1
+ {"version":3,"file":"properties.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,MAAM,EACP,wBAAoB;AAMrB,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAgB;AAEjB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,QAAQ,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAG7B,cAAc,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,MAAM,IAAI,MAAM,EACnC,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,oEAMxB,QAAQ,mBAAmB,CAAC,gCACD,MAAM,GAAG,IAAI,KAC1C,KAAK,aAAa,EAAE,qBAAqB,GAAG,0BAA0B,CAoBxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBACf,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAChF,mBAcF,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,aAClD,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,qBAC/C,MAAM;;;;;;;;;;;;CAoB1B,CAAC"}
@@ -31,7 +31,19 @@ export const getSwapTypeFromQuote = (quoteRequest) => {
31
31
  return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);
32
32
  };
33
33
  export const formatProviderLabel = ({ bridgeId, bridges, }) => `${bridgeId}_${bridges[0]}`;
34
- export const getRequestParams = ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }) => {
34
+ /**
35
+ * @param quoteRequest - The current quote request used to derive chain and token identity fields.
36
+ * @param quoteRequest.srcChainId - Source chain id of the quote request.
37
+ * @param quoteRequest.destChainId - Destination chain id of the quote request.
38
+ * @param quoteRequest.srcTokenAddress - Source token address of the quote request.
39
+ * @param quoteRequest.destTokenAddress - Destination token address of the quote request.
40
+ * @param tokenSecurityTypeDestination - The security classification of the destination token,
41
+ * supplied by the client (e.g. from token security/scanning data). Pass `null` when no
42
+ * security data is available for the selected destination token.
43
+ * @returns The analytics request params derived from the quote request, minus token symbols
44
+ * which the caller provides separately.
45
+ */
46
+ export const getRequestParams = ({ srcChainId, destChainId, srcTokenAddress, destTokenAddress, }, tokenSecurityTypeDestination) => {
35
47
  // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain
36
48
  // This also doesn't happen at runtime since the quote request is validated before metrics are published
37
49
  const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);
@@ -46,10 +58,26 @@ export const getRequestParams = ({ srcChainId, destChainId, srcTokenAddress, des
46
58
  token_address_destination: destTokenAddress
47
59
  ? (formatAddressToAssetId(destTokenAddress, destChainId ?? srcChainIdCaip) ?? null)
48
60
  : null,
61
+ token_security_type_destination: tokenSecurityTypeDestination,
49
62
  };
50
63
  };
64
+ export const getAccountHardwareType = (selectedAccount) => {
65
+ // Unified bridge analytics only support the schema enum values for hardware accounts.
66
+ switch (selectedAccount?.metadata?.keyring.type) {
67
+ case 'Ledger Hardware':
68
+ return 'Ledger';
69
+ case 'Trezor Hardware':
70
+ return 'Trezor';
71
+ case 'QR Hardware Wallet Device':
72
+ return 'QR Hardware';
73
+ case 'Lattice Hardware':
74
+ return 'Lattice';
75
+ default:
76
+ return null;
77
+ }
78
+ };
51
79
  export const isHardwareWallet = (selectedAccount) => {
52
- return selectedAccount?.metadata?.keyring.type?.includes('Hardware') ?? false;
80
+ return getAccountHardwareType(selectedAccount) !== null;
53
81
  };
54
82
  /**
55
83
  * @param slippage - The slippage percentage
@@ -1 +1 @@
1
- {"version":3,"file":"properties.mjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge';\nimport { ChainId } from '../../types';\nimport type {\n GenericQuoteRequest,\n QuoteMetadata,\n QuoteRequest,\n QuoteResponse,\n TxData,\n} from '../../types';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters';\nimport { MetricsSwapType } from './constants';\nimport type {\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n bridgeId,\n bridges,\n}: QuoteResponse<TxData | string>['quote']): `${string}_${string}` =>\n `${bridgeId}_${bridges[0]}`;\n\nexport const getRequestParams = ({\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n}: Partial<GenericQuoteRequest>): Omit<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n };\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return selectedAccount?.metadata?.keyring.type?.includes('Hardware') ?? false;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>),\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>),\n usdBalanceSource?: number,\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n warnings,\n price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),\n };\n};\n"]}
1
+ {"version":3,"file":"properties.mjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge';\nimport { ChainId } from '../../types';\nimport type {\n GenericQuoteRequest,\n QuoteMetadata,\n QuoteRequest,\n QuoteResponse,\n TxData,\n} from '../../types';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters';\nimport { MetricsSwapType } from './constants';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n bridgeId,\n bridges,\n}: QuoteResponse<TxData | string>['quote']): `${string}_${string}` =>\n `${bridgeId}_${bridges[0]}`;\n\n/**\n * @param quoteRequest - The current quote request used to derive chain and token identity fields.\n * @param quoteRequest.srcChainId - Source chain id of the quote request.\n * @param quoteRequest.destChainId - Destination chain id of the quote request.\n * @param quoteRequest.srcTokenAddress - Source token address of the quote request.\n * @param quoteRequest.destTokenAddress - Destination token address of the quote request.\n * @param tokenSecurityTypeDestination - The security classification of the destination token,\n * supplied by the client (e.g. from token security/scanning data). Pass `null` when no\n * security data is available for the selected destination token.\n * @returns The analytics request params derived from the quote request, minus token symbols\n * which the caller provides separately.\n */\nexport const getRequestParams = (\n {\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n }: Partial<GenericQuoteRequest>,\n tokenSecurityTypeDestination: string | null,\n): Omit<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n token_security_type_destination: tokenSecurityTypeDestination,\n };\n};\n\nexport const getAccountHardwareType = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n): AccountHardwareType => {\n // Unified bridge analytics only support the schema enum values for hardware accounts.\n switch (selectedAccount?.metadata?.keyring.type) {\n case 'Ledger Hardware':\n return 'Ledger';\n case 'Trezor Hardware':\n return 'Trezor';\n case 'QR Hardware Wallet Device':\n return 'QR Hardware';\n case 'Lattice Hardware':\n return 'Lattice';\n default:\n return null;\n }\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return getAccountHardwareType(selectedAccount) !== null;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>),\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>),\n usdBalanceSource?: number,\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n warnings,\n price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { CaipAssetType, CaipChainId } from '@metamask/utils';\n\nimport type { SortOrder, StatusTypes } from '../../types';\nimport type {\n UnifiedSwapBridgeEventName,\n MetaMetricsSwapsEventSource,\n MetricsActionType,\n MetricsSwapType,\n PollingStatus,\n} from './constants';\n\n/**\n * These properties map to properties required by the segment-schema. For example: https://github.com/Consensys/segment-schema/blob/main/libraries/properties/cross-chain-swaps-action.yaml\n */\nexport type RequestParams = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n token_symbol_source: string;\n token_symbol_destination: string | null;\n token_address_source: CaipAssetType;\n token_address_destination: CaipAssetType | null;\n};\n\nexport type RequestMetadata = {\n slippage_limit?: number; // undefined === auto\n custom_slippage: boolean;\n usd_amount_source: number; // Use quoteResponse when available\n stx_enabled: boolean;\n is_hardware_wallet: boolean;\n swap_type: MetricsSwapType;\n security_warnings: string[];\n};\n\nexport type QuoteFetchData = {\n can_submit: boolean;\n best_quote_provider?: `${string}_${string}`;\n quotes_count: number;\n quotes_list: `${string}_${string}`[];\n initial_load_time_all_quotes: number;\n price_impact: number;\n has_gas_included_quote: boolean;\n};\n\nexport type TradeData = {\n usd_quoted_gas: number;\n gas_included: boolean;\n gas_included_7702: boolean;\n quoted_time_minutes: number;\n usd_quoted_return: number;\n provider: `${string}_${string}`;\n};\n\nexport type TxStatusData = {\n allowance_reset_transaction?: StatusTypes;\n approval_transaction?: StatusTypes;\n source_transaction?: StatusTypes;\n destination_transaction?: StatusTypes;\n};\n\nexport type InputKeys =\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n\nexport type InputValues = {\n token_source: CaipAssetType;\n token_destination: CaipAssetType;\n chain_source: CaipChainId;\n chain_destination: CaipChainId;\n slippage: number;\n token_amount_source: string;\n};\n\nexport type QuoteWarning =\n | 'low_return'\n | 'no_quotes'\n | 'insufficient_gas_balance'\n | 'insufficient_gas_for_selected_quote'\n | 'insufficient_balance'\n | 'price_impact'\n | 'tx_alert';\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * This is the base type without the `location` property which is added to all events\n * via the RequiredEventContextFromClient mapped type.\n */\ntype RequiredEventContextFromClientBase = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n >;\n // When type is object, the payload can be anything\n [UnifiedSwapBridgeEventName.PageViewed]: object;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input:\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n input_value: InputValues[keyof InputValues];\n input_amount_preset?: string;\n };\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n token_address_source: RequestParams['token_address_source'];\n token_address_destination: RequestParams['token_address_destination'];\n chain_id_source: RequestParams['chain_id_source'];\n chain_id_destination: RequestParams['chain_id_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n [UnifiedSwapBridgeEventName.QuotesRequested]: Pick<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n };\n [UnifiedSwapBridgeEventName.QuotesReceived]: TradeData & {\n warnings: QuoteWarning[];\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n usd_balance_source?: number;\n };\n [UnifiedSwapBridgeEventName.QuotesError]: Pick<\n RequestMetadata,\n 'stx_enabled'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n // Emitted by BridgeStatusController\n [UnifiedSwapBridgeEventName.Submitted]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n > & {\n action_type: MetricsActionType;\n };\n [UnifiedSwapBridgeEventName.Completed]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n TxStatusData &\n RequestParams & {\n actual_time_minutes: number;\n usd_actual_return: number;\n usd_actual_gas: number;\n quote_vs_execution_ratio: number;\n quoted_vs_used_gas_ratio: number;\n action_type: MetricsActionType;\n };\n [UnifiedSwapBridgeEventName.Failed]:\n | // Tx failed before confirmation\n (TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source' | 'is_hardware_wallet'\n > &\n Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n > & { error_message: string }) // Tx failed after confirmation\n | (RequestParams &\n RequestMetadata &\n Pick<QuoteFetchData, 'price_impact'> &\n TxStatusData &\n TradeData & {\n actual_time_minutes: number;\n error_message?: string;\n });\n // Emitted by clients\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: Pick<\n TradeData,\n 'gas_included'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: Pick<\n TradeData,\n 'gas_included'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n sort_order: SortOrder;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.QuoteSelected]: TradeData & {\n is_best_quote: boolean;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: {\n token_name: string;\n token_symbol: string;\n token_contract: string;\n chain_name: string;\n chain_id: string;\n };\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: {\n failures: string[];\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: {\n failures: string[];\n refresh_count: number;\n };\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: {\n asset_location: 'source' | 'destination';\n };\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n > & {\n action_type: MetricsActionType;\n polling_status: PollingStatus;\n retry_attempts: number;\n };\n};\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * This combines the event-specific properties from RequiredEventContextFromClientBase\n * with an optional `location` property. When `location` is omitted, the controller\n * falls back to the value stored via `setLocation()` (defaults to MainView).\n *\n * `ab_tests` is the legacy field and `active_ab_tests` is the newer field.\n * Both are kept for a migration window and are treated as separate payloads.\n */\nexport type RequiredEventContextFromClient = {\n [K in keyof RequiredEventContextFromClientBase]: RequiredEventContextFromClientBase[K] & {\n location?: MetaMetricsSwapsEventSource;\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n };\n};\n\n/**\n * Properties that can be derived from the bridge controller state\n */\nexport type EventPropertiesFromControllerState = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: RequestParams;\n [UnifiedSwapBridgeEventName.PageViewed]: RequestParams;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input: InputKeys;\n input_value: string;\n };\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: RequestParams;\n [UnifiedSwapBridgeEventName.QuotesRequested]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n };\n [UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData & {\n refresh_count: number; // starts from 0\n };\n [UnifiedSwapBridgeEventName.QuotesError]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n error_message: string;\n };\n [UnifiedSwapBridgeEventName.Submitted]: null;\n [UnifiedSwapBridgeEventName.Completed]: null;\n [UnifiedSwapBridgeEventName.Failed]: RequestParams &\n RequestMetadata &\n TxStatusData &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n actual_time_minutes: number;\n };\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.QuoteSelected]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData;\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: null;\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: RequestParams & {\n refresh_count: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: RequestParams;\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: null;\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: null;\n};\n\n/**\n * trackUnifiedSwapBridgeEvent payload properties consist of required properties from the client\n * and properties from the bridge controller\n *\n * `ab_tests` will be deprecated in favor of `active_ab_tests` in the future.\n * `ab_tests` and `active_ab_tests` intentionally coexist during migration.\n */\nexport type CrossChainSwapsEventProperties<\n T extends UnifiedSwapBridgeEventName,\n> =\n | {\n action_type: MetricsActionType;\n location: MetaMetricsSwapsEventSource;\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n }\n | Pick<EventPropertiesFromControllerState, T>[T]\n | Pick<RequiredEventContextFromClient, T>[T];\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { CaipAssetType, CaipChainId } from '@metamask/utils';\n\nimport type { SortOrder, StatusTypes } from '../../types';\nimport type {\n UnifiedSwapBridgeEventName,\n MetaMetricsSwapsEventSource,\n MetricsActionType,\n MetricsSwapType,\n PollingStatus,\n} from './constants';\n\n/**\n * These properties map to properties required by the segment-schema. For example: https://github.com/Consensys/segment-schema/blob/main/libraries/properties/cross-chain-swaps-action.yaml\n */\nexport type RequestParams = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n token_symbol_source: string;\n token_symbol_destination: string | null;\n token_address_source: CaipAssetType;\n token_address_destination: CaipAssetType | null;\n token_security_type_destination: string | null;\n};\n\nexport type AccountHardwareType =\n | 'Ledger'\n | 'Trezor'\n | 'QR Hardware'\n | 'Lattice'\n | null;\n\nexport type RequestMetadata = {\n slippage_limit?: number; // undefined === auto\n custom_slippage: boolean;\n usd_amount_source: number; // Use quoteResponse when available\n stx_enabled: boolean;\n is_hardware_wallet: boolean;\n account_hardware_type: AccountHardwareType;\n swap_type: MetricsSwapType;\n security_warnings: string[];\n};\n\nexport type QuoteFetchData = {\n can_submit: boolean;\n best_quote_provider?: `${string}_${string}`;\n quotes_count: number;\n quotes_list: `${string}_${string}`[];\n initial_load_time_all_quotes: number;\n price_impact: number;\n has_gas_included_quote: boolean;\n};\n\nexport type TradeData = {\n usd_quoted_gas: number;\n gas_included: boolean;\n gas_included_7702: boolean;\n quoted_time_minutes: number;\n usd_quoted_return: number;\n provider: `${string}_${string}`;\n};\n\nexport type TxStatusData = {\n allowance_reset_transaction?: StatusTypes;\n approval_transaction?: StatusTypes;\n source_transaction?: StatusTypes;\n destination_transaction?: StatusTypes;\n};\n\nexport type InputKeys =\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n\nexport type InputValues = {\n token_source: CaipAssetType;\n token_destination: CaipAssetType;\n chain_source: CaipChainId;\n chain_destination: CaipChainId;\n slippage: number;\n token_amount_source: string;\n};\n\nexport type QuoteWarning =\n | 'low_return'\n | 'no_quotes'\n | 'insufficient_gas_balance'\n | 'insufficient_gas_for_selected_quote'\n | 'insufficient_balance'\n | 'market_closed'\n | 'price_impact'\n | 'quote_expired'\n | 'tx_alert';\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * This is the base type without the `location` property which is added to all events\n * via the RequiredEventContextFromClient mapped type.\n */\ntype RequiredEventContextFromClientBase = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n >;\n // When type is object, the payload can be anything\n [UnifiedSwapBridgeEventName.PageViewed]: object;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input:\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n input_value: InputValues[keyof InputValues];\n input_amount_preset?: string;\n };\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n token_address_source: RequestParams['token_address_source'];\n token_address_destination: RequestParams['token_address_destination'];\n token_security_type_destination: RequestParams['token_security_type_destination'];\n chain_id_source: RequestParams['chain_id_source'];\n chain_id_destination: RequestParams['chain_id_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n [UnifiedSwapBridgeEventName.QuotesRequested]: Pick<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n };\n [UnifiedSwapBridgeEventName.QuotesReceived]: TradeData & {\n warnings: QuoteWarning[];\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n usd_balance_source?: number;\n };\n [UnifiedSwapBridgeEventName.QuotesError]: Pick<\n RequestMetadata,\n 'stx_enabled'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n // Emitted by BridgeStatusController\n [UnifiedSwapBridgeEventName.Submitted]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'token_address_source'\n | 'token_address_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n | 'token_security_type_destination'\n > & {\n action_type: MetricsActionType;\n };\n [UnifiedSwapBridgeEventName.Completed]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n TxStatusData &\n RequestParams & {\n actual_time_minutes: number;\n usd_actual_return: number;\n usd_actual_gas: number;\n quote_vs_execution_ratio: number;\n quoted_vs_used_gas_ratio: number;\n action_type: MetricsActionType;\n };\n [UnifiedSwapBridgeEventName.Failed]:\n | // Tx failed before confirmation\n (TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<\n RequestMetadata,\n | 'stx_enabled'\n | 'usd_amount_source'\n | 'is_hardware_wallet'\n | 'account_hardware_type'\n > &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'token_address_source'\n | 'token_address_destination'\n | 'token_security_type_destination'\n > & { error_message: string }) // Tx failed after confirmation\n | (RequestParams &\n RequestMetadata &\n Pick<QuoteFetchData, 'price_impact'> &\n TxStatusData &\n TradeData & {\n actual_time_minutes: number;\n error_message?: string;\n });\n // Emitted by clients\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: Pick<\n TradeData,\n 'gas_included'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: Pick<\n TradeData,\n 'gas_included'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n sort_order: SortOrder;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.QuoteSelected]: TradeData & {\n is_best_quote: boolean;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: {\n token_name: string;\n token_symbol: string;\n token_contract: string;\n chain_name: string;\n chain_id: string;\n };\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: {\n failures: string[];\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: {\n failures: string[];\n refresh_count: number;\n };\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: {\n asset_location: 'source' | 'destination';\n };\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n > & {\n action_type: MetricsActionType;\n polling_status: PollingStatus;\n retry_attempts: number;\n };\n};\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * This combines the event-specific properties from RequiredEventContextFromClientBase\n * with an optional `location` property. When `location` is omitted, the controller\n * falls back to the value stored via `setLocation()` (defaults to MainView).\n *\n * `ab_tests` is the legacy field and `active_ab_tests` is the newer field.\n * Both are kept for a migration window and are treated as separate payloads.\n */\nexport type RequiredEventContextFromClient = {\n [K in keyof RequiredEventContextFromClientBase]: RequiredEventContextFromClientBase[K] & {\n location?: MetaMetricsSwapsEventSource;\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n };\n};\n\n/**\n * Properties that can be derived from the bridge controller state\n */\nexport type EventPropertiesFromControllerState = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: RequestParams;\n [UnifiedSwapBridgeEventName.PageViewed]: RequestParams &\n Omit<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source' | 'security_warnings'\n >;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input: InputKeys;\n input_value: string;\n };\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: RequestParams;\n [UnifiedSwapBridgeEventName.QuotesRequested]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n };\n [UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData & {\n refresh_count: number; // starts from 0\n };\n [UnifiedSwapBridgeEventName.QuotesError]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n error_message: string;\n };\n [UnifiedSwapBridgeEventName.Submitted]: null;\n [UnifiedSwapBridgeEventName.Completed]: null;\n [UnifiedSwapBridgeEventName.Failed]: RequestParams &\n RequestMetadata &\n TxStatusData &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n actual_time_minutes: number;\n };\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.QuoteSelected]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData;\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: null;\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: RequestParams & {\n refresh_count: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: RequestParams;\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: null;\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: null;\n};\n\n/**\n * trackUnifiedSwapBridgeEvent payload properties consist of required properties from the client\n * and properties from the bridge controller\n *\n * `ab_tests` will be deprecated in favor of `active_ab_tests` in the future.\n * `ab_tests` and `active_ab_tests` intentionally coexist during migration.\n */\nexport type CrossChainSwapsEventProperties<\n T extends UnifiedSwapBridgeEventName,\n> =\n | {\n action_type: MetricsActionType;\n location: MetaMetricsSwapsEventSource;\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n }\n | Pick<EventPropertiesFromControllerState, T>[T]\n | Pick<RequiredEventContextFromClient, T>[T];\n"]}
@@ -11,13 +11,16 @@ export type RequestParams = {
11
11
  token_symbol_destination: string | null;
12
12
  token_address_source: CaipAssetType;
13
13
  token_address_destination: CaipAssetType | null;
14
+ token_security_type_destination: string | null;
14
15
  };
16
+ export type AccountHardwareType = 'Ledger' | 'Trezor' | 'QR Hardware' | 'Lattice' | null;
15
17
  export type RequestMetadata = {
16
18
  slippage_limit?: number;
17
19
  custom_slippage: boolean;
18
20
  usd_amount_source: number;
19
21
  stx_enabled: boolean;
20
22
  is_hardware_wallet: boolean;
23
+ account_hardware_type: AccountHardwareType;
21
24
  swap_type: MetricsSwapType;
22
25
  security_warnings: string[];
23
26
  };
@@ -53,7 +56,7 @@ export type InputValues = {
53
56
  slippage: number;
54
57
  token_amount_source: string;
55
58
  };
56
- export type QuoteWarning = 'low_return' | 'no_quotes' | 'insufficient_gas_balance' | 'insufficient_gas_for_selected_quote' | 'insufficient_balance' | 'price_impact' | 'tx_alert';
59
+ export type QuoteWarning = 'low_return' | 'no_quotes' | 'insufficient_gas_balance' | 'insufficient_gas_for_selected_quote' | 'insufficient_balance' | 'market_closed' | 'price_impact' | 'quote_expired' | 'tx_alert';
57
60
  /**
58
61
  * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.
59
62
  * This is the base type without the `location` property which is added to all events
@@ -72,6 +75,7 @@ type RequiredEventContextFromClientBase = {
72
75
  token_symbol_destination: RequestParams['token_symbol_destination'];
73
76
  token_address_source: RequestParams['token_address_source'];
74
77
  token_address_destination: RequestParams['token_address_destination'];
78
+ token_security_type_destination: RequestParams['token_security_type_destination'];
75
79
  chain_id_source: RequestParams['chain_id_source'];
76
80
  chain_id_destination: RequestParams['chain_id_destination'];
77
81
  } & Pick<RequestMetadata, 'security_warnings'>;
@@ -90,7 +94,7 @@ type RequiredEventContextFromClientBase = {
90
94
  token_symbol_source: RequestParams['token_symbol_source'];
91
95
  token_symbol_destination: RequestParams['token_symbol_destination'];
92
96
  } & Pick<RequestMetadata, 'security_warnings'>;
93
- [UnifiedSwapBridgeEventName.Submitted]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination' | 'chain_id_source' | 'chain_id_destination'> & {
97
+ [UnifiedSwapBridgeEventName.Submitted]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination' | 'token_address_source' | 'token_address_destination' | 'chain_id_source' | 'chain_id_destination' | 'token_security_type_destination'> & {
94
98
  action_type: MetricsActionType;
95
99
  };
96
100
  [UnifiedSwapBridgeEventName.Completed]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & TxStatusData & RequestParams & {
@@ -102,7 +106,7 @@ type RequiredEventContextFromClientBase = {
102
106
  action_type: MetricsActionType;
103
107
  };
104
108
  [UnifiedSwapBridgeEventName.Failed]: // Tx failed before confirmation
105
- (TradeData & Pick<QuoteFetchData, 'price_impact'> & Pick<RequestMetadata, 'stx_enabled' | 'usd_amount_source' | 'is_hardware_wallet'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {
109
+ (TradeData & Pick<QuoteFetchData, 'price_impact'> & Pick<RequestMetadata, 'stx_enabled' | 'usd_amount_source' | 'is_hardware_wallet' | 'account_hardware_type'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination' | 'token_address_source' | 'token_address_destination' | 'token_security_type_destination'> & {
106
110
  error_message: string;
107
111
  }) | (RequestParams & RequestMetadata & Pick<QuoteFetchData, 'price_impact'> & TxStatusData & TradeData & {
108
112
  actual_time_minutes: number;
@@ -171,7 +175,7 @@ export type RequiredEventContextFromClient = {
171
175
  */
172
176
  export type EventPropertiesFromControllerState = {
173
177
  [UnifiedSwapBridgeEventName.ButtonClicked]: RequestParams;
174
- [UnifiedSwapBridgeEventName.PageViewed]: RequestParams;
178
+ [UnifiedSwapBridgeEventName.PageViewed]: RequestParams & Omit<RequestMetadata, 'stx_enabled' | 'usd_amount_source' | 'security_warnings'>;
175
179
  [UnifiedSwapBridgeEventName.InputChanged]: {
176
180
  input: InputKeys;
177
181
  input_value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,16 @@ export type RequestParams = {
11
11
  token_symbol_destination: string | null;
12
12
  token_address_source: CaipAssetType;
13
13
  token_address_destination: CaipAssetType | null;
14
+ token_security_type_destination: string | null;
14
15
  };
16
+ export type AccountHardwareType = 'Ledger' | 'Trezor' | 'QR Hardware' | 'Lattice' | null;
15
17
  export type RequestMetadata = {
16
18
  slippage_limit?: number;
17
19
  custom_slippage: boolean;
18
20
  usd_amount_source: number;
19
21
  stx_enabled: boolean;
20
22
  is_hardware_wallet: boolean;
23
+ account_hardware_type: AccountHardwareType;
21
24
  swap_type: MetricsSwapType;
22
25
  security_warnings: string[];
23
26
  };
@@ -53,7 +56,7 @@ export type InputValues = {
53
56
  slippage: number;
54
57
  token_amount_source: string;
55
58
  };
56
- export type QuoteWarning = 'low_return' | 'no_quotes' | 'insufficient_gas_balance' | 'insufficient_gas_for_selected_quote' | 'insufficient_balance' | 'price_impact' | 'tx_alert';
59
+ export type QuoteWarning = 'low_return' | 'no_quotes' | 'insufficient_gas_balance' | 'insufficient_gas_for_selected_quote' | 'insufficient_balance' | 'market_closed' | 'price_impact' | 'quote_expired' | 'tx_alert';
57
60
  /**
58
61
  * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.
59
62
  * This is the base type without the `location` property which is added to all events
@@ -72,6 +75,7 @@ type RequiredEventContextFromClientBase = {
72
75
  token_symbol_destination: RequestParams['token_symbol_destination'];
73
76
  token_address_source: RequestParams['token_address_source'];
74
77
  token_address_destination: RequestParams['token_address_destination'];
78
+ token_security_type_destination: RequestParams['token_security_type_destination'];
75
79
  chain_id_source: RequestParams['chain_id_source'];
76
80
  chain_id_destination: RequestParams['chain_id_destination'];
77
81
  } & Pick<RequestMetadata, 'security_warnings'>;
@@ -90,7 +94,7 @@ type RequiredEventContextFromClientBase = {
90
94
  token_symbol_source: RequestParams['token_symbol_source'];
91
95
  token_symbol_destination: RequestParams['token_symbol_destination'];
92
96
  } & Pick<RequestMetadata, 'security_warnings'>;
93
- [UnifiedSwapBridgeEventName.Submitted]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination' | 'chain_id_source' | 'chain_id_destination'> & {
97
+ [UnifiedSwapBridgeEventName.Submitted]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination' | 'token_address_source' | 'token_address_destination' | 'chain_id_source' | 'chain_id_destination' | 'token_security_type_destination'> & {
94
98
  action_type: MetricsActionType;
95
99
  };
96
100
  [UnifiedSwapBridgeEventName.Completed]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & TxStatusData & RequestParams & {
@@ -102,7 +106,7 @@ type RequiredEventContextFromClientBase = {
102
106
  action_type: MetricsActionType;
103
107
  };
104
108
  [UnifiedSwapBridgeEventName.Failed]: // Tx failed before confirmation
105
- (TradeData & Pick<QuoteFetchData, 'price_impact'> & Pick<RequestMetadata, 'stx_enabled' | 'usd_amount_source' | 'is_hardware_wallet'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {
109
+ (TradeData & Pick<QuoteFetchData, 'price_impact'> & Pick<RequestMetadata, 'stx_enabled' | 'usd_amount_source' | 'is_hardware_wallet' | 'account_hardware_type'> & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination' | 'token_address_source' | 'token_address_destination' | 'token_security_type_destination'> & {
106
110
  error_message: string;
107
111
  }) | (RequestParams & RequestMetadata & Pick<QuoteFetchData, 'price_impact'> & TxStatusData & TradeData & {
108
112
  actual_time_minutes: number;
@@ -171,7 +175,7 @@ export type RequiredEventContextFromClient = {
171
175
  */
172
176
  export type EventPropertiesFromControllerState = {
173
177
  [UnifiedSwapBridgeEventName.ButtonClicked]: RequestParams;
174
- [UnifiedSwapBridgeEventName.PageViewed]: RequestParams;
178
+ [UnifiedSwapBridgeEventName.PageViewed]: RequestParams & Omit<RequestMetadata, 'stx_enabled' | 'usd_amount_source' | 'security_warnings'>;
175
179
  [UnifiedSwapBridgeEventName.InputChanged]: {
176
180
  input: InputKeys;
177
181
  input_value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}