@metamask-previews/bridge-controller 61.0.0-preview-ca16f8f → 61.0.0-preview-f4ab1511
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 +4 -0
- package/dist/utils/metrics/properties.cjs +5 -3
- package/dist/utils/metrics/properties.cjs.map +1 -1
- package/dist/utils/metrics/properties.d.cts +1 -1
- package/dist/utils/metrics/properties.d.cts.map +1 -1
- package/dist/utils/metrics/properties.d.mts +1 -1
- package/dist/utils/metrics/properties.d.mts.map +1 -1
- package/dist/utils/metrics/properties.mjs +5 -3
- package/dist/utils/metrics/properties.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Add and export `getQuotesReceivedProperties` utility to build the metrics payload for clients ([#7182](https://github.com/MetaMask/core/pull/7182))
|
|
13
|
+
|
|
10
14
|
## [61.0.0]
|
|
11
15
|
|
|
12
16
|
### Changed
|
|
@@ -69,10 +69,10 @@ const isCustomSlippage = (slippage) => {
|
|
|
69
69
|
return slippage !== bridge_1.DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;
|
|
70
70
|
};
|
|
71
71
|
exports.isCustomSlippage = isCustomSlippage;
|
|
72
|
-
const getQuotesReceivedProperties = (activeQuote, warnings = [], recommendedQuote) => {
|
|
72
|
+
const getQuotesReceivedProperties = (activeQuote, warnings = [], isSubmittable = true, recommendedQuote) => {
|
|
73
73
|
const provider = activeQuote ? (0, exports.formatProviderLabel)(activeQuote.quote) : '_';
|
|
74
74
|
return {
|
|
75
|
-
can_submit:
|
|
75
|
+
can_submit: isSubmittable,
|
|
76
76
|
gas_included: Boolean(activeQuote?.quote?.gasIncluded),
|
|
77
77
|
gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),
|
|
78
78
|
quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds
|
|
@@ -80,7 +80,9 @@ const getQuotesReceivedProperties = (activeQuote, warnings = [], recommendedQuot
|
|
|
80
80
|
: 0,
|
|
81
81
|
usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),
|
|
82
82
|
usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),
|
|
83
|
-
best_quote_provider: recommendedQuote
|
|
83
|
+
best_quote_provider: recommendedQuote
|
|
84
|
+
? (0, exports.formatProviderLabel)(recommendedQuote.quote)
|
|
85
|
+
: provider,
|
|
84
86
|
provider,
|
|
85
87
|
warnings,
|
|
86
88
|
price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":";;;AAEA,+CAA8C;
|
|
1
|
+
{"version":3,"file":"properties.cjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { MetricsSwapType } from './constants';\nimport type {\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types';\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge';\nimport type { QuoteMetadata, QuoteResponse, TxData } from '../../types';\nimport {\n ChainId,\n type GenericQuoteRequest,\n type QuoteRequest,\n} from '../../types';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n bridgeId,\n bridges,\n}: QuoteResponse<TxData | string>['quote']): `${string}_${string}` =>\n `${bridgeId}_${bridges[0]}`;\n\nexport const getRequestParams = ({\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n}: Partial<GenericQuoteRequest>): Omit<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n };\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return selectedAccount?.metadata?.keyring.type?.includes('Hardware') ?? false;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>),\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>),\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n warnings,\n price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),\n };\n};\n"]}
|
|
@@ -17,7 +17,7 @@ export declare const isHardwareWallet: (selectedAccount?: AccountsControllerStat
|
|
|
17
17
|
* @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.
|
|
18
18
|
*/
|
|
19
19
|
export declare const isCustomSlippage: (slippage: GenericQuoteRequest['slippage']) => boolean;
|
|
20
|
-
export declare const getQuotesReceivedProperties: (activeQuote: QuoteResponse & Partial<QuoteMetadata
|
|
20
|
+
export declare const getQuotesReceivedProperties: (activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>), warnings?: QuoteWarning[], isSubmittable?: boolean, recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>)) => {
|
|
21
21
|
can_submit: boolean;
|
|
22
22
|
gas_included: boolean;
|
|
23
23
|
gas_included_7702: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAE7E,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"properties.d.cts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAE7E,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAgB;AAEjB,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,wBAAoB;AACxE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,wBAAoB;AAOrB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,QAAQ,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAG7B,cAAc,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,MAAM,IAAI,MAAM,EACnC,CAAC;AAE9B,eAAO,MAAM,gBAAgB,oEAK1B,QAAQ,mBAAmB,CAAC,KAAG,KAChC,aAAa,EACb,qBAAqB,GAAG,0BAA0B,CAoBnD,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,aAClD,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC;;;;;;;;;;;CAmBnE,CAAC"}
|
|
@@ -17,7 +17,7 @@ export declare const isHardwareWallet: (selectedAccount?: AccountsControllerStat
|
|
|
17
17
|
* @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.
|
|
18
18
|
*/
|
|
19
19
|
export declare const isCustomSlippage: (slippage: GenericQuoteRequest['slippage']) => boolean;
|
|
20
|
-
export declare const getQuotesReceivedProperties: (activeQuote: QuoteResponse & Partial<QuoteMetadata
|
|
20
|
+
export declare const getQuotesReceivedProperties: (activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>), warnings?: QuoteWarning[], isSubmittable?: boolean, recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>)) => {
|
|
21
21
|
can_submit: boolean;
|
|
22
22
|
gas_included: boolean;
|
|
23
23
|
gas_included_7702: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAE7E,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"properties.d.mts","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAE7E,OAAO,EAAE,eAAe,EAAE,wBAAoB;AAC9C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACd,oBAAgB;AAEjB,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,wBAAoB;AACxE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,wBAAoB;AAOrB,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,MAAM,YAAY,EAAE,SAAS,CAAC,CAOtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAC/C,MAAM,CACJ,MAAM,OAAO,yBAAyB,EACtC,CACE,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACtC,WAAW,CAAC,MAAM,WAAW,CAAC,GAAG,SAAS,CAChD,CAeF,CAAC;AAEF,eAAO,MAAM,WAAW,gBACT,mBAAmB,CAAC,YAAY,CAAC,gBAChC,mBAAmB,CAAC,aAAa,CAAC,oBAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBACjB,QAAQ,mBAAmB,CAAC,oBAG3C,CAAC;AAEF,eAAO,MAAM,mBAAmB,2BAG7B,cAAc,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,MAAM,IAAI,MAAM,EACnC,CAAC;AAE9B,eAAO,MAAM,gBAAgB,oEAK1B,QAAQ,mBAAmB,CAAC,KAAG,KAChC,aAAa,EACb,qBAAqB,GAAG,0BAA0B,CAoBnD,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAGlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAc,mBAAmB,CAAC,UAAU,CAAC,YAEzE,CAAC;AAEF,eAAO,MAAM,2BAA2B,gBACzB,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC,aAClD,YAAY,EAAE,kBACT,OAAO,qBACH,IAAI,GAAG,CAAC,aAAa,GAAG,QAAQ,aAAa,CAAC,CAAC;;;;;;;;;;;CAmBnE,CAAC"}
|
|
@@ -60,10 +60,10 @@ export const isHardwareWallet = (selectedAccount) => {
|
|
|
60
60
|
export const isCustomSlippage = (slippage) => {
|
|
61
61
|
return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;
|
|
62
62
|
};
|
|
63
|
-
export const getQuotesReceivedProperties = (activeQuote, warnings = [], recommendedQuote) => {
|
|
63
|
+
export const getQuotesReceivedProperties = (activeQuote, warnings = [], isSubmittable = true, recommendedQuote) => {
|
|
64
64
|
const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';
|
|
65
65
|
return {
|
|
66
|
-
can_submit:
|
|
66
|
+
can_submit: isSubmittable,
|
|
67
67
|
gas_included: Boolean(activeQuote?.quote?.gasIncluded),
|
|
68
68
|
gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),
|
|
69
69
|
quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds
|
|
@@ -71,7 +71,9 @@ export const getQuotesReceivedProperties = (activeQuote, warnings = [], recommen
|
|
|
71
71
|
: 0,
|
|
72
72
|
usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),
|
|
73
73
|
usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),
|
|
74
|
-
best_quote_provider: recommendedQuote
|
|
74
|
+
best_quote_provider: recommendedQuote
|
|
75
|
+
? formatProviderLabel(recommendedQuote.quote)
|
|
76
|
+
: provider,
|
|
75
77
|
provider,
|
|
76
78
|
warnings,
|
|
77
79
|
price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.mjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,wBAAoB;
|
|
1
|
+
{"version":3,"file":"properties.mjs","sourceRoot":"","sources":["../../../src/utils/metrics/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\n\nimport { MetricsSwapType } from './constants';\nimport type {\n InputKeys,\n InputValues,\n QuoteWarning,\n RequestParams,\n} from './types';\nimport { DEFAULT_BRIDGE_CONTROLLER_STATE } from '../../constants/bridge';\nimport type { QuoteMetadata, QuoteResponse, TxData } from '../../types';\nimport {\n ChainId,\n type GenericQuoteRequest,\n type QuoteRequest,\n} from '../../types';\nimport { getNativeAssetForChainId, isCrossChain } from '../bridge';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n} from '../caip-formatters';\n\nexport const toInputChangedPropertyKey: Partial<\n Record<keyof QuoteRequest, InputKeys>\n> = {\n srcTokenAddress: 'token_source',\n destTokenAddress: 'token_destination',\n srcChainId: 'chain_source',\n destChainId: 'chain_destination',\n slippage: 'slippage',\n};\n\nexport const toInputChangedPropertyValue: Partial<\n Record<\n keyof typeof toInputChangedPropertyKey,\n (\n input_value: Partial<GenericQuoteRequest>,\n ) => InputValues[keyof InputValues] | undefined\n >\n> = {\n srcTokenAddress: ({ srcTokenAddress, srcChainId }) =>\n srcChainId\n ? formatAddressToAssetId(srcTokenAddress ?? '', srcChainId)\n : undefined,\n destTokenAddress: ({ destTokenAddress, destChainId }) =>\n destChainId\n ? formatAddressToAssetId(destTokenAddress ?? '', destChainId)\n : undefined,\n srcChainId: ({ srcChainId }) =>\n srcChainId ? formatChainIdToCaip(srcChainId) : undefined,\n destChainId: ({ destChainId }) =>\n destChainId ? formatChainIdToCaip(destChainId) : undefined,\n slippage: ({ slippage }) => (slippage ? Number(slippage) : slippage),\n};\n\nexport const getSwapType = (\n srcChainId?: GenericQuoteRequest['srcChainId'],\n destChainId?: GenericQuoteRequest['destChainId'],\n) => {\n if (srcChainId && !isCrossChain(srcChainId, destChainId ?? srcChainId)) {\n return MetricsSwapType.SINGLE;\n }\n return MetricsSwapType.CROSSCHAIN;\n};\n\nexport const getSwapTypeFromQuote = (\n quoteRequest: Partial<GenericQuoteRequest>,\n) => {\n return getSwapType(quoteRequest.srcChainId, quoteRequest.destChainId);\n};\n\nexport const formatProviderLabel = ({\n bridgeId,\n bridges,\n}: QuoteResponse<TxData | string>['quote']): `${string}_${string}` =>\n `${bridgeId}_${bridges[0]}`;\n\nexport const getRequestParams = ({\n srcChainId,\n destChainId,\n srcTokenAddress,\n destTokenAddress,\n}: Partial<GenericQuoteRequest>): Omit<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n> => {\n // Fallback to ETH if srcChainId is not defined. This is ok since the clients default to Ethereum as the source chain\n // This also doesn't happen at runtime since the quote request is validated before metrics are published\n const srcChainIdCaip = formatChainIdToCaip(srcChainId ?? ChainId.ETH);\n return {\n chain_id_source: srcChainIdCaip,\n chain_id_destination: destChainId ? formatChainIdToCaip(destChainId) : null,\n token_address_source: srcTokenAddress\n ? (formatAddressToAssetId(srcTokenAddress, srcChainIdCaip) ??\n getNativeAssetForChainId(srcChainIdCaip)?.assetId ??\n null)\n : (getNativeAssetForChainId(srcChainIdCaip)?.assetId ?? null),\n token_address_destination: destTokenAddress\n ? (formatAddressToAssetId(\n destTokenAddress,\n destChainId ?? srcChainIdCaip,\n ) ?? null)\n : null,\n };\n};\n\nexport const isHardwareWallet = (\n selectedAccount?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n return selectedAccount?.metadata?.keyring.type?.includes('Hardware') ?? false;\n};\n\n/**\n * @param slippage - The slippage percentage\n * @returns Whether the default slippage was overridden by the user\n *\n * @deprecated This function should not be used. Use {@link selectDefaultSlippagePercentage} instead.\n */\nexport const isCustomSlippage = (slippage: GenericQuoteRequest['slippage']) => {\n return slippage !== DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest.slippage;\n};\n\nexport const getQuotesReceivedProperties = (\n activeQuote: null | (QuoteResponse & Partial<QuoteMetadata>),\n warnings: QuoteWarning[] = [],\n isSubmittable: boolean = true,\n recommendedQuote?: null | (QuoteResponse & Partial<QuoteMetadata>),\n) => {\n const provider = activeQuote ? formatProviderLabel(activeQuote.quote) : '_';\n return {\n can_submit: isSubmittable,\n gas_included: Boolean(activeQuote?.quote?.gasIncluded),\n gas_included_7702: Boolean(activeQuote?.quote?.gasIncluded7702),\n quoted_time_minutes: activeQuote?.estimatedProcessingTimeInSeconds\n ? activeQuote.estimatedProcessingTimeInSeconds / 60\n : 0,\n usd_quoted_gas: Number(activeQuote?.gasFee?.effective?.usd ?? 0),\n usd_quoted_return: Number(activeQuote?.toTokenAmount?.usd ?? 0),\n best_quote_provider: recommendedQuote\n ? formatProviderLabel(recommendedQuote.quote)\n : provider,\n provider,\n warnings,\n price_impact: Number(activeQuote?.quote.priceData?.priceImpact ?? 0),\n };\n};\n"]}
|
package/package.json
CHANGED