@metamask-previews/bridge-controller 80.0.0-preview-8c2a2eeb2 → 80.1.0-preview-b13d916
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 +18 -1
- package/dist/bridge-controller.cjs +24 -11
- package/dist/bridge-controller.cjs.map +1 -1
- package/dist/bridge-controller.d.cts.map +1 -1
- package/dist/bridge-controller.d.mts.map +1 -1
- package/dist/bridge-controller.mjs +25 -12
- package/dist/bridge-controller.mjs.map +1 -1
- package/dist/index.cjs +7 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/utils/metrics/constants.cjs +26 -1
- package/dist/utils/metrics/constants.cjs.map +1 -1
- package/dist/utils/metrics/constants.d.cts +23 -0
- package/dist/utils/metrics/constants.d.cts.map +1 -1
- package/dist/utils/metrics/constants.d.mts +23 -0
- package/dist/utils/metrics/constants.d.mts.map +1 -1
- package/dist/utils/metrics/constants.mjs +25 -0
- package/dist/utils/metrics/constants.mjs.map +1 -1
- package/dist/utils/metrics/failure-telemetry.cjs +24 -0
- package/dist/utils/metrics/failure-telemetry.cjs.map +1 -0
- package/dist/utils/metrics/failure-telemetry.d.cts +12 -0
- package/dist/utils/metrics/failure-telemetry.d.cts.map +1 -0
- package/dist/utils/metrics/failure-telemetry.d.mts +12 -0
- package/dist/utils/metrics/failure-telemetry.d.mts.map +1 -0
- package/dist/utils/metrics/failure-telemetry.mjs +20 -0
- package/dist/utils/metrics/failure-telemetry.mjs.map +1 -0
- package/dist/utils/metrics/properties.cjs +13 -4
- package/dist/utils/metrics/properties.cjs.map +1 -1
- package/dist/utils/metrics/properties.d.cts +9 -1
- package/dist/utils/metrics/properties.d.cts.map +1 -1
- package/dist/utils/metrics/properties.d.mts +9 -1
- package/dist/utils/metrics/properties.d.mts.map +1 -1
- package/dist/utils/metrics/properties.mjs +13 -4
- package/dist/utils/metrics/properties.mjs.map +1 -1
- package/dist/utils/metrics/types.cjs.map +1 -1
- package/dist/utils/metrics/types.d.cts +18 -6
- package/dist/utils/metrics/types.d.cts.map +1 -1
- package/dist/utils/metrics/types.d.mts +18 -6
- package/dist/utils/metrics/types.d.mts.map +1 -1
- package/dist/utils/metrics/types.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge.js';\nimport { ChainId } from '../../types.js';\nimport type { GenericQuoteRequest, QuoteRequest } from '../../types.js';\nimport { FeatureId } from '../../validators/feature-flags.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge.js';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters.js';\nimport { MetricsSwapType } from './constants.js';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types.js';\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 aggregator,\n protocols,\n bridges,\n bridgeId,\n}: {\n aggregator?: string;\n protocols?: string[];\n bridges?: string[];\n bridgeId?: string;\n}): `${string}_${string}` =>\n `${aggregator ?? bridgeId}_${protocols?.[0] ?? 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. Token symbols are\n * omitted because the quote request only stores addresses; use\n * {@link getQuotesReceivedProperties} when building a `QuotesReceived` payload.\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[0]?.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | QuoteResponse,\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | QuoteResponse,\n usdBalanceSource?: number,\n hasSufficientGasForQuote?: boolean | null,\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?.quote?.feeData?.network?.[0]?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.quote?.dest?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n usd_amount_source: Number(activeQuote?.quote?.src?.usd ?? 0),\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n token_symbol_source: activeQuote?.quote.src.asset.symbol ?? '',\n token_symbol_destination: activeQuote?.quote.dest.asset.symbol ?? null,\n warnings,\n price_impact: Number(\n activeQuote?.quote.priceData?.priceImpact?.amount ?? 0,\n ),\n ...(hasSufficientGasForQuote !== undefined && {\n has_sufficient_gas_for_quote: hasSufficientGasForQuote,\n }),\n feature_id: activeQuote?.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"properties.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge.js';\nimport { ChainId } from '../../types.js';\nimport type { GenericQuoteRequest, QuoteRequest } from '../../types.js';\nimport { FeatureId } from '../../validators/feature-flags.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge.js';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters.js';\nimport { MetricsSwapType } from './constants.js';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types.js';\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 aggregator,\n protocols,\n bridges,\n bridgeId,\n}: {\n aggregator?: string;\n protocols?: string[];\n bridges?: string[];\n bridgeId?: string;\n}): `${string}_${string}` =>\n `${aggregator ?? bridgeId}_${protocols?.[0] ?? 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. Token symbols are\n * omitted because the quote request only stores addresses; use\n * {@link getQuotesReceivedProperties} when building a `QuotesReceived` payload.\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[0]?.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | QuoteResponse,\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | QuoteResponse,\n usdBalanceSource?: number,\n hasSufficientGasForQuote?: boolean | null,\n options: {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n custom_slippage?: boolean;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n slippage_limit?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n usd_amount_source?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n token_symbol_source?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n token_symbol_destination?: string | null;\n } = {},\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n const quoteUsdAmountSource = activeQuote?.quote?.src?.usd;\n const quoteTokenSymbolSource = activeQuote?.quote.src.asset.symbol;\n const quoteTokenSymbolDestination = activeQuote?.quote.dest.asset.symbol;\n const usdAmountSource = Number(\n quoteUsdAmountSource ?? options.usd_amount_source ?? 0,\n );\n const slippageLimit =\n options.slippage_limit ?? activeQuote?.quote?.slippage ?? 0;\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?.quote?.feeData?.network?.[0]?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.quote?.dest?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n usd_amount_source: usdAmountSource,\n slippage_limit: slippageLimit,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n token_symbol_source:\n quoteTokenSymbolSource ?? options.token_symbol_source ?? '',\n token_symbol_destination:\n quoteTokenSymbolDestination ?? options.token_symbol_destination ?? null,\n warnings,\n price_impact: Number(\n activeQuote?.quote.priceData?.priceImpact?.amount ?? 0,\n ),\n ...(hasSufficientGasForQuote !== undefined && {\n has_sufficient_gas_for_quote: hasSufficientGasForQuote,\n }),\n ...(options.custom_slippage !== undefined && {\n custom_slippage: options.custom_slippage,\n }),\n feature_id: activeQuote?.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n"]}
|
|
@@ -37,8 +37,15 @@ export declare const isHardwareWallet: (selectedAccount?: AccountsControllerStat
|
|
|
37
37
|
* @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.
|
|
38
38
|
*/
|
|
39
39
|
export declare const isCustomSlippage: (slippage: GenericQuoteRequest['slippage']) => boolean;
|
|
40
|
-
export declare const getQuotesReceivedProperties: (activeQuote: null | QuoteResponse, warnings?: QuoteWarning[], isSubmittable?: boolean, recommendedQuote?: null | QuoteResponse, usdBalanceSource?: number, hasSufficientGasForQuote?: boolean | null
|
|
40
|
+
export declare const getQuotesReceivedProperties: (activeQuote: null | QuoteResponse, warnings?: QuoteWarning[], isSubmittable?: boolean, recommendedQuote?: null | QuoteResponse, usdBalanceSource?: number, hasSufficientGasForQuote?: boolean | null, options?: {
|
|
41
|
+
custom_slippage?: boolean;
|
|
42
|
+
slippage_limit?: number;
|
|
43
|
+
usd_amount_source?: number;
|
|
44
|
+
token_symbol_source?: string;
|
|
45
|
+
token_symbol_destination?: string | null;
|
|
46
|
+
}) => {
|
|
41
47
|
feature_id: FeatureId;
|
|
48
|
+
custom_slippage?: boolean | undefined;
|
|
42
49
|
has_sufficient_gas_for_quote?: boolean | null | undefined;
|
|
43
50
|
can_submit: boolean;
|
|
44
51
|
gas_included: boolean;
|
|
@@ -48,6 +55,7 @@ export declare const getQuotesReceivedProperties: (activeQuote: null | QuoteResp
|
|
|
48
55
|
usd_quoted_return: number;
|
|
49
56
|
usd_balance_source: number;
|
|
50
57
|
usd_amount_source: number;
|
|
58
|
+
slippage_limit: number;
|
|
51
59
|
best_quote_provider: `${string}_${string}`;
|
|
52
60
|
provider: `${string}_${string}`;
|
|
53
61
|
token_symbol_source: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAuB;AACxE,OAAO,EAAE,SAAS,EAAE,2CAA0C;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAMxE,OAAO,EAAE,eAAe,EAAE,wBAAuB;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAmB;AAEpB,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;;;;;MAU5B,GAAG,MAAM,IAAI,MAAM,EACwC,CAAC;AAEhE;;;;;;;;;;;;GAYG;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,aAAa,aACvB,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,aAAa,qBACpB,MAAM,6BACE,OAAO,GAAG,IAAI
|
|
1
|
+
{"version":3,"file":"properties.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAuB;AACxE,OAAO,EAAE,SAAS,EAAE,2CAA0C;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAMxE,OAAO,EAAE,eAAe,EAAE,wBAAuB;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAmB;AAEpB,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;;;;;MAU5B,GAAG,MAAM,IAAI,MAAM,EACwC,CAAC;AAEhE;;;;;;;;;;;;GAYG;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,aAAa,aACvB,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,aAAa,qBACpB,MAAM,6BACE,OAAO,GAAG,IAAI,YAChC;IAEP,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;;;;;;;;;;;;;;;;;;;CA2CF,CAAC"}
|
|
@@ -37,8 +37,15 @@ export declare const isHardwareWallet: (selectedAccount?: AccountsControllerStat
|
|
|
37
37
|
* @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.
|
|
38
38
|
*/
|
|
39
39
|
export declare const isCustomSlippage: (slippage: GenericQuoteRequest['slippage']) => boolean;
|
|
40
|
-
export declare const getQuotesReceivedProperties: (activeQuote: null | QuoteResponse, warnings?: QuoteWarning[], isSubmittable?: boolean, recommendedQuote?: null | QuoteResponse, usdBalanceSource?: number, hasSufficientGasForQuote?: boolean | null
|
|
40
|
+
export declare const getQuotesReceivedProperties: (activeQuote: null | QuoteResponse, warnings?: QuoteWarning[], isSubmittable?: boolean, recommendedQuote?: null | QuoteResponse, usdBalanceSource?: number, hasSufficientGasForQuote?: boolean | null, options?: {
|
|
41
|
+
custom_slippage?: boolean;
|
|
42
|
+
slippage_limit?: number;
|
|
43
|
+
usd_amount_source?: number;
|
|
44
|
+
token_symbol_source?: string;
|
|
45
|
+
token_symbol_destination?: string | null;
|
|
46
|
+
}) => {
|
|
41
47
|
feature_id: FeatureId;
|
|
48
|
+
custom_slippage?: boolean | undefined;
|
|
42
49
|
has_sufficient_gas_for_quote?: boolean | null | undefined;
|
|
43
50
|
can_submit: boolean;
|
|
44
51
|
gas_included: boolean;
|
|
@@ -48,6 +55,7 @@ export declare const getQuotesReceivedProperties: (activeQuote: null | QuoteResp
|
|
|
48
55
|
usd_quoted_return: number;
|
|
49
56
|
usd_balance_source: number;
|
|
50
57
|
usd_amount_source: number;
|
|
58
|
+
slippage_limit: number;
|
|
51
59
|
best_quote_provider: `${string}_${string}`;
|
|
52
60
|
provider: `${string}_${string}`;
|
|
53
61
|
token_symbol_source: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAuB;AACxE,OAAO,EAAE,SAAS,EAAE,2CAA0C;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAMxE,OAAO,EAAE,eAAe,EAAE,wBAAuB;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAmB;AAEpB,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;;;;;MAU5B,GAAG,MAAM,IAAI,MAAM,EACwC,CAAC;AAEhE;;;;;;;;;;;;GAYG;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,aAAa,aACvB,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,aAAa,qBACpB,MAAM,6BACE,OAAO,GAAG,IAAI
|
|
1
|
+
{"version":3,"file":"properties.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAI7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAuB;AACxE,OAAO,EAAE,SAAS,EAAE,2CAA0C;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAMxE,OAAO,EAAE,eAAe,EAAE,wBAAuB;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAmB;AAEpB,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;;;;;MAU5B,GAAG,MAAM,IAAI,MAAM,EACwC,CAAC;AAEhE;;;;;;;;;;;;GAYG;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,aAAa,aACvB,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,aAAa,qBACpB,MAAM,6BACE,OAAO,GAAG,IAAI,YAChC;IAEP,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;;;;;;;;;;;;;;;;;;;CA2CF,CAAC"}
|
|
@@ -90,8 +90,13 @@ export const isHardwareWallet = (selectedAccount) => {
|
|
|
90
90
|
export const isCustomSlippage = (slippage) => {
|
|
91
91
|
return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest[0]?.slippage;
|
|
92
92
|
};
|
|
93
|
-
export const getQuotesReceivedProperties = (activeQuote, warnings = [], isSubmittable = true, recommendedQuote, usdBalanceSource, hasSufficientGasForQuote) => {
|
|
93
|
+
export const getQuotesReceivedProperties = (activeQuote, warnings = [], isSubmittable = true, recommendedQuote, usdBalanceSource, hasSufficientGasForQuote, options = {}) => {
|
|
94
94
|
const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';
|
|
95
|
+
const quoteUsdAmountSource = activeQuote?.quote?.src?.usd;
|
|
96
|
+
const quoteTokenSymbolSource = activeQuote?.quote.src.asset.symbol;
|
|
97
|
+
const quoteTokenSymbolDestination = activeQuote?.quote.dest.asset.symbol;
|
|
98
|
+
const usdAmountSource = Number(quoteUsdAmountSource ?? options.usd_amount_source ?? 0);
|
|
99
|
+
const slippageLimit = options.slippage_limit ?? activeQuote?.quote?.slippage ?? 0;
|
|
95
100
|
return {
|
|
96
101
|
can_submit: isSubmittable,
|
|
97
102
|
gas_included: Boolean(activeQuote?.quote?.gasIncluded),
|
|
@@ -102,18 +107,22 @@ export const getQuotesReceivedProperties = (activeQuote, warnings = [], isSubmit
|
|
|
102
107
|
usd_quoted_gas: Number(activeQuote?.quote?.feeData?.network?.[0]?.usd ?? 0),
|
|
103
108
|
usd_quoted_return: Number(activeQuote?.quote?.dest?.usd ?? 0),
|
|
104
109
|
usd_balance_source: usdBalanceSource ?? 0,
|
|
105
|
-
usd_amount_source:
|
|
110
|
+
usd_amount_source: usdAmountSource,
|
|
111
|
+
slippage_limit: slippageLimit,
|
|
106
112
|
best_quote_provider: recommendedQuote
|
|
107
113
|
? formatProviderLabel(recommendedQuote.quote)
|
|
108
114
|
: provider,
|
|
109
115
|
provider,
|
|
110
|
-
token_symbol_source:
|
|
111
|
-
token_symbol_destination:
|
|
116
|
+
token_symbol_source: quoteTokenSymbolSource ?? options.token_symbol_source ?? '',
|
|
117
|
+
token_symbol_destination: quoteTokenSymbolDestination ?? options.token_symbol_destination ?? null,
|
|
112
118
|
warnings,
|
|
113
119
|
price_impact: Number(activeQuote?.quote.priceData?.priceImpact?.amount ?? 0),
|
|
114
120
|
...(hasSufficientGasForQuote !== undefined && {
|
|
115
121
|
has_sufficient_gas_for_quote: hasSufficientGasForQuote,
|
|
116
122
|
}),
|
|
123
|
+
...(options.custom_slippage !== undefined && {
|
|
124
|
+
custom_slippage: options.custom_slippage,
|
|
125
|
+
}),
|
|
117
126
|
feature_id: activeQuote?.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,
|
|
118
127
|
};
|
|
119
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.mjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,+BAA+B,EAAE,mCAAkC;AAC5E,OAAO,EAAE,OAAO,EAAE,wBAAuB;AAEzC,OAAO,EAAE,SAAS,EAAE,2CAA0C;AAE9D,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,sBAAqB;AACtE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACpB,+BAA8B;AAC/B,OAAO,EAAE,eAAe,EAAE,wBAAuB;AASjD,MAAM,CAAC,MAAM,yBAAyB,GAElC;IACF,eAAe,EAAE,cAAc;IAC/B,gBAAgB,EAAE,mBAAmB;IACrC,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,mBAAmB;IAChC,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAOpC;IACF,eAAe,EAAE,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,EAAE,CACnD,UAAU;QACR,CAAC,CAAC,sBAAsB,CAAC,eAAe,IAAI,EAAE,EAAE,UAAU,CAAC;QAC3D,CAAC,CAAC,SAAS;IACf,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,EAAE,CACtD,WAAW;QACT,CAAC,CAAC,sBAAsB,CAAC,gBAAgB,IAAI,EAAE,EAAE,WAAW,CAAC;QAC7D,CAAC,CAAC,SAAS;IACf,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAC7B,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;IAC1D,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAC/B,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;IAC5D,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,UAA8C,EAC9C,WAAgD,EAChD,EAAE;IACF,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,IAAI,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,eAAe,CAAC,MAAM,CAAC;IAChC,CAAC;IACD,OAAO,eAAe,CAAC,UAAU,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAA0C,EAC1C,EAAE;IACF,OAAO,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GAMT,EAAyB,EAAE,CAC1B,GAAG,UAAU,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,EACE,UAAU,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,GACa,EAC/B,4BAA2C,EAC8B,EAAE;IAC3E,qHAAqH;IACrH,wGAAwG;IACxG,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO;QACL,eAAe,EAAE,cAAc;QAC/B,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3E,oBAAoB,EAAE,eAAe;YACnC,CAAC,CAAC,CAAC,sBAAsB,CAAC,eAAe,EAAE,cAAc,CAAC;gBACxD,wBAAwB,CAAC,cAAc,CAAC,EAAE,OAAO;gBACjD,IAAI,CAAC;YACP,CAAC,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;QAC/D,yBAAyB,EAAE,gBAAgB;YACzC,CAAC,CAAC,CAAC,sBAAsB,CACrB,gBAAgB,EAChB,WAAW,IAAI,cAAc,CAC9B,IAAI,IAAI,CAAC;YACZ,CAAC,CAAC,IAAI;QACR,+BAA+B,EAAE,4BAA4B;KAC9D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,eAAiF,EAC5D,EAAE;IACvB,sFAAsF;IACtF,QAAQ,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC;QAClB,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC;QAClB,KAAK,2BAA2B;YAC9B,OAAO,aAAa,CAAC;QACvB,KAAK,kBAAkB;YACrB,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,eAAiF,EACjF,EAAE;IACF,OAAO,sBAAsB,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAyC,EAAE,EAAE;IAC5E,OAAO,QAAQ,KAAK,+BAA+B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,WAAiC,EACjC,WAA2B,EAAE,EAC7B,gBAAyB,IAAI,EAC7B,gBAAuC,EACvC,gBAAyB,EACzB,wBAAyC,EACzC,EAAE;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5E,OAAO;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;QACtD,iBAAiB,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC;QAC/D,mBAAmB,EAAE,WAAW,EAAE,gCAAgC;YAChE,CAAC,CAAC,WAAW,CAAC,gCAAgC,GAAG,EAAE;YACnD,CAAC,CAAC,CAAC;QACL,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3E,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,kBAAkB,EAAE,gBAAgB,IAAI,CAAC;QACzC,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5D,mBAAmB,EAAE,gBAAgB;YACnC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,QAAQ;QACZ,QAAQ;QACR,mBAAmB,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE;QAC9D,wBAAwB,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI;QACtE,QAAQ;QACR,YAAY,EAAE,MAAM,CAClB,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,CACvD;QACD,GAAG,CAAC,wBAAwB,KAAK,SAAS,IAAI;YAC5C,4BAA4B,EAAE,wBAAwB;SACvD,CAAC;QACF,UAAU,EAAE,WAAW,EAAE,SAAS,IAAI,SAAS,CAAC,mBAAmB;KACpE,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge.js';\nimport { ChainId } from '../../types.js';\nimport type { GenericQuoteRequest, QuoteRequest } from '../../types.js';\nimport { FeatureId } from '../../validators/feature-flags.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge.js';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters.js';\nimport { MetricsSwapType } from './constants.js';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types.js';\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 aggregator,\n protocols,\n bridges,\n bridgeId,\n}: {\n aggregator?: string;\n protocols?: string[];\n bridges?: string[];\n bridgeId?: string;\n}): `${string}_${string}` =>\n `${aggregator ?? bridgeId}_${protocols?.[0] ?? 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. Token symbols are\n * omitted because the quote request only stores addresses; use\n * {@link getQuotesReceivedProperties} when building a `QuotesReceived` payload.\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[0]?.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | QuoteResponse,\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | QuoteResponse,\n usdBalanceSource?: number,\n hasSufficientGasForQuote?: boolean | null,\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?.quote?.feeData?.network?.[0]?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.quote?.dest?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n usd_amount_source: Number(activeQuote?.quote?.src?.usd ?? 0),\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n token_symbol_source: activeQuote?.quote.src.asset.symbol ?? '',\n token_symbol_destination: activeQuote?.quote.dest.asset.symbol ?? null,\n warnings,\n price_impact: Number(\n activeQuote?.quote.priceData?.priceImpact?.amount ?? 0,\n ),\n ...(hasSufficientGasForQuote !== undefined && {\n has_sufficient_gas_for_quote: hasSufficientGasForQuote,\n }),\n feature_id: activeQuote?.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"properties.mjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,+BAA+B,EAAE,mCAAkC;AAC5E,OAAO,EAAE,OAAO,EAAE,wBAAuB;AAEzC,OAAO,EAAE,SAAS,EAAE,2CAA0C;AAE9D,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,sBAAqB;AACtE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACpB,+BAA8B;AAC/B,OAAO,EAAE,eAAe,EAAE,wBAAuB;AASjD,MAAM,CAAC,MAAM,yBAAyB,GAElC;IACF,eAAe,EAAE,cAAc;IAC/B,gBAAgB,EAAE,mBAAmB;IACrC,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,mBAAmB;IAChC,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAOpC;IACF,eAAe,EAAE,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,EAAE,CACnD,UAAU;QACR,CAAC,CAAC,sBAAsB,CAAC,eAAe,IAAI,EAAE,EAAE,UAAU,CAAC;QAC3D,CAAC,CAAC,SAAS;IACf,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,EAAE,CACtD,WAAW;QACT,CAAC,CAAC,sBAAsB,CAAC,gBAAgB,IAAI,EAAE,EAAE,WAAW,CAAC;QAC7D,CAAC,CAAC,SAAS;IACf,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAC7B,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;IAC1D,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAC/B,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;IAC5D,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,UAA8C,EAC9C,WAAgD,EAChD,EAAE;IACF,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,IAAI,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,eAAe,CAAC,MAAM,CAAC;IAChC,CAAC;IACD,OAAO,eAAe,CAAC,UAAU,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAA0C,EAC1C,EAAE;IACF,OAAO,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GAMT,EAAyB,EAAE,CAC1B,GAAG,UAAU,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,EACE,UAAU,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,GACa,EAC/B,4BAA2C,EAC8B,EAAE;IAC3E,qHAAqH;IACrH,wGAAwG;IACxG,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO;QACL,eAAe,EAAE,cAAc;QAC/B,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3E,oBAAoB,EAAE,eAAe;YACnC,CAAC,CAAC,CAAC,sBAAsB,CAAC,eAAe,EAAE,cAAc,CAAC;gBACxD,wBAAwB,CAAC,cAAc,CAAC,EAAE,OAAO;gBACjD,IAAI,CAAC;YACP,CAAC,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;QAC/D,yBAAyB,EAAE,gBAAgB;YACzC,CAAC,CAAC,CAAC,sBAAsB,CACrB,gBAAgB,EAChB,WAAW,IAAI,cAAc,CAC9B,IAAI,IAAI,CAAC;YACZ,CAAC,CAAC,IAAI;QACR,+BAA+B,EAAE,4BAA4B;KAC9D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,eAAiF,EAC5D,EAAE;IACvB,sFAAsF;IACtF,QAAQ,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC;QAClB,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC;QAClB,KAAK,2BAA2B;YAC9B,OAAO,aAAa,CAAC;QACvB,KAAK,kBAAkB;YACrB,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,eAAiF,EACjF,EAAE;IACF,OAAO,sBAAsB,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAyC,EAAE,EAAE;IAC5E,OAAO,QAAQ,KAAK,+BAA+B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,WAAiC,EACjC,WAA2B,EAAE,EAC7B,gBAAyB,IAAI,EAC7B,gBAAuC,EACvC,gBAAyB,EACzB,wBAAyC,EACzC,UAWI,EAAE,EACN,EAAE;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5E,MAAM,oBAAoB,GAAG,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1D,MAAM,sBAAsB,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACnE,MAAM,2BAA2B,GAAG,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAC5B,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,CACvD,CAAC;IACF,MAAM,aAAa,GACjB,OAAO,CAAC,cAAc,IAAI,WAAW,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC9D,OAAO;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;QACtD,iBAAiB,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC;QAC/D,mBAAmB,EAAE,WAAW,EAAE,gCAAgC;YAChE,CAAC,CAAC,WAAW,CAAC,gCAAgC,GAAG,EAAE;YACnD,CAAC,CAAC,CAAC;QACL,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3E,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,kBAAkB,EAAE,gBAAgB,IAAI,CAAC;QACzC,iBAAiB,EAAE,eAAe;QAClC,cAAc,EAAE,aAAa;QAC7B,mBAAmB,EAAE,gBAAgB;YACnC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,QAAQ;QACZ,QAAQ;QACR,mBAAmB,EACjB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,IAAI,EAAE;QAC7D,wBAAwB,EACtB,2BAA2B,IAAI,OAAO,CAAC,wBAAwB,IAAI,IAAI;QACzE,QAAQ;QACR,YAAY,EAAE,MAAM,CAClB,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,CACvD;QACD,GAAG,CAAC,wBAAwB,KAAK,SAAS,IAAI;YAC5C,4BAA4B,EAAE,wBAAwB;SACvD,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI;YAC3C,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC;QACF,UAAU,EAAE,WAAW,EAAE,SAAS,IAAI,SAAS,CAAC,mBAAmB;KACpE,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge.js';\nimport { ChainId } from '../../types.js';\nimport type { GenericQuoteRequest, QuoteRequest } from '../../types.js';\nimport { FeatureId } from '../../validators/feature-flags.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge.js';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters.js';\nimport { MetricsSwapType } from './constants.js';\nimport type {\n AccountHardwareType,\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types.js';\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 aggregator,\n protocols,\n bridges,\n bridgeId,\n}: {\n aggregator?: string;\n protocols?: string[];\n bridges?: string[];\n bridgeId?: string;\n}): `${string}_${string}` =>\n `${aggregator ?? bridgeId}_${protocols?.[0] ?? 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. Token symbols are\n * omitted because the quote request only stores addresses; use\n * {@link getQuotesReceivedProperties} when building a `QuotesReceived` payload.\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[0]?.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | QuoteResponse,\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | QuoteResponse,\n usdBalanceSource?: number,\n hasSufficientGasForQuote?: boolean | null,\n options: {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n custom_slippage?: boolean;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n slippage_limit?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n usd_amount_source?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n token_symbol_source?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- analytics property\n token_symbol_destination?: string | null;\n } = {},\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n const quoteUsdAmountSource = activeQuote?.quote?.src?.usd;\n const quoteTokenSymbolSource = activeQuote?.quote.src.asset.symbol;\n const quoteTokenSymbolDestination = activeQuote?.quote.dest.asset.symbol;\n const usdAmountSource = Number(\n quoteUsdAmountSource ?? options.usd_amount_source ?? 0,\n );\n const slippageLimit =\n options.slippage_limit ?? activeQuote?.quote?.slippage ?? 0;\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?.quote?.feeData?.network?.[0]?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.quote?.dest?.usd ?? 0),\n usd_balance_source: usdBalanceSource ?? 0,\n usd_amount_source: usdAmountSource,\n slippage_limit: slippageLimit,\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n token_symbol_source:\n quoteTokenSymbolSource ?? options.token_symbol_source ?? '',\n token_symbol_destination:\n quoteTokenSymbolDestination ?? options.token_symbol_destination ?? null,\n warnings,\n price_impact: Number(\n activeQuote?.quote.priceData?.priceImpact?.amount ?? 0,\n ),\n ...(hasSufficientGasForQuote !== undefined && {\n has_sufficient_gas_for_quote: hasSufficientGasForQuote,\n }),\n ...(options.custom_slippage !== undefined && {\n custom_slippage: options.custom_slippage,\n }),\n feature_id: activeQuote?.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\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 {\n InputPrimaryDenomination,\n SortOrder,\n StatusTypes,\n} from '../../types.js';\nimport type { FeatureId } from '../../validators/feature-flags.js';\nimport type {\n UnifiedSwapBridgeEventName,\n BatchSellMetricsEventName,\n BatchSellMetricsLocation,\n BridgeControllerMetricsEventName,\n BridgeControllerMetricsLocation,\n MetricsActionType,\n MetricsSwapType,\n PollingStatus,\n} from './constants.js';\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 * Client-supplied security classification for the destination token\n * (e.g. from token security/scanning data). Stored on the controller\n * and merged into every analytics event that includes\n * `token_address_destination`. Pass `null` when no security data is\n * available for the selected destination token.\n */\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 InputPrimaryDenominationData = {\n input_primary_denomination?: InputPrimaryDenomination;\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\ntype BatchSellChainProperties = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n};\n\ntype BatchSellTokenPageEventContext = BatchSellChainProperties & {\n location: BatchSellMetricsLocation;\n};\n\ntype BatchSellSourceTokenEventContext = BatchSellTokenPageEventContext & {\n source_token_symbols: string[];\n source_token_addresses: CaipAssetType[];\n};\n\ntype BatchSellQuotePageEventContext = BatchSellSourceTokenEventContext & {\n destination_token_symbol: string;\n destination_token_address: CaipAssetType;\n usd_amount_source_tokens: number[];\n usd_amount_source_total: number;\n source_token_slippages: number[];\n};\n\ntype BatchSellReviewModalSubmittedEventContext =\n BatchSellQuotePageEventContext &\n Pick<TradeData, 'usd_quoted_gas' | 'usd_quoted_return'>;\n\ntype BatchSellTokenPageEventProperties = BatchSellChainProperties &\n BatchSellTokenPageEventContext;\n\ntype BatchSellSourceTokenEventProperties = BatchSellChainProperties &\n BatchSellSourceTokenEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellQuotePageEventProperties = BatchSellChainProperties &\n BatchSellQuotePageEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellReviewModalSubmittedEventProperties = BatchSellChainProperties &\n BatchSellReviewModalSubmittedEventContext & {\n source_token_count: number;\n };\n\ntype SharedEventContextFromClient = {\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n feature_id: FeatureId;\n};\n\ntype OptionalLocationContextFromClient<T> = T extends {\n location: unknown;\n}\n ? object\n : { location?: BridgeControllerMetricsLocation };\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * Most events receive an optional location via RequiredEventContextFromClient;\n * Batch Sell events define their own required location enum.\n */\ntype RequiredEventContextFromClientBase = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n > & { environment_type?: string };\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.FiatCryptoToggleClicked]: {\n token_symbol_source: string;\n token_symbol_destination: string | null;\n previous_primary_denomination: InputPrimaryDenomination;\n new_primary_denomination: InputPrimaryDenomination;\n chain_id_source?: RequestParams['chain_id_source'];\n chain_id_destination?: RequestParams['chain_id_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 swap_type?: RequestMetadata['swap_type'];\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 token_security_type_destination: RequestParams['token_security_type_destination'];\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: TradeData &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> &\n InputPrimaryDenominationData & {\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 has_sufficient_gas_for_quote?: boolean | null;\n usd_amount_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 batch_id?: string;\n } & InputPrimaryDenominationData;\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 batch_id?: string;\n transaction_internal_id?: string;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.Failed]: (\n | // Tx failed before confirmation\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 >)\n // Tx failed after confirmation\n | (RequestParams &\n RequestMetadata &\n TxStatusData & {\n actual_time_minutes: number;\n })\n ) &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n error_message: string;\n batch_id?: string;\n };\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: {\n polling_status: PollingStatus;\n retry_attempts: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: {\n failures: string[];\n refresh_count: number;\n } & Partial<RequestParams>;\n // Emitted by clients\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: Pick<\n TradeData,\n 'gas_included' | 'gas_included_7702'\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' | 'gas_included_7702'\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.AssetPickerOpened]: {\n asset_location: 'source' | 'destination';\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventContext;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventContext;\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 Unknown).\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]: K extends BatchSellMetricsEventName\n ? RequiredEventContextFromClientBase[K]\n : RequiredEventContextFromClientBase[K] &\n OptionalLocationContextFromClient<\n RequiredEventContextFromClientBase[K]\n > &\n SharedEventContextFromClient;\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 InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input: InputKeys;\n input_value: string;\n };\n [UnifiedSwapBridgeEventName.FiatCryptoToggleClicked]: RequestParams &\n Pick<RequestMetadata, 'swap_type'>;\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: RequestParams;\n [UnifiedSwapBridgeEventName.QuotesRequested]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData & {\n refresh_count: number; // starts from 0\n } & InputPrimaryDenominationData;\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]: 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 batch_id?: string;\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventProperties;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventProperties;\n};\n\ntype SharedCrossChainSwapsEventProperties<\n T extends BridgeControllerMetricsEventName,\n> =\n | {\n feature_id: FeatureId;\n action_type: MetricsActionType;\n location: BridgeControllerMetricsLocation;\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\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 BridgeControllerMetricsEventName,\n> = T extends BatchSellMetricsEventName\n ? Pick<EventPropertiesFromControllerState, T>[T]\n : SharedCrossChainSwapsEventProperties<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 {\n InputPrimaryDenomination,\n SortOrder,\n StatusTypes,\n} from '../../types.js';\nimport type { FeatureId } from '../../validators/feature-flags.js';\nimport type {\n UnifiedSwapBridgeEventName,\n BatchSellMetricsEventName,\n BatchSellMetricsLocation,\n BridgeControllerMetricsEventName,\n BridgeControllerMetricsLocation,\n MetricsActionType,\n MetricsSwapType,\n PollingStatus,\n FailurePhase,\n SwapBridgeErrorCode,\n} from './constants.js';\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 * Client-supplied security classification for the destination token\n * (e.g. from token security/scanning data). Stored on the controller\n * and merged into every analytics event that includes\n * `token_address_destination`. Pass `null` when no security data is\n * available for the selected destination token.\n */\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; // 0 === auto when no numeric limit is available\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 HashPresenceData = {\n source_hash_present?: boolean;\n destination_hash_present?: boolean;\n};\n\nexport type FailureTelemetryData = HashPresenceData & {\n failure_phase?: FailurePhase;\n error_code?: SwapBridgeErrorCode;\n};\n\nexport type InputPrimaryDenominationData = {\n input_primary_denomination?: InputPrimaryDenomination;\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\ntype BatchSellChainProperties = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n};\n\ntype BatchSellTokenPageEventContext = BatchSellChainProperties & {\n location: BatchSellMetricsLocation;\n};\n\ntype BatchSellSourceTokenEventContext = BatchSellTokenPageEventContext & {\n source_token_symbols: string[];\n source_token_addresses: CaipAssetType[];\n};\n\ntype BatchSellQuotePageEventContext = BatchSellSourceTokenEventContext & {\n destination_token_symbol: string;\n destination_token_address: CaipAssetType;\n usd_amount_source_tokens: number[];\n usd_amount_source_total: number;\n source_token_slippages: number[];\n};\n\ntype BatchSellReviewModalSubmittedEventContext =\n BatchSellQuotePageEventContext &\n Pick<TradeData, 'usd_quoted_gas' | 'usd_quoted_return'>;\n\ntype BatchSellTokenPageEventProperties = BatchSellChainProperties &\n BatchSellTokenPageEventContext;\n\ntype BatchSellSourceTokenEventProperties = BatchSellChainProperties &\n BatchSellSourceTokenEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellQuotePageEventProperties = BatchSellChainProperties &\n BatchSellQuotePageEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellReviewModalSubmittedEventProperties = BatchSellChainProperties &\n BatchSellReviewModalSubmittedEventContext & {\n source_token_count: number;\n };\n\ntype SharedEventContextFromClient = {\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n feature_id: FeatureId;\n};\n\ntype OptionalLocationContextFromClient<T> = T extends {\n location: unknown;\n}\n ? object\n : { location?: BridgeControllerMetricsLocation };\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * Most events receive an optional location via RequiredEventContextFromClient;\n * Batch Sell events define their own required location enum.\n */\ntype RequiredEventContextFromClientBase = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n > & { environment_type?: string };\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.FiatCryptoToggleClicked]: {\n token_symbol_source: string;\n token_symbol_destination: string | null;\n previous_primary_denomination: InputPrimaryDenomination;\n new_primary_denomination: InputPrimaryDenomination;\n chain_id_source?: RequestParams['chain_id_source'];\n chain_id_destination?: RequestParams['chain_id_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 swap_type?: RequestMetadata['swap_type'];\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 token_security_type_destination: RequestParams['token_security_type_destination'];\n custom_slippage?: RequestMetadata['custom_slippage'];\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: TradeData &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> &\n InputPrimaryDenominationData & {\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 has_sufficient_gas_for_quote?: boolean | null;\n usd_amount_source: number;\n custom_slippage?: RequestMetadata['custom_slippage'];\n slippage_limit?: RequestMetadata['slippage_limit'];\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 Pick<FailureTelemetryData, 'failure_phase' | 'error_code'>;\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 batch_id?: string;\n } & InputPrimaryDenominationData &\n HashPresenceData;\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 batch_id?: string;\n transaction_internal_id?: string;\n } & InputPrimaryDenominationData &\n HashPresenceData;\n [UnifiedSwapBridgeEventName.Failed]: (\n | // Tx failed before confirmation\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 >)\n // Tx failed after confirmation\n | (RequestParams &\n RequestMetadata &\n TxStatusData & {\n actual_time_minutes: number;\n })\n ) &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n error_message: string;\n batch_id?: string;\n } & FailureTelemetryData;\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: {\n polling_status: PollingStatus;\n retry_attempts: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: {\n failures: string[];\n refresh_count: number;\n } & Partial<RequestParams>;\n // Emitted by clients\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: Pick<\n TradeData,\n 'gas_included' | 'gas_included_7702'\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' | 'gas_included_7702'\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.AssetPickerOpened]: {\n asset_location: 'source' | 'destination';\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventContext;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventContext;\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 Unknown).\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]: K extends BatchSellMetricsEventName\n ? RequiredEventContextFromClientBase[K]\n : RequiredEventContextFromClientBase[K] &\n OptionalLocationContextFromClient<\n RequiredEventContextFromClientBase[K]\n > &\n SharedEventContextFromClient;\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 InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input: InputKeys;\n input_value: string;\n };\n [UnifiedSwapBridgeEventName.FiatCryptoToggleClicked]: RequestParams &\n Pick<RequestMetadata, 'swap_type'>;\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: RequestParams;\n [UnifiedSwapBridgeEventName.QuotesRequested]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData & {\n refresh_count: number; // starts from 0\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\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]: 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 batch_id?: string;\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventProperties;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventProperties;\n};\n\ntype SharedCrossChainSwapsEventProperties<\n T extends BridgeControllerMetricsEventName,\n> =\n | {\n feature_id: FeatureId;\n action_type: MetricsActionType;\n location: BridgeControllerMetricsLocation;\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\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 BridgeControllerMetricsEventName,\n> = T extends BatchSellMetricsEventName\n ? Pick<EventPropertiesFromControllerState, T>[T]\n : SharedCrossChainSwapsEventProperties<T>;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CaipAssetType, CaipChainId } from "@metamask/utils";
|
|
2
2
|
import type { InputPrimaryDenomination, SortOrder, StatusTypes } from "../../types.cjs";
|
|
3
3
|
import type { FeatureId } from "../../validators/feature-flags.cjs";
|
|
4
|
-
import type { UnifiedSwapBridgeEventName, BatchSellMetricsEventName, BatchSellMetricsLocation, BridgeControllerMetricsEventName, BridgeControllerMetricsLocation, MetricsActionType, MetricsSwapType, PollingStatus } from "./constants.cjs";
|
|
4
|
+
import type { UnifiedSwapBridgeEventName, BatchSellMetricsEventName, BatchSellMetricsLocation, BridgeControllerMetricsEventName, BridgeControllerMetricsLocation, MetricsActionType, MetricsSwapType, PollingStatus, FailurePhase, SwapBridgeErrorCode } from "./constants.cjs";
|
|
5
5
|
/**
|
|
6
6
|
* 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
|
|
7
7
|
*/
|
|
@@ -23,7 +23,7 @@ export type RequestParams = {
|
|
|
23
23
|
};
|
|
24
24
|
export type AccountHardwareType = 'Ledger' | 'Trezor' | 'QR Hardware' | 'Lattice' | null;
|
|
25
25
|
export type RequestMetadata = {
|
|
26
|
-
slippage_limit
|
|
26
|
+
slippage_limit: number;
|
|
27
27
|
custom_slippage: boolean;
|
|
28
28
|
usd_amount_source: number;
|
|
29
29
|
stx_enabled: boolean;
|
|
@@ -55,6 +55,14 @@ export type TxStatusData = {
|
|
|
55
55
|
source_transaction?: StatusTypes;
|
|
56
56
|
destination_transaction?: StatusTypes;
|
|
57
57
|
};
|
|
58
|
+
export type HashPresenceData = {
|
|
59
|
+
source_hash_present?: boolean;
|
|
60
|
+
destination_hash_present?: boolean;
|
|
61
|
+
};
|
|
62
|
+
export type FailureTelemetryData = HashPresenceData & {
|
|
63
|
+
failure_phase?: FailurePhase;
|
|
64
|
+
error_code?: SwapBridgeErrorCode;
|
|
65
|
+
};
|
|
58
66
|
export type InputPrimaryDenominationData = {
|
|
59
67
|
input_primary_denomination?: InputPrimaryDenomination;
|
|
60
68
|
};
|
|
@@ -150,6 +158,7 @@ type RequiredEventContextFromClientBase = {
|
|
|
150
158
|
token_symbol_source: RequestParams['token_symbol_source'];
|
|
151
159
|
token_symbol_destination: RequestParams['token_symbol_destination'];
|
|
152
160
|
token_security_type_destination: RequestParams['token_security_type_destination'];
|
|
161
|
+
custom_slippage?: RequestMetadata['custom_slippage'];
|
|
153
162
|
} & InputPrimaryDenominationData;
|
|
154
163
|
[UnifiedSwapBridgeEventName.QuotesReceived]: TradeData & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & InputPrimaryDenominationData & {
|
|
155
164
|
warnings: QuoteWarning[];
|
|
@@ -159,15 +168,17 @@ type RequiredEventContextFromClientBase = {
|
|
|
159
168
|
usd_balance_source?: number;
|
|
160
169
|
has_sufficient_gas_for_quote?: boolean | null;
|
|
161
170
|
usd_amount_source: number;
|
|
171
|
+
custom_slippage?: RequestMetadata['custom_slippage'];
|
|
172
|
+
slippage_limit?: RequestMetadata['slippage_limit'];
|
|
162
173
|
};
|
|
163
174
|
[UnifiedSwapBridgeEventName.QuotesError]: Pick<RequestMetadata, 'stx_enabled'> & {
|
|
164
175
|
token_symbol_source: RequestParams['token_symbol_source'];
|
|
165
176
|
token_symbol_destination: RequestParams['token_symbol_destination'];
|
|
166
|
-
} & Pick<RequestMetadata, 'security_warnings'>;
|
|
177
|
+
} & Pick<RequestMetadata, 'security_warnings'> & Pick<FailureTelemetryData, 'failure_phase' | 'error_code'>;
|
|
167
178
|
[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'> & {
|
|
168
179
|
action_type: MetricsActionType;
|
|
169
180
|
batch_id?: string;
|
|
170
|
-
} & InputPrimaryDenominationData;
|
|
181
|
+
} & InputPrimaryDenominationData & HashPresenceData;
|
|
171
182
|
[UnifiedSwapBridgeEventName.Completed]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & TxStatusData & RequestParams & {
|
|
172
183
|
actual_time_minutes: number;
|
|
173
184
|
usd_actual_return: number;
|
|
@@ -177,14 +188,14 @@ type RequiredEventContextFromClientBase = {
|
|
|
177
188
|
action_type: MetricsActionType;
|
|
178
189
|
batch_id?: string;
|
|
179
190
|
transaction_internal_id?: string;
|
|
180
|
-
} & InputPrimaryDenominationData;
|
|
191
|
+
} & InputPrimaryDenominationData & HashPresenceData;
|
|
181
192
|
[UnifiedSwapBridgeEventName.Failed]: (// Tx failed before confirmation
|
|
182
193
|
(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'>) | (RequestParams & RequestMetadata & TxStatusData & {
|
|
183
194
|
actual_time_minutes: number;
|
|
184
195
|
})) & TradeData & Pick<QuoteFetchData, 'price_impact'> & {
|
|
185
196
|
error_message: string;
|
|
186
197
|
batch_id?: string;
|
|
187
|
-
};
|
|
198
|
+
} & FailureTelemetryData;
|
|
188
199
|
[UnifiedSwapBridgeEventName.PollingStatusUpdated]: {
|
|
189
200
|
polling_status: PollingStatus;
|
|
190
201
|
retry_attempts: number;
|
|
@@ -257,6 +268,7 @@ export type EventPropertiesFromControllerState = {
|
|
|
257
268
|
} & InputPrimaryDenominationData;
|
|
258
269
|
[UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams & RequestMetadata & QuoteFetchData & TradeData & {
|
|
259
270
|
refresh_count: number;
|
|
271
|
+
has_sufficient_funds: boolean;
|
|
260
272
|
} & InputPrimaryDenominationData;
|
|
261
273
|
[UnifiedSwapBridgeEventName.QuotesError]: RequestParams & RequestMetadata & {
|
|
262
274
|
has_sufficient_funds: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB;AAElE,OAAO,KAAK,EACV,wBAAwB,EACxB,SAAS,EACT,WAAW,EACZ,wBAAuB;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,2CAA0C;AACnE,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,+BAA+B,EAC/B,iBAAiB,EACjB,eAAe,EACf,aAAa,EACd,wBAAuB;AAExB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,WAAW,CAAC;IAC7B,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,oBAAoB,EAAE,aAAa,CAAC;IACpC,yBAAyB,EAAE,aAAa,GAAG,IAAI,CAAC;IAChD;;;;;;OAMG;IACH,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,SAAS,GACT,IAAI,CAAC;AAET,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,mBAAmB,CAAC;IAC3C,SAAS,EAAE,eAAe,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;IACrC,4BAA4B,EAAE,MAAM,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,2BAA2B,CAAC,EAAE,WAAW,CAAC;IAC1C,oBAAoB,CAAC,EAAE,WAAW,CAAC;IACnC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,uBAAuB,CAAC,EAAE,WAAW,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,0BAA0B,CAAC,EAAE,wBAAwB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,mBAAmB,GACnB,UAAU,GACV,qBAAqB,CAAC;AAE1B,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,iBAAiB,EAAE,aAAa,CAAC;IACjC,YAAY,EAAE,WAAW,CAAC;IAC1B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,WAAW,GACX,0BAA0B,GAC1B,qCAAqC,GACrC,sBAAsB,GACtB,eAAe,GACf,cAAc,GACd,eAAe,GACf,UAAU,CAAC;AAEf,KAAK,wBAAwB,GAAG;IAC9B,eAAe,EAAE,WAAW,CAAC;IAC7B,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,KAAK,8BAA8B,GAAG,wBAAwB,GAAG;IAC/D,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAEF,KAAK,gCAAgC,GAAG,8BAA8B,GAAG;IACvE,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,sBAAsB,EAAE,aAAa,EAAE,CAAC;CACzC,CAAC;AAEF,KAAK,8BAA8B,GAAG,gCAAgC,GAAG;IACvE,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,aAAa,CAAC;IACzC,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,yCAAyC,GAC5C,8BAA8B,GAC5B,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,mBAAmB,CAAC,CAAC;AAE5D,KAAK,iCAAiC,GAAG,wBAAwB,GAC/D,8BAA8B,CAAC;AAEjC,KAAK,mCAAmC,GAAG,wBAAwB,GACjE,gCAAgC,GAAG;IACjC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEJ,KAAK,iCAAiC,GAAG,wBAAwB,GAC/D,8BAA8B,GAAG;IAC/B,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEJ,KAAK,4CAA4C,GAAG,wBAAwB,GAC1E,yCAAyC,GAAG;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEJ,KAAK,4BAA4B,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,KAAK,iCAAiC,CAAC,CAAC,IAAI,CAAC,SAAS;IACpD,QAAQ,EAAE,OAAO,CAAC;CACnB,GACG,MAAM,GACN;IAAE,QAAQ,CAAC,EAAE,+BAA+B,CAAA;CAAE,CAAC;AAEnD;;;;GAIG;AACH,KAAK,kCAAkC,GAAG;IACxC,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,IAAI,CAC9C,aAAa,EACb,qBAAqB,GAAG,0BAA0B,CACnD,GAAG;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAElC,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAChD,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE;QACzC,KAAK,EACD,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,mBAAmB,GACnB,UAAU,GACV,qBAAqB,CAAC;QAC1B,WAAW,EAAE,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC;QAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,EAAE;QACpD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;QACxC,6BAA6B,EAAE,wBAAwB,CAAC;QACxD,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACnD,oBAAoB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC7D,oBAAoB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC7D,yBAAyB,CAAC,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;QACvE,+BAA+B,CAAC,EAAE,aAAa,CAAC,iCAAiC,CAAC,CAAC;QACnF,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;KAC1C,CAAC;IACF,CAAC,0BAA0B,CAAC,8BAA8B,CAAC,EAAE;QAC3D,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC1D,wBAAwB,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;QACpE,oBAAoB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC5D,yBAAyB,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;QACtE,+BAA+B,EAAE,aAAa,CAAC,iCAAiC,CAAC,CAAC;QAClF,eAAe,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAClD,oBAAoB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC7D,GAAG,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAC/C,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,IAAI,CAChD,eAAe,EACf,aAAa,GAAG,mBAAmB,CACpC,GAAG;QACF,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC1D,wBAAwB,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;QACpE,+BAA+B,EAAE,aAAa,CAAC,iCAAiC,CAAC,CAAC;KACnF,GAAG,4BAA4B,CAAC;IACjC,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,SAAS,GACpD,IAAI,CAAC,aAAa,EAAE,qBAAqB,GAAG,0BAA0B,CAAC,GACvE,4BAA4B,GAAG;QAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;QACzB,mBAAmB,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC3D,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;QAC7C,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;QACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,4BAA4B,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAC9C,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACJ,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,IAAI,CAC5C,eAAe,EACf,aAAa,CACd,GAAG;QACF,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC1D,wBAAwB,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;KACrE,GAAG,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE/C,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,SAAS,GAC/C,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GACpC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,GAC1C,IAAI,CACF,aAAa,EACX,qBAAqB,GACrB,0BAA0B,GAC1B,sBAAsB,GACtB,2BAA2B,GAC3B,iBAAiB,GACjB,sBAAsB,GACtB,iCAAiC,CACpC,GAAG;QACF,WAAW,EAAE,iBAAiB,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,4BAA4B,CAAC;IACnC,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,SAAS,GAC/C,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GACpC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,GAC1C,YAAY,GACZ,aAAa,GAAG;QACd,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,wBAAwB,EAAE,MAAM,CAAC;QACjC,wBAAwB,EAAE,MAAM,CAAC;QACjC,WAAW,EAAE,iBAAiB,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,GAAG,4BAA4B,CAAC;IACnC,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CACjC,gCAAgC;IAChC,CAAC,IAAI,CACH,eAAe,EACb,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,CAC1B,GACC,IAAI,CACF,aAAa,EACX,qBAAqB,GACrB,0BAA0B,GAC1B,sBAAsB,GACtB,2BAA2B,GAC3B,iCAAiC,CACpC,CAAC,GAEJ,CAAC,aAAa,GACZ,eAAe,GACf,YAAY,GAAG;QACb,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC,CACP,GACC,SAAS,GACT,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG;QACrC,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACJ,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,EAAE;QACjD,cAAc,EAAE,aAAa,CAAC;QAC9B,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,EAAE;QACnD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE3B,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,IAAI,CAChD,SAAS,EACT,cAAc,GAAG,mBAAmB,CACrC,GACC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GACpC,IAAI,CAAC,aAAa,EAAE,qBAAqB,GAAG,0BAA0B,CAAC,GAAG;QACxE,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;QAC5C,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;KAC1C,CAAC;IACJ,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,IAAI,CAChD,SAAS,EACT,cAAc,GAAG,mBAAmB,CACrC,GACC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GACpC,IAAI,CAAC,aAAa,EAAE,qBAAqB,GAAG,0BAA0B,CAAC,GAAG;QACxE,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;QAC5C,UAAU,EAAE,SAAS,CAAC;QACtB,mBAAmB,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC3D,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;KAC1C,CAAC;IACJ,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,SAAS,GAAG;QACtD,aAAa,EAAE,OAAO,CAAC;QACvB,mBAAmB,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC3D,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;QAC7C,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;KAC1C,CAAC;IACF,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,EAAE;QACtD,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,EAAE;QACnD,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE;QAC9C,cAAc,EAAE,QAAQ,GAAG,aAAa,CAAC;KAC1C,CAAC;IACF,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE,8BAA8B,CAAC;IACrF,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,EAAE,gCAAgC,CAAC;IAChG,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE,8BAA8B,CAAC;IACrF,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,EAAE,8BAA8B,CAAC;IAC5F,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,yCAAyC,CAAC;CACtG,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,8BAA8B,GAAG;KAC1C,CAAC,IAAI,MAAM,kCAAkC,GAAG,CAAC,SAAS,yBAAyB,GAChF,kCAAkC,CAAC,CAAC,CAAC,GACrC,kCAAkC,CAAC,CAAC,CAAC,GACnC,iCAAiC,CAC/B,kCAAkC,CAAC,CAAC,CAAC,CACtC,GACD,4BAA4B;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC1D,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,aAAa,GACpD,IAAI,CACF,eAAe,EACf,aAAa,GAAG,mBAAmB,GAAG,mBAAmB,CAC1D,GACD,4BAA4B,CAAC;IAC/B,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE;QACzC,KAAK,EAAE,SAAS,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,EAAE,aAAa,GACjE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC,0BAA0B,CAAC,8BAA8B,CAAC,EAAE,aAAa,CAAC;IAC3E,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,aAAa,GACzD,eAAe,GAAG;QAChB,oBAAoB,EAAE,OAAO,CAAC;KAC/B,GAAG,4BAA4B,CAAC;IACnC,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,aAAa,GACxD,eAAe,GACf,cAAc,GACd,SAAS,GAAG;QACV,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,4BAA4B,CAAC;IACnC,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,aAAa,GACrD,eAAe,GAAG;QAChB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACJ,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC7C,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC7C,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,aAAa,GAChD,eAAe,GACf,YAAY,GACZ,SAAS,GACT,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG;QACrC,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACJ,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,aAAa,GACzD,eAAe,GACf,SAAS,GACT,cAAc,CAAC;IACjB,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE,aAAa,GACzD,eAAe,GACf,SAAS,GACT,cAAc,CAAC;IACjB,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,aAAa,GACvD,eAAe,GACf,cAAc,GACd,SAAS,CAAC;IACZ,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC;IAC7D,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,EAAE,aAAa,GAAG;QACnE,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,EAAE,aAAa,CAAC;IACnE,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACrD,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,EAAE,SAAS,GAC1D,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,GACpC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,GAC1C,IAAI,CACF,aAAa,EACX,qBAAqB,GACrB,0BAA0B,GAC1B,iBAAiB,GACjB,sBAAsB,CACzB,GAAG;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACJ,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE,iCAAiC,CAAC;IACxF,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,EAAE,mCAAmC,CAAC;IACnG,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE,iCAAiC,CAAC;IACxF,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,EAAE,iCAAiC,CAAC;IAC/F,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,4CAA4C,CAAC;CACzG,CAAC;AAEF,KAAK,oCAAoC,CACvC,CAAC,SAAS,gCAAgC,IAExC;IACE,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpD,GACD,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9C,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,8BAA8B,CACxC,CAAC,SAAS,gCAAgC,IACxC,CAAC,SAAS,yBAAyB,GACnC,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9C,oCAAoC,CAAC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CaipAssetType, CaipChainId } from "@metamask/utils";
|
|
2
2
|
import type { InputPrimaryDenomination, SortOrder, StatusTypes } from "../../types.mjs";
|
|
3
3
|
import type { FeatureId } from "../../validators/feature-flags.mjs";
|
|
4
|
-
import type { UnifiedSwapBridgeEventName, BatchSellMetricsEventName, BatchSellMetricsLocation, BridgeControllerMetricsEventName, BridgeControllerMetricsLocation, MetricsActionType, MetricsSwapType, PollingStatus } from "./constants.mjs";
|
|
4
|
+
import type { UnifiedSwapBridgeEventName, BatchSellMetricsEventName, BatchSellMetricsLocation, BridgeControllerMetricsEventName, BridgeControllerMetricsLocation, MetricsActionType, MetricsSwapType, PollingStatus, FailurePhase, SwapBridgeErrorCode } from "./constants.mjs";
|
|
5
5
|
/**
|
|
6
6
|
* 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
|
|
7
7
|
*/
|
|
@@ -23,7 +23,7 @@ export type RequestParams = {
|
|
|
23
23
|
};
|
|
24
24
|
export type AccountHardwareType = 'Ledger' | 'Trezor' | 'QR Hardware' | 'Lattice' | null;
|
|
25
25
|
export type RequestMetadata = {
|
|
26
|
-
slippage_limit
|
|
26
|
+
slippage_limit: number;
|
|
27
27
|
custom_slippage: boolean;
|
|
28
28
|
usd_amount_source: number;
|
|
29
29
|
stx_enabled: boolean;
|
|
@@ -55,6 +55,14 @@ export type TxStatusData = {
|
|
|
55
55
|
source_transaction?: StatusTypes;
|
|
56
56
|
destination_transaction?: StatusTypes;
|
|
57
57
|
};
|
|
58
|
+
export type HashPresenceData = {
|
|
59
|
+
source_hash_present?: boolean;
|
|
60
|
+
destination_hash_present?: boolean;
|
|
61
|
+
};
|
|
62
|
+
export type FailureTelemetryData = HashPresenceData & {
|
|
63
|
+
failure_phase?: FailurePhase;
|
|
64
|
+
error_code?: SwapBridgeErrorCode;
|
|
65
|
+
};
|
|
58
66
|
export type InputPrimaryDenominationData = {
|
|
59
67
|
input_primary_denomination?: InputPrimaryDenomination;
|
|
60
68
|
};
|
|
@@ -150,6 +158,7 @@ type RequiredEventContextFromClientBase = {
|
|
|
150
158
|
token_symbol_source: RequestParams['token_symbol_source'];
|
|
151
159
|
token_symbol_destination: RequestParams['token_symbol_destination'];
|
|
152
160
|
token_security_type_destination: RequestParams['token_security_type_destination'];
|
|
161
|
+
custom_slippage?: RequestMetadata['custom_slippage'];
|
|
153
162
|
} & InputPrimaryDenominationData;
|
|
154
163
|
[UnifiedSwapBridgeEventName.QuotesReceived]: TradeData & Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & InputPrimaryDenominationData & {
|
|
155
164
|
warnings: QuoteWarning[];
|
|
@@ -159,15 +168,17 @@ type RequiredEventContextFromClientBase = {
|
|
|
159
168
|
usd_balance_source?: number;
|
|
160
169
|
has_sufficient_gas_for_quote?: boolean | null;
|
|
161
170
|
usd_amount_source: number;
|
|
171
|
+
custom_slippage?: RequestMetadata['custom_slippage'];
|
|
172
|
+
slippage_limit?: RequestMetadata['slippage_limit'];
|
|
162
173
|
};
|
|
163
174
|
[UnifiedSwapBridgeEventName.QuotesError]: Pick<RequestMetadata, 'stx_enabled'> & {
|
|
164
175
|
token_symbol_source: RequestParams['token_symbol_source'];
|
|
165
176
|
token_symbol_destination: RequestParams['token_symbol_destination'];
|
|
166
|
-
} & Pick<RequestMetadata, 'security_warnings'>;
|
|
177
|
+
} & Pick<RequestMetadata, 'security_warnings'> & Pick<FailureTelemetryData, 'failure_phase' | 'error_code'>;
|
|
167
178
|
[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'> & {
|
|
168
179
|
action_type: MetricsActionType;
|
|
169
180
|
batch_id?: string;
|
|
170
|
-
} & InputPrimaryDenominationData;
|
|
181
|
+
} & InputPrimaryDenominationData & HashPresenceData;
|
|
171
182
|
[UnifiedSwapBridgeEventName.Completed]: TradeData & Pick<QuoteFetchData, 'price_impact'> & Omit<RequestMetadata, 'security_warnings'> & TxStatusData & RequestParams & {
|
|
172
183
|
actual_time_minutes: number;
|
|
173
184
|
usd_actual_return: number;
|
|
@@ -177,14 +188,14 @@ type RequiredEventContextFromClientBase = {
|
|
|
177
188
|
action_type: MetricsActionType;
|
|
178
189
|
batch_id?: string;
|
|
179
190
|
transaction_internal_id?: string;
|
|
180
|
-
} & InputPrimaryDenominationData;
|
|
191
|
+
} & InputPrimaryDenominationData & HashPresenceData;
|
|
181
192
|
[UnifiedSwapBridgeEventName.Failed]: (// Tx failed before confirmation
|
|
182
193
|
(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'>) | (RequestParams & RequestMetadata & TxStatusData & {
|
|
183
194
|
actual_time_minutes: number;
|
|
184
195
|
})) & TradeData & Pick<QuoteFetchData, 'price_impact'> & {
|
|
185
196
|
error_message: string;
|
|
186
197
|
batch_id?: string;
|
|
187
|
-
};
|
|
198
|
+
} & FailureTelemetryData;
|
|
188
199
|
[UnifiedSwapBridgeEventName.PollingStatusUpdated]: {
|
|
189
200
|
polling_status: PollingStatus;
|
|
190
201
|
retry_attempts: number;
|
|
@@ -257,6 +268,7 @@ export type EventPropertiesFromControllerState = {
|
|
|
257
268
|
} & InputPrimaryDenominationData;
|
|
258
269
|
[UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams & RequestMetadata & QuoteFetchData & TradeData & {
|
|
259
270
|
refresh_count: number;
|
|
271
|
+
has_sufficient_funds: boolean;
|
|
260
272
|
} & InputPrimaryDenominationData;
|
|
261
273
|
[UnifiedSwapBridgeEventName.QuotesError]: RequestParams & RequestMetadata & {
|
|
262
274
|
has_sufficient_funds: boolean;
|