@metamask-previews/bridge-status-controller 38.1.0-preview-7dfc3145 → 40.0.0-preview-541d905c
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 +26 -1
- package/dist/bridge-status-controller.cjs +31 -29
- package/dist/bridge-status-controller.cjs.map +1 -1
- package/dist/bridge-status-controller.d.cts +8 -1
- package/dist/bridge-status-controller.d.cts.map +1 -1
- package/dist/bridge-status-controller.d.mts +8 -1
- package/dist/bridge-status-controller.d.mts.map +1 -1
- package/dist/bridge-status-controller.mjs +32 -30
- package/dist/bridge-status-controller.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +1 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/metrics.cjs +31 -2
- package/dist/utils/metrics.cjs.map +1 -1
- package/dist/utils/metrics.d.cts +27 -0
- package/dist/utils/metrics.d.cts.map +1 -1
- package/dist/utils/metrics.d.mts +27 -0
- package/dist/utils/metrics.d.mts.map +1 -1
- package/dist/utils/metrics.mjs +29 -1
- package/dist/utils/metrics.mjs.map +1 -1
- package/dist/utils/transaction.cjs +34 -7
- package/dist/utils/transaction.cjs.map +1 -1
- package/dist/utils/transaction.d.cts +2 -1
- package/dist/utils/transaction.d.cts.map +1 -1
- package/dist/utils/transaction.d.mts +2 -1
- package/dist/utils/transaction.d.mts.map +1 -1
- package/dist/utils/transaction.mjs +34 -7
- package/dist/utils/transaction.mjs.map +1 -1
- package/package.json +8 -8
package/dist/types.d.mts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsCA,8EAA8E;AAC9E,2BAA2B;AAE3B,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AA0CD,MAAM,CAAN,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,2BAAe,CAAA;IACf,uCAA2B,CAAA;IAC3B,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,qCAAyB,CAAA;IACzB,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EAbW,QAAQ,KAAR,QAAQ,QAanB;AA2CD,MAAM,CAAN,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,0FAAoE,CAAA;IACpE,6DAAuC,CAAA;IACvC,4CAAsB,CAAA;IACtB,gDAA0B,CAAA;IAC1B,4CAAsB,CAAA;IACtB,6FAAuE,CAAA;AACzE,CAAC,EAPW,kBAAkB,KAAlB,kBAAkB,QAO7B","sourcesContent":["import type {\n AccountsControllerGetAccountByAddressAction,\n AccountsControllerGetSelectedMultichainAccountAction,\n} from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n} from '@metamask/base-controller';\nimport type {\n BridgeBackgroundAction,\n BridgeControllerAction,\n ChainId,\n Quote,\n QuoteMetadata,\n QuoteResponse,\n TxData,\n} from '@metamask/bridge-controller';\nimport type { GetGasFeeState } from '@metamask/gas-fee-controller';\nimport type {\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetStateAction,\n} from '@metamask/network-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { HandleSnapRequest } from '@metamask/snaps-controllers';\nimport type { Infer } from '@metamask/superstruct';\nimport type {\n TransactionControllerGetStateAction,\n TransactionControllerTransactionConfirmedEvent,\n TransactionControllerTransactionFailedEvent,\n TransactionMeta,\n} from '@metamask/transaction-controller';\n\nimport type { BridgeStatusController } from './bridge-status-controller';\nimport type { BRIDGE_STATUS_CONTROLLER_NAME } from './constants';\nimport type { StatusResponseSchema } from './utils/validators';\n\n// All fields need to be types not interfaces, same with their children fields\n// o/w you get a type error\n\nexport enum BridgeClientId {\n EXTENSION = 'extension',\n MOBILE = 'mobile',\n}\n\nexport type FetchFunction = (\n input: RequestInfo | URL,\n init?: RequestInit,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<any>;\n\n/**\n * These fields are specific to Solana transactions and can likely be infered from TransactionMeta\n *\n * @deprecated these should be removed eventually\n */\nexport type SolanaTransactionMeta = {\n isSolana: boolean;\n isBridgeTx: boolean;\n};\n\nexport type StatusRequest = {\n bridgeId: string; // lifi, socket, squid\n srcTxHash?: string; // lifi, socket, squid, might be undefined for STX\n bridge: string; // lifi, socket, squid\n srcChainId: ChainId; // lifi, socket, squid\n destChainId: ChainId; // lifi, socket, squid\n quote?: Quote; // squid\n refuel?: boolean; // lifi\n};\n\nexport type StatusRequestDto = Omit<\n StatusRequest,\n 'quote' | 'srcChainId' | 'destChainId' | 'refuel'\n> & {\n srcChainId: string; // lifi, socket, squid\n destChainId: string; // lifi, socket, squid\n requestId?: string;\n refuel?: string; // lifi\n};\n\nexport type StatusRequestWithSrcTxHash = StatusRequest & {\n srcTxHash: string;\n};\n\nexport enum BridgeId {\n HOP = 'hop',\n CELER = 'celer',\n CELERCIRCLE = 'celercircle',\n CONNEXT = 'connext',\n POLYGON = 'polygon',\n AVALANCHE = 'avalanche',\n MULTICHAIN = 'multichain',\n AXELAR = 'axelar',\n ACROSS = 'across',\n STARGATE = 'stargate',\n RELAY = 'relay',\n MAYAN = 'mayan',\n}\n\nexport type StatusResponse = Infer<typeof StatusResponseSchema>;\n\nexport type RefuelStatusResponse = object & StatusResponse;\n\nexport type BridgeHistoryItem = {\n txMetaId: string; // Need this to handle STX that might not have a txHash immediately\n batchId?: string;\n quote: Quote;\n status: StatusResponse;\n startTime?: number; // timestamp in ms\n estimatedProcessingTimeInSeconds: number;\n slippagePercentage: number;\n completionTime?: number; // timestamp in ms\n pricingData?: {\n /**\n * The actual amount sent by user in non-atomic decimal form\n */\n amountSent: QuoteMetadata['sentAmount']['amount'];\n amountSentInUsd?: QuoteMetadata['sentAmount']['usd'];\n quotedGasInUsd?: QuoteMetadata['gasFee']['effective']['usd'];\n quotedGasAmount?: QuoteMetadata['gasFee']['effective']['amount'];\n quotedReturnInUsd?: QuoteMetadata['toTokenAmount']['usd'];\n quotedRefuelSrcAmountInUsd?: string;\n quotedRefuelDestAmountInUsd?: string;\n };\n initialDestAssetBalance?: string;\n targetContractAddress?: string;\n account: string;\n hasApprovalTx: boolean;\n approvalTxId?: string;\n isStxEnabled?: boolean;\n /**\n * Attempts tracking for exponential backoff on failed fetches.\n * We track the number of attempts and the last attempt time for each txMetaId that has failed at least once\n */\n attempts?: {\n counter: number;\n lastAttemptTime: number; // timestamp in ms\n };\n};\n\nexport enum BridgeStatusAction {\n START_POLLING_FOR_BRIDGE_TX_STATUS = 'startPollingForBridgeTxStatus',\n WIPE_BRIDGE_STATUS = 'wipeBridgeStatus',\n GET_STATE = 'getState',\n RESET_STATE = 'resetState',\n SUBMIT_TX = 'submitTx',\n RESTART_POLLING_FOR_FAILED_ATTEMPTS = 'restartPollingForFailedAttempts',\n}\n\nexport type TokenAmountValuesSerialized = {\n amount: string;\n valueInCurrency: string | null;\n usd: string | null;\n};\n\nexport type QuoteMetadataSerialized = {\n gasFee: TokenAmountValuesSerialized;\n /**\n * The total network fee for the bridge transaction\n * estimatedGasFees + relayerFees\n */\n totalNetworkFee: TokenAmountValuesSerialized;\n /**\n * The total max network fee for the bridge transaction\n * maxGasFees + relayerFees\n */\n totalMaxNetworkFee: TokenAmountValuesSerialized;\n toTokenAmount: TokenAmountValuesSerialized;\n /**\n * The adjusted return for the bridge transaction\n * destTokenAmount - totalNetworkFee\n */\n adjustedReturn: Omit<TokenAmountValuesSerialized, 'amount'>;\n /**\n * The actual amount sent by user in non-atomic decimal form\n * srcTokenAmount + metabridgeFee\n */\n sentAmount: TokenAmountValuesSerialized;\n swapRate: string; // destTokenAmount / sentAmount\n /**\n * The cost of the bridge transaction\n * sentAmount - adjustedReturn\n */\n cost: Omit<TokenAmountValuesSerialized, 'amount'>;\n};\n\nexport type StartPollingForBridgeTxStatusArgs = {\n bridgeTxMeta: TransactionMeta;\n statusRequest: StatusRequest;\n quoteResponse: QuoteResponse & QuoteMetadata;\n startTime?: BridgeHistoryItem['startTime'];\n slippagePercentage: BridgeHistoryItem['slippagePercentage'];\n initialDestAssetBalance?: BridgeHistoryItem['initialDestAssetBalance'];\n targetContractAddress?: BridgeHistoryItem['targetContractAddress'];\n approvalTxId?: BridgeHistoryItem['approvalTxId'];\n isStxEnabled?: BridgeHistoryItem['isStxEnabled'];\n};\n\n/**\n * Chrome: The BigNumber values are automatically serialized to strings when sent to the background\n * Firefox: The BigNumber values are not serialized to strings when sent to the background,\n * so we force the ui to do it manually, by using StartPollingForBridgeTxStatusArgsSerialized type on the startPollingForBridgeTxStatus action\n */\nexport type StartPollingForBridgeTxStatusArgsSerialized = Omit<\n StartPollingForBridgeTxStatusArgs,\n 'quoteResponse'\n> & {\n quoteResponse: QuoteResponse<string | TxData> & QuoteMetadata;\n};\n\nexport type SourceChainTxMetaId = string;\n\nexport type BridgeStatusControllerState = {\n txHistory: Record<SourceChainTxMetaId, BridgeHistoryItem>;\n};\n\n// Actions\ntype BridgeStatusControllerAction<\n FunctionName extends keyof BridgeStatusController,\n> = {\n type: `${typeof BRIDGE_STATUS_CONTROLLER_NAME}:${FunctionName}`;\n handler: BridgeStatusController[FunctionName];\n};\n\nexport type BridgeStatusControllerGetStateAction = ControllerGetStateAction<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerState\n>;\n\n// Maps to BridgeController function names\nexport type BridgeStatusControllerStartPollingForBridgeTxStatusAction =\n BridgeStatusControllerAction<BridgeStatusAction.START_POLLING_FOR_BRIDGE_TX_STATUS>;\n\nexport type BridgeStatusControllerWipeBridgeStatusAction =\n BridgeStatusControllerAction<BridgeStatusAction.WIPE_BRIDGE_STATUS>;\n\nexport type BridgeStatusControllerResetStateAction =\n BridgeStatusControllerAction<BridgeStatusAction.RESET_STATE>;\n\nexport type BridgeStatusControllerSubmitTxAction =\n BridgeStatusControllerAction<BridgeStatusAction.SUBMIT_TX>;\n\nexport type BridgeStatusControllerRestartPollingForFailedAttemptsAction =\n BridgeStatusControllerAction<BridgeStatusAction.RESTART_POLLING_FOR_FAILED_ATTEMPTS>;\n\nexport type BridgeStatusControllerActions =\n | BridgeStatusControllerStartPollingForBridgeTxStatusAction\n | BridgeStatusControllerWipeBridgeStatusAction\n | BridgeStatusControllerResetStateAction\n | BridgeStatusControllerGetStateAction\n | BridgeStatusControllerSubmitTxAction\n | BridgeStatusControllerRestartPollingForFailedAttemptsAction;\n\n// Events\nexport type BridgeStatusControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerState\n>;\n\nexport type BridgeStatusControllerEvents =\n BridgeStatusControllerStateChangeEvent;\n\n/**\n * The external actions available to the BridgeStatusController.\n */\ntype AllowedActions =\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetStateAction\n | NetworkControllerGetNetworkClientByIdAction\n | AccountsControllerGetSelectedMultichainAccountAction\n | HandleSnapRequest\n | TransactionControllerGetStateAction\n | BridgeControllerAction<BridgeBackgroundAction.GET_BRIDGE_ERC20_ALLOWANCE>\n | BridgeControllerAction<BridgeBackgroundAction.TRACK_METAMETRICS_EVENT>\n | BridgeControllerAction<BridgeBackgroundAction.STOP_POLLING_FOR_QUOTES>\n | GetGasFeeState\n | AccountsControllerGetAccountByAddressAction\n | RemoteFeatureFlagControllerGetStateAction;\n\n/**\n * The external events available to the BridgeStatusController.\n */\ntype AllowedEvents =\n | TransactionControllerTransactionFailedEvent\n | TransactionControllerTransactionConfirmedEvent;\n\n/**\n * The messenger for the BridgeStatusController.\n */\nexport type BridgeStatusControllerMessenger = RestrictedMessenger<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerActions | AllowedActions,\n BridgeStatusControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n"]}
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsCA,8EAA8E;AAC9E,2BAA2B;AAE3B,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AA0CD,MAAM,CAAN,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,2BAAe,CAAA;IACf,uCAA2B,CAAA;IAC3B,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,qCAAyB,CAAA;IACzB,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EAbW,QAAQ,KAAR,QAAQ,QAanB;AA2CD,MAAM,CAAN,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,0FAAoE,CAAA;IACpE,6DAAuC,CAAA;IACvC,4CAAsB,CAAA;IACtB,gDAA0B,CAAA;IAC1B,4CAAsB,CAAA;IACtB,6FAAuE,CAAA;AACzE,CAAC,EAPW,kBAAkB,KAAlB,kBAAkB,QAO7B","sourcesContent":["import type {\n AccountsControllerGetAccountByAddressAction,\n AccountsControllerGetSelectedMultichainAccountAction,\n} from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n} from '@metamask/base-controller';\nimport type {\n BridgeBackgroundAction,\n BridgeControllerAction,\n ChainId,\n Quote,\n QuoteMetadata,\n QuoteResponse,\n TxData,\n} from '@metamask/bridge-controller';\nimport type { GetGasFeeState } from '@metamask/gas-fee-controller';\nimport type {\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetStateAction,\n} from '@metamask/network-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { HandleSnapRequest } from '@metamask/snaps-controllers';\nimport type { Infer } from '@metamask/superstruct';\nimport type {\n TransactionControllerGetStateAction,\n TransactionControllerTransactionConfirmedEvent,\n TransactionControllerTransactionFailedEvent,\n TransactionMeta,\n} from '@metamask/transaction-controller';\n\nimport type { BridgeStatusController } from './bridge-status-controller';\nimport type { BRIDGE_STATUS_CONTROLLER_NAME } from './constants';\nimport type { StatusResponseSchema } from './utils/validators';\n\n// All fields need to be types not interfaces, same with their children fields\n// o/w you get a type error\n\nexport enum BridgeClientId {\n EXTENSION = 'extension',\n MOBILE = 'mobile',\n}\n\nexport type FetchFunction = (\n input: RequestInfo | URL,\n init?: RequestInit,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<any>;\n\n/**\n * These fields are specific to Solana transactions and can likely be infered from TransactionMeta\n *\n * @deprecated these should be removed eventually\n */\nexport type SolanaTransactionMeta = {\n isSolana: boolean;\n isBridgeTx: boolean;\n};\n\nexport type StatusRequest = {\n bridgeId: string; // lifi, socket, squid\n srcTxHash?: string; // lifi, socket, squid, might be undefined for STX\n bridge: string; // lifi, socket, squid\n srcChainId: ChainId; // lifi, socket, squid\n destChainId: ChainId; // lifi, socket, squid\n quote?: Quote; // squid\n refuel?: boolean; // lifi\n};\n\nexport type StatusRequestDto = Omit<\n StatusRequest,\n 'quote' | 'srcChainId' | 'destChainId' | 'refuel'\n> & {\n srcChainId: string; // lifi, socket, squid\n destChainId: string; // lifi, socket, squid\n requestId?: string;\n refuel?: string; // lifi\n};\n\nexport type StatusRequestWithSrcTxHash = StatusRequest & {\n srcTxHash: string;\n};\n\nexport enum BridgeId {\n HOP = 'hop',\n CELER = 'celer',\n CELERCIRCLE = 'celercircle',\n CONNEXT = 'connext',\n POLYGON = 'polygon',\n AVALANCHE = 'avalanche',\n MULTICHAIN = 'multichain',\n AXELAR = 'axelar',\n ACROSS = 'across',\n STARGATE = 'stargate',\n RELAY = 'relay',\n MAYAN = 'mayan',\n}\n\nexport type StatusResponse = Infer<typeof StatusResponseSchema>;\n\nexport type RefuelStatusResponse = object & StatusResponse;\n\nexport type BridgeHistoryItem = {\n txMetaId: string; // Need this to handle STX that might not have a txHash immediately\n batchId?: string;\n quote: Quote;\n status: StatusResponse;\n startTime?: number; // timestamp in ms\n estimatedProcessingTimeInSeconds: number;\n slippagePercentage: number;\n completionTime?: number; // timestamp in ms\n pricingData?: {\n /**\n * The actual amount sent by user in non-atomic decimal form\n */\n amountSent: QuoteMetadata['sentAmount']['amount'];\n amountSentInUsd?: QuoteMetadata['sentAmount']['usd'];\n quotedGasInUsd?: QuoteMetadata['gasFee']['effective']['usd'];\n quotedGasAmount?: QuoteMetadata['gasFee']['effective']['amount'];\n quotedReturnInUsd?: QuoteMetadata['toTokenAmount']['usd'];\n quotedRefuelSrcAmountInUsd?: string;\n quotedRefuelDestAmountInUsd?: string;\n };\n initialDestAssetBalance?: string;\n targetContractAddress?: string;\n account: string;\n hasApprovalTx: boolean;\n approvalTxId?: string;\n isStxEnabled?: boolean;\n /**\n * Attempts tracking for exponential backoff on failed fetches.\n * We track the number of attempts and the last attempt time for each txMetaId that has failed at least once\n */\n attempts?: {\n counter: number;\n lastAttemptTime: number; // timestamp in ms\n };\n};\n\nexport enum BridgeStatusAction {\n START_POLLING_FOR_BRIDGE_TX_STATUS = 'startPollingForBridgeTxStatus',\n WIPE_BRIDGE_STATUS = 'wipeBridgeStatus',\n GET_STATE = 'getState',\n RESET_STATE = 'resetState',\n SUBMIT_TX = 'submitTx',\n RESTART_POLLING_FOR_FAILED_ATTEMPTS = 'restartPollingForFailedAttempts',\n}\n\nexport type TokenAmountValuesSerialized = {\n amount: string;\n valueInCurrency: string | null;\n usd: string | null;\n};\n\nexport type QuoteMetadataSerialized = {\n gasFee: TokenAmountValuesSerialized;\n /**\n * The total network fee for the bridge transaction\n * estimatedGasFees + relayerFees\n */\n totalNetworkFee: TokenAmountValuesSerialized;\n /**\n * The total max network fee for the bridge transaction\n * maxGasFees + relayerFees\n */\n totalMaxNetworkFee: TokenAmountValuesSerialized;\n toTokenAmount: TokenAmountValuesSerialized;\n /**\n * The adjusted return for the bridge transaction\n * destTokenAmount - totalNetworkFee\n */\n adjustedReturn: Omit<TokenAmountValuesSerialized, 'amount'>;\n /**\n * The actual amount sent by user in non-atomic decimal form\n * srcTokenAmount + metabridgeFee\n */\n sentAmount: TokenAmountValuesSerialized;\n swapRate: string; // destTokenAmount / sentAmount\n /**\n * The cost of the bridge transaction\n * sentAmount - adjustedReturn\n */\n cost: Omit<TokenAmountValuesSerialized, 'amount'>;\n};\n\nexport type StartPollingForBridgeTxStatusArgs = {\n bridgeTxMeta: TransactionMeta;\n statusRequest: StatusRequest;\n quoteResponse: QuoteResponse & QuoteMetadata;\n startTime?: BridgeHistoryItem['startTime'];\n slippagePercentage: BridgeHistoryItem['slippagePercentage'];\n initialDestAssetBalance?: BridgeHistoryItem['initialDestAssetBalance'];\n targetContractAddress?: BridgeHistoryItem['targetContractAddress'];\n approvalTxId?: BridgeHistoryItem['approvalTxId'];\n isStxEnabled?: BridgeHistoryItem['isStxEnabled'];\n accountAddress: string;\n};\n\n/**\n * Chrome: The BigNumber values are automatically serialized to strings when sent to the background\n * Firefox: The BigNumber values are not serialized to strings when sent to the background,\n * so we force the ui to do it manually, by using StartPollingForBridgeTxStatusArgsSerialized type on the startPollingForBridgeTxStatus action\n */\nexport type StartPollingForBridgeTxStatusArgsSerialized = Omit<\n StartPollingForBridgeTxStatusArgs,\n 'quoteResponse'\n> & {\n quoteResponse: QuoteResponse<string | TxData> & QuoteMetadata;\n};\n\nexport type SourceChainTxMetaId = string;\n\nexport type BridgeStatusControllerState = {\n txHistory: Record<SourceChainTxMetaId, BridgeHistoryItem>;\n};\n\n// Actions\ntype BridgeStatusControllerAction<\n FunctionName extends keyof BridgeStatusController,\n> = {\n type: `${typeof BRIDGE_STATUS_CONTROLLER_NAME}:${FunctionName}`;\n handler: BridgeStatusController[FunctionName];\n};\n\nexport type BridgeStatusControllerGetStateAction = ControllerGetStateAction<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerState\n>;\n\n// Maps to BridgeController function names\nexport type BridgeStatusControllerStartPollingForBridgeTxStatusAction =\n BridgeStatusControllerAction<BridgeStatusAction.START_POLLING_FOR_BRIDGE_TX_STATUS>;\n\nexport type BridgeStatusControllerWipeBridgeStatusAction =\n BridgeStatusControllerAction<BridgeStatusAction.WIPE_BRIDGE_STATUS>;\n\nexport type BridgeStatusControllerResetStateAction =\n BridgeStatusControllerAction<BridgeStatusAction.RESET_STATE>;\n\nexport type BridgeStatusControllerSubmitTxAction =\n BridgeStatusControllerAction<BridgeStatusAction.SUBMIT_TX>;\n\nexport type BridgeStatusControllerRestartPollingForFailedAttemptsAction =\n BridgeStatusControllerAction<BridgeStatusAction.RESTART_POLLING_FOR_FAILED_ATTEMPTS>;\n\nexport type BridgeStatusControllerActions =\n | BridgeStatusControllerStartPollingForBridgeTxStatusAction\n | BridgeStatusControllerWipeBridgeStatusAction\n | BridgeStatusControllerResetStateAction\n | BridgeStatusControllerGetStateAction\n | BridgeStatusControllerSubmitTxAction\n | BridgeStatusControllerRestartPollingForFailedAttemptsAction;\n\n// Events\nexport type BridgeStatusControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerState\n>;\n\nexport type BridgeStatusControllerEvents =\n BridgeStatusControllerStateChangeEvent;\n\n/**\n * The external actions available to the BridgeStatusController.\n */\ntype AllowedActions =\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetStateAction\n | NetworkControllerGetNetworkClientByIdAction\n | AccountsControllerGetSelectedMultichainAccountAction\n | HandleSnapRequest\n | TransactionControllerGetStateAction\n | BridgeControllerAction<BridgeBackgroundAction.GET_BRIDGE_ERC20_ALLOWANCE>\n | BridgeControllerAction<BridgeBackgroundAction.TRACK_METAMETRICS_EVENT>\n | BridgeControllerAction<BridgeBackgroundAction.STOP_POLLING_FOR_QUOTES>\n | GetGasFeeState\n | AccountsControllerGetAccountByAddressAction\n | RemoteFeatureFlagControllerGetStateAction;\n\n/**\n * The external events available to the BridgeStatusController.\n */\ntype AllowedEvents =\n | TransactionControllerTransactionFailedEvent\n | TransactionControllerTransactionConfirmedEvent;\n\n/**\n * The messenger for the BridgeStatusController.\n */\nexport type BridgeStatusControllerMessenger = RestrictedMessenger<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerActions | AllowedActions,\n BridgeStatusControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n"]}
|
package/dist/utils/metrics.cjs
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getEVMTxPropertiesFromTransactionMeta = exports.getRequestMetadataFromHistory = exports.getTradeDataFromHistory = exports.getPriceImpactFromQuote = exports.getTradeDataFromQuote = exports.getRequestParamFromHistory = exports.getFinalizedTxProperties = exports.getTxStatusesFromHistory = void 0;
|
3
|
+
exports.getEVMTxPropertiesFromTransactionMeta = exports.getRequestMetadataFromHistory = exports.getTradeDataFromHistory = exports.getPreConfirmationPropertiesFromQuote = exports.getPriceImpactFromQuote = exports.getTradeDataFromQuote = exports.getRequestParamFromHistory = exports.getFinalizedTxProperties = exports.getTxStatusesFromHistory = void 0;
|
4
4
|
const bridge_controller_1 = require("@metamask/bridge-controller");
|
5
5
|
const transaction_controller_1 = require("@metamask/transaction-controller");
|
6
6
|
const bignumber_js_1 = require("bignumber.js");
|
@@ -46,7 +46,9 @@ const getFinalizedTxProperties = (historyItem, txMeta, approvalTxMeta) => {
|
|
46
46
|
const startTime = approvalTxMeta?.submittedTime ??
|
47
47
|
txMeta?.submittedTime ??
|
48
48
|
historyItem.startTime;
|
49
|
-
const completionTime =
|
49
|
+
const completionTime = txMeta?.type === transaction_controller_1.TransactionType.swap
|
50
|
+
? txMeta?.time
|
51
|
+
: historyItem.completionTime;
|
50
52
|
const actualGas = (0, gas_1.calcActualGasUsed)(historyItem, txMeta?.txReceipt, approvalTxMeta?.txReceipt);
|
51
53
|
const actualReturn = txMeta?.type === transaction_controller_1.TransactionType.swap
|
52
54
|
? (0, swap_received_amount_1.getActualSwapReceivedAmount)(historyItem, actualGas, txMeta)
|
@@ -96,6 +98,33 @@ const getPriceImpactFromQuote = (quote) => {
|
|
96
98
|
return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };
|
97
99
|
};
|
98
100
|
exports.getPriceImpactFromQuote = getPriceImpactFromQuote;
|
101
|
+
/**
|
102
|
+
* Before the tx is confirmed, its data is not available in txHistory
|
103
|
+
* The quote is used to populate event properties before confirmation
|
104
|
+
*
|
105
|
+
* @param quoteResponse - The quote response
|
106
|
+
* @param isStxEnabledOnClient - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension
|
107
|
+
* @param isHardwareAccount - whether the tx is submitted using a hardware wallet
|
108
|
+
* @returns The properties for the pre-confirmation event
|
109
|
+
*/
|
110
|
+
const getPreConfirmationPropertiesFromQuote = (quoteResponse, isStxEnabledOnClient, isHardwareAccount) => {
|
111
|
+
const { quote } = quoteResponse;
|
112
|
+
return {
|
113
|
+
...(0, exports.getPriceImpactFromQuote)(quote),
|
114
|
+
...(0, exports.getTradeDataFromQuote)(quoteResponse),
|
115
|
+
chain_id_source: (0, bridge_controller_1.formatChainIdToCaip)(quote.srcChainId),
|
116
|
+
token_symbol_source: quote.srcAsset.symbol,
|
117
|
+
chain_id_destination: (0, bridge_controller_1.formatChainIdToCaip)(quote.destChainId),
|
118
|
+
token_symbol_destination: quote.destAsset.symbol,
|
119
|
+
is_hardware_wallet: isHardwareAccount,
|
120
|
+
swap_type: (0, bridge_controller_1.getSwapType)(quoteResponse.quote.srcChainId, quoteResponse.quote.destChainId),
|
121
|
+
usd_amount_source: Number(quoteResponse.sentAmount?.usd ?? 0),
|
122
|
+
stx_enabled: isStxEnabledOnClient,
|
123
|
+
action_type: bridge_controller_1.MetricsActionType.SWAPBRIDGE_V1,
|
124
|
+
custom_slippage: false, // TODO detect whether the user changed the default slippage
|
125
|
+
};
|
126
|
+
};
|
127
|
+
exports.getPreConfirmationPropertiesFromQuote = getPreConfirmationPropertiesFromQuote;
|
99
128
|
const getTradeDataFromHistory = (historyItem) => {
|
100
129
|
return {
|
101
130
|
usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metrics.cjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n QuoteResponse,\n TxData,\n QuoteMetadata,\n QuoteFetchData,\n} from '@metamask/bridge-controller';\nimport {\n type TxStatusData,\n StatusTypes,\n formatChainIdToHex,\n isEthUsdt,\n type RequestParams,\n formatChainIdToCaip,\n type TradeData,\n formatProviderLabel,\n type RequestMetadata,\n isCustomSlippage,\n getSwapType,\n isHardwareWallet,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n type TransactionMeta,\n} from '@metamask/transaction-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { calcActualGasUsed } from './gas';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount';\nimport type { BridgeHistoryItem } from '../types';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime = historyItem.completionTime ?? txMeta?.time;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.effective?.usd ?? 0),\n gas_included: quoteResponse.quote.gasIncluded ?? false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponse['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const { quote, slippagePercentage, isStxEnabled } = historyItem;\n\n return {\n slippage_limit: slippagePercentage,\n custom_slippage: isCustomSlippage(slippagePercentage),\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n is_hardware_wallet: isHardwareWallet(account),\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n) => {\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: transactionMeta.error?.message\n ? 'Failed to finalize swap tx'\n : undefined,\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 100,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n custom_slippage: false,\n is_hardware_wallet: false,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n };\n};\n"]}
|
1
|
+
{"version":3,"file":"metrics.cjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":";;;AAOA,mEAgBqC;AACrC,6EAI0C;AAE1C,+CAAyC;AAEzC,mCAA0C;AAC1C,qEAGgC;AAGzB,MAAM,wBAAwB,GAAG,CAAC,EACvC,MAAM,EACN,aAAa,EACb,YAAY,EACZ,KAAK,GACa,EAAgB,EAAE;IACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC/C,CAAC,CAAC,+BAAW,CAAC,QAAQ;QACtB,CAAC,CAAC,+BAAW,CAAC,OAAO,CAAC;IACxB,MAAM,uBAAuB,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM;QACtD,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,+BAAW,CAAC,OAAO,CAAC;IAExB,MAAM,UAAU,GAAG,IAAA,sCAAkB,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAA,6BAAS,EAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,2BAA2B,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QACxD,CAAC,CAAC,+BAAW,CAAC,QAAQ;QACtB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QACjD,CAAC,CAAC,+BAAW,CAAC,QAAQ;QACtB,CAAC,CAAC,+BAAW,CAAC,OAAO,CAAC;IAExB,OAAO;QACL,2BAA2B,EAAE,WAAW;YACtC,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,SAAS;QACb,oBAAoB,EAClB,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;QAClE,kBAAkB;QAClB,uBAAuB,EACrB,MAAM,CAAC,MAAM,KAAK,+BAAW,CAAC,MAAM;YAClC,CAAC,CAAC,+BAAW,CAAC,MAAM;YACpB,CAAC,CAAC,uBAAuB;KAC9B,CAAC;AACJ,CAAC,CAAC;AAlCW,QAAA,wBAAwB,4BAkCnC;AAEF;;;;;;;;GAQG;AACI,MAAM,wBAAwB,GAAG,CACtC,WAA8B,EAC9B,MAAwB,EACxB,cAAgC,EAChC,EAAE;IACF,MAAM,SAAS,GACb,cAAc,EAAE,aAAa;QAC7B,MAAM,EAAE,aAAa;QACrB,WAAW,CAAC,SAAS,CAAC;IACxB,MAAM,cAAc,GAClB,MAAM,EAAE,IAAI,KAAK,wCAAe,CAAC,IAAI;QACnC,CAAC,CAAC,MAAM,EAAE,IAAI;QACd,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAA,uBAAiB,EACjC,WAAW,EACX,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,SAAS,CAC1B,CAAC;IAEF,MAAM,YAAY,GAChB,MAAM,EAAE,IAAI,KAAK,wCAAe,CAAC,IAAI;QACnC,CAAC,CAAC,IAAA,kDAA2B,EAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;QAC7D,CAAC,CAAC,IAAA,oDAA6B,EAAC,WAAW,CAAC,CAAC;IAEjD,MAAM,oBAAoB,GACxB,WAAW,CAAC,WAAW,EAAE,eAAe,IAAI,SAAS,EAAE,MAAM;QAC3D,CAAC,CAAC,IAAI,wBAAS,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC;aACnD,YAAY,CAAC,IAAI,wBAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACvC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;aACrB,QAAQ,EAAE;QACf,CAAC,CAAC,CAAC,CAAC;IAER,MAAM,qBAAqB,GACzB,WAAW,CAAC,WAAW,EAAE,iBAAiB,IAAI,YAAY,EAAE,GAAG;QAC7D,CAAC,CAAC,IAAI,wBAAS,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC;aACrD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC;aACrB,QAAQ,EAAE;QACf,CAAC,CAAC,CAAC,CAAC;IAER,OAAO;QACL,mBAAmB,EACjB,cAAc,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,cAAc,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACnC,wBAAwB,EAAE,qBAAqB;QAC/C,wBAAwB,EAAE,oBAAoB;KAC/C,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,wBAAwB,4BAgDnC;AAEK,MAAM,0BAA0B,GAAG,CACxC,WAA8B,EACf,EAAE;IACjB,OAAO;QACL,eAAe,EAAE,IAAA,uCAAmB,EAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;QAClE,mBAAmB,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;QACtD,oBAAoB,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;QACxD,oBAAoB,EAAE,IAAA,uCAAmB,EAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC;QACxE,wBAAwB,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;QAC5D,yBAAyB,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO;KAC/D,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,0BAA0B,8BAWrC;AAEK,MAAM,qBAAqB,GAAG,CACnC,aAA6D,EAClD,EAAE;IACb,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QACjE,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK;QACtD,QAAQ,EAAE,IAAA,uCAAmB,EAAC,aAAa,CAAC,KAAK,CAAC;QAClD,mBAAmB,EAAE,MAAM,CACzB,aAAa,CAAC,gCAAgC,GAAG,EAAE,CACpD;QACD,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,qBAAqB,yBAYhC;AAEK,MAAM,uBAAuB,GAAG,CACrC,KAA6B,EACS,EAAE;IACxC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,IAAI,GAAG,CAAC,EAAE,CAAC;AACvE,CAAC,CAAC;AAJW,QAAA,uBAAuB,2BAIlC;AAEF;;;;;;;;GAQG;AACI,MAAM,qCAAqC,GAAG,CACnD,aAA6D,EAC7D,oBAA6B,EAC7B,iBAA0B,EAC1B,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;IAChC,OAAO;QACL,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC;QACjC,GAAG,IAAA,6BAAqB,EAAC,aAAa,CAAC;QACvC,eAAe,EAAE,IAAA,uCAAmB,EAAC,KAAK,CAAC,UAAU,CAAC;QACtD,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;QAC1C,oBAAoB,EAAE,IAAA,uCAAmB,EAAC,KAAK,CAAC,WAAW,CAAC;QAC5D,wBAAwB,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAChD,kBAAkB,EAAE,iBAAiB;QACrC,SAAS,EAAE,IAAA,+BAAW,EACpB,aAAa,CAAC,KAAK,CAAC,UAAU,EAC9B,aAAa,CAAC,KAAK,CAAC,WAAW,CAChC;QACD,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,qCAAiB,CAAC,aAAa;QAC5C,eAAe,EAAE,KAAK,EAAE,4DAA4D;KACrF,CAAC;AACJ,CAAC,CAAC;AAvBW,QAAA,qCAAqC,yCAuBhD;AAEK,MAAM,uBAAuB,GAAG,CACrC,WAA8B,EACnB,EAAE;IACb,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,CAAC;QACpE,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK;QACpD,QAAQ,EAAE,IAAA,uCAAmB,EAAC,WAAW,CAAC,KAAK,CAAC;QAChD,mBAAmB,EAAE,MAAM,CACzB,WAAW,CAAC,gCAAgC,GAAG,EAAE,CAClD;QACD,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAiB,IAAI,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC;AAEK,MAAM,6BAA6B,GAAG,CAC3C,WAA8B,EAC9B,OAAyE,EACxD,EAAE;IACnB,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;IAEhE,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,IAAA,oCAAgB,EAAC,kBAAkB,CAAC;QACrD,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,eAAe,IAAI,CAAC,CAAC;QACxE,SAAS,EAAE,IAAA,+BAAW,EAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC;QAC3D,kBAAkB,EAAE,IAAA,oCAAgB,EAAC,OAAO,CAAC;QAC7C,WAAW,EAAE,YAAY,IAAI,KAAK;QAClC,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,6BAA6B,iCAexC;AAEF;;;;;GAKG;AACI,MAAM,qCAAqC,GAAG,CACnD,eAAgC,EAChC,EAAE;IACF,OAAO;QACL,kBAAkB,EAAE;YAClB,0CAAiB,CAAC,MAAM;YACxB,0CAAiB,CAAC,OAAO;YACzB,0CAAiB,CAAC,QAAQ;SAC3B,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,+BAAW,CAAC,MAAM;YACpB,CAAC,CAAC,+BAAW,CAAC,QAAQ;QACxB,aAAa,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO;YAC3C,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,SAAS;QACb,eAAe,EAAE,IAAA,uCAAmB,EAAC,eAAe,CAAC,OAAO,CAAC;QAC7D,oBAAoB,EAAE,IAAA,uCAAmB,EAAC,eAAe,CAAC,OAAO,CAAC;QAClE,mBAAmB,EAAE,eAAe,CAAC,iBAAiB,IAAI,EAAE;QAC5D,wBAAwB,EAAE,eAAe,CAAC,sBAAsB,IAAI,EAAE;QACtE,iBAAiB,EAAE,GAAG;QACtB,WAAW,EAAE,KAAK;QAClB,oBAAoB,EAClB,IAAA,0CAAsB,EACpB,eAAe,CAAC,kBAAkB,IAAI,EAAE,EACxC,eAAe,CAAC,OAAO,CACxB,IAAK,EAAoB;QAC5B,yBAAyB,EACvB,IAAA,0CAAsB,EACpB,eAAe,CAAC,uBAAuB,IAAI,EAAE,EAC7C,eAAe,CAAC,OAAO,CACxB,IAAK,EAAoB;QAC5B,eAAe,EAAE,KAAK;QACtB,kBAAkB,EAAE,KAAK;QACzB,SAAS,EACP,eAAe,CAAC,IAAI;YACpB,CAAC,wCAAe,CAAC,IAAI,EAAE,wCAAe,CAAC,YAAY,CAAC,CAAC,QAAQ,CAC3D,eAAe,CAAC,IAAI,CACrB;YACC,CAAC,CAAC,mCAAe,CAAC,MAAM;YACxB,CAAC,CAAC,mCAAe,CAAC,UAAU;QAChC,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,KAAK;QACnB,mBAAmB,EAAE,CAAC;QACtB,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,EAA2B;QACrC,mBAAmB,EAAE,CAAC;QACtB,wBAAwB,EAAE,CAAC;QAC3B,wBAAwB,EAAE,CAAC;QAC3B,iBAAiB,EAAE,CAAC;QACpB,cAAc,EAAE,CAAC;QACjB,WAAW,EAAE,qCAAiB,CAAC,aAAa;KAC7C,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,qCAAqC,yCAqDhD","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n QuoteResponse,\n TxData,\n QuoteMetadata,\n QuoteFetchData,\n} from '@metamask/bridge-controller';\nimport {\n type TxStatusData,\n StatusTypes,\n formatChainIdToHex,\n isEthUsdt,\n type RequestParams,\n formatChainIdToCaip,\n type TradeData,\n formatProviderLabel,\n type RequestMetadata,\n isCustomSlippage,\n getSwapType,\n isHardwareWallet,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n type TransactionMeta,\n} from '@metamask/transaction-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { calcActualGasUsed } from './gas';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount';\nimport type { BridgeHistoryItem } from '../types';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime =\n txMeta?.type === TransactionType.swap\n ? txMeta?.time\n : historyItem.completionTime;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.effective?.usd ?? 0),\n gas_included: quoteResponse.quote.gasIncluded ?? false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponse['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\n/**\n * Before the tx is confirmed, its data is not available in txHistory\n * The quote is used to populate event properties before confirmation\n *\n * @param quoteResponse - The quote response\n * @param isStxEnabledOnClient - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param isHardwareAccount - whether the tx is submitted using a hardware wallet\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata,\n isStxEnabledOnClient: boolean,\n isHardwareAccount: boolean,\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n is_hardware_wallet: isHardwareAccount,\n swap_type: getSwapType(\n quoteResponse.quote.srcChainId,\n quoteResponse.quote.destChainId,\n ),\n usd_amount_source: Number(quoteResponse.sentAmount?.usd ?? 0),\n stx_enabled: isStxEnabledOnClient,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n custom_slippage: false, // TODO detect whether the user changed the default slippage\n };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const { quote, slippagePercentage, isStxEnabled } = historyItem;\n\n return {\n slippage_limit: slippagePercentage,\n custom_slippage: isCustomSlippage(slippagePercentage),\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n is_hardware_wallet: isHardwareWallet(account),\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n) => {\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: transactionMeta.error?.message\n ? 'Failed to finalize swap tx'\n : undefined,\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 100,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n custom_slippage: false,\n is_hardware_wallet: false,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n };\n};\n"]}
|
package/dist/utils/metrics.d.cts
CHANGED
@@ -23,6 +23,33 @@ export declare const getFinalizedTxProperties: (historyItem: BridgeHistoryItem,
|
|
23
23
|
export declare const getRequestParamFromHistory: (historyItem: BridgeHistoryItem) => RequestParams;
|
24
24
|
export declare const getTradeDataFromQuote: (quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata) => TradeData;
|
25
25
|
export declare const getPriceImpactFromQuote: (quote: QuoteResponse['quote']) => Pick<QuoteFetchData, 'price_impact'>;
|
26
|
+
/**
|
27
|
+
* Before the tx is confirmed, its data is not available in txHistory
|
28
|
+
* The quote is used to populate event properties before confirmation
|
29
|
+
*
|
30
|
+
* @param quoteResponse - The quote response
|
31
|
+
* @param isStxEnabledOnClient - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension
|
32
|
+
* @param isHardwareAccount - whether the tx is submitted using a hardware wallet
|
33
|
+
* @returns The properties for the pre-confirmation event
|
34
|
+
*/
|
35
|
+
export declare const getPreConfirmationPropertiesFromQuote: (quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata, isStxEnabledOnClient: boolean, isHardwareAccount: boolean) => {
|
36
|
+
chain_id_source: `${string}:${string}`;
|
37
|
+
token_symbol_source: string;
|
38
|
+
chain_id_destination: `${string}:${string}`;
|
39
|
+
token_symbol_destination: string;
|
40
|
+
is_hardware_wallet: boolean;
|
41
|
+
swap_type: MetricsSwapType;
|
42
|
+
usd_amount_source: number;
|
43
|
+
stx_enabled: boolean;
|
44
|
+
action_type: MetricsActionType;
|
45
|
+
custom_slippage: boolean;
|
46
|
+
usd_quoted_gas: number;
|
47
|
+
gas_included: boolean;
|
48
|
+
quoted_time_minutes: number;
|
49
|
+
usd_quoted_return: number;
|
50
|
+
provider: `${string}_${string}`;
|
51
|
+
price_impact: number;
|
52
|
+
};
|
26
53
|
export declare const getTradeDataFromHistory: (historyItem: BridgeHistoryItem) => TradeData;
|
27
54
|
export declare const getRequestMetadataFromHistory: (historyItem: BridgeHistoryItem, account?: AccountsControllerState['internalAccounts']['accounts'][string]) => RequestMetadata;
|
28
55
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metrics.d.cts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,cAAc,EACf,oCAAoC;AACrC,OAAO,EACL,KAAK,YAAY,EACjB,WAAW,EAGX,KAAK,aAAa,EAElB,KAAK,SAAS,EAEd,KAAK,eAAe,EAKpB,iBAAiB,EACjB,eAAe,EAChB,oCAAoC;AACrC,OAAO,EAGL,KAAK,eAAe,EACrB,yCAAyC;AAS1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAElD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;
|
1
|
+
{"version":3,"file":"metrics.d.cts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,cAAc,EACf,oCAAoC;AACrC,OAAO,EACL,KAAK,YAAY,EACjB,WAAW,EAGX,KAAK,aAAa,EAElB,KAAK,SAAS,EAEd,KAAK,eAAe,EAKpB,iBAAiB,EACjB,eAAe,EAChB,oCAAoC;AACrC,OAAO,EAGL,KAAK,eAAe,EACrB,yCAAyC;AAS1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAElD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;CA6CjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,iBAAiB,KAC7B,aASF,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBACjB,cAAc,MAAM,GAAG,MAAM,CAAC,GAAG,aAAa,KAC5D,SAUF,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,aAAa,CAAC,OAAO,CAAC,KAC5B,KAAK,cAAc,EAAE,cAAc,CAErC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC,kBACjC,cAAc,MAAM,GAAG,MAAM,CAAC,GAAG,aAAa,wBACvC,OAAO,qBACV,OAAO;;;;;;;;;;;;;;;;;CAoB3B,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBACrB,iBAAiB,KAC7B,SAUF,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAC3B,iBAAiB,YACpB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KACxE,eAYF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qCAAqC,oBAC/B,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDjC,CAAC"}
|
package/dist/utils/metrics.d.mts
CHANGED
@@ -23,6 +23,33 @@ export declare const getFinalizedTxProperties: (historyItem: BridgeHistoryItem,
|
|
23
23
|
export declare const getRequestParamFromHistory: (historyItem: BridgeHistoryItem) => RequestParams;
|
24
24
|
export declare const getTradeDataFromQuote: (quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata) => TradeData;
|
25
25
|
export declare const getPriceImpactFromQuote: (quote: QuoteResponse['quote']) => Pick<QuoteFetchData, 'price_impact'>;
|
26
|
+
/**
|
27
|
+
* Before the tx is confirmed, its data is not available in txHistory
|
28
|
+
* The quote is used to populate event properties before confirmation
|
29
|
+
*
|
30
|
+
* @param quoteResponse - The quote response
|
31
|
+
* @param isStxEnabledOnClient - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension
|
32
|
+
* @param isHardwareAccount - whether the tx is submitted using a hardware wallet
|
33
|
+
* @returns The properties for the pre-confirmation event
|
34
|
+
*/
|
35
|
+
export declare const getPreConfirmationPropertiesFromQuote: (quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata, isStxEnabledOnClient: boolean, isHardwareAccount: boolean) => {
|
36
|
+
chain_id_source: `${string}:${string}`;
|
37
|
+
token_symbol_source: string;
|
38
|
+
chain_id_destination: `${string}:${string}`;
|
39
|
+
token_symbol_destination: string;
|
40
|
+
is_hardware_wallet: boolean;
|
41
|
+
swap_type: MetricsSwapType;
|
42
|
+
usd_amount_source: number;
|
43
|
+
stx_enabled: boolean;
|
44
|
+
action_type: MetricsActionType;
|
45
|
+
custom_slippage: boolean;
|
46
|
+
usd_quoted_gas: number;
|
47
|
+
gas_included: boolean;
|
48
|
+
quoted_time_minutes: number;
|
49
|
+
usd_quoted_return: number;
|
50
|
+
provider: `${string}_${string}`;
|
51
|
+
price_impact: number;
|
52
|
+
};
|
26
53
|
export declare const getTradeDataFromHistory: (historyItem: BridgeHistoryItem) => TradeData;
|
27
54
|
export declare const getRequestMetadataFromHistory: (historyItem: BridgeHistoryItem, account?: AccountsControllerState['internalAccounts']['accounts'][string]) => RequestMetadata;
|
28
55
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metrics.d.mts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,cAAc,EACf,oCAAoC;AACrC,OAAO,EACL,KAAK,YAAY,EACjB,WAAW,EAGX,KAAK,aAAa,EAElB,KAAK,SAAS,EAEd,KAAK,eAAe,EAKpB,iBAAiB,EACjB,eAAe,EAChB,oCAAoC;AACrC,OAAO,EAGL,KAAK,eAAe,EACrB,yCAAyC;AAS1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAElD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;
|
1
|
+
{"version":3,"file":"metrics.d.mts","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,cAAc,EACf,oCAAoC;AACrC,OAAO,EACL,KAAK,YAAY,EACjB,WAAW,EAGX,KAAK,aAAa,EAElB,KAAK,SAAS,EAEd,KAAK,eAAe,EAKpB,iBAAiB,EACjB,eAAe,EAChB,oCAAoC;AACrC,OAAO,EAGL,KAAK,eAAe,EACrB,yCAAyC;AAS1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAElD,eAAO,MAAM,wBAAwB,oDAKlC,iBAAiB,KAAG,YA6BtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,gBACtB,iBAAiB,WACrB,eAAe,mBACP,eAAe;;;;;;CA6CjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,iBAAiB,KAC7B,aASF,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBACjB,cAAc,MAAM,GAAG,MAAM,CAAC,GAAG,aAAa,KAC5D,SAUF,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAC3B,aAAa,CAAC,OAAO,CAAC,KAC5B,KAAK,cAAc,EAAE,cAAc,CAErC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC,kBACjC,cAAc,MAAM,GAAG,MAAM,CAAC,GAAG,aAAa,wBACvC,OAAO,qBACV,OAAO;;;;;;;;;;;;;;;;;CAoB3B,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBACrB,iBAAiB,KAC7B,SAUF,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAC3B,iBAAiB,YACpB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KACxE,eAYF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qCAAqC,oBAC/B,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDjC,CAAC"}
|
package/dist/utils/metrics.mjs
CHANGED
@@ -42,7 +42,9 @@ export const getFinalizedTxProperties = (historyItem, txMeta, approvalTxMeta) =>
|
|
42
42
|
const startTime = approvalTxMeta?.submittedTime ??
|
43
43
|
txMeta?.submittedTime ??
|
44
44
|
historyItem.startTime;
|
45
|
-
const completionTime =
|
45
|
+
const completionTime = txMeta?.type === TransactionType.swap
|
46
|
+
? txMeta?.time
|
47
|
+
: historyItem.completionTime;
|
46
48
|
const actualGas = calcActualGasUsed(historyItem, txMeta?.txReceipt, approvalTxMeta?.txReceipt);
|
47
49
|
const actualReturn = txMeta?.type === TransactionType.swap
|
48
50
|
? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)
|
@@ -88,6 +90,32 @@ export const getTradeDataFromQuote = (quoteResponse) => {
|
|
88
90
|
export const getPriceImpactFromQuote = (quote) => {
|
89
91
|
return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };
|
90
92
|
};
|
93
|
+
/**
|
94
|
+
* Before the tx is confirmed, its data is not available in txHistory
|
95
|
+
* The quote is used to populate event properties before confirmation
|
96
|
+
*
|
97
|
+
* @param quoteResponse - The quote response
|
98
|
+
* @param isStxEnabledOnClient - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension
|
99
|
+
* @param isHardwareAccount - whether the tx is submitted using a hardware wallet
|
100
|
+
* @returns The properties for the pre-confirmation event
|
101
|
+
*/
|
102
|
+
export const getPreConfirmationPropertiesFromQuote = (quoteResponse, isStxEnabledOnClient, isHardwareAccount) => {
|
103
|
+
const { quote } = quoteResponse;
|
104
|
+
return {
|
105
|
+
...getPriceImpactFromQuote(quote),
|
106
|
+
...getTradeDataFromQuote(quoteResponse),
|
107
|
+
chain_id_source: formatChainIdToCaip(quote.srcChainId),
|
108
|
+
token_symbol_source: quote.srcAsset.symbol,
|
109
|
+
chain_id_destination: formatChainIdToCaip(quote.destChainId),
|
110
|
+
token_symbol_destination: quote.destAsset.symbol,
|
111
|
+
is_hardware_wallet: isHardwareAccount,
|
112
|
+
swap_type: getSwapType(quoteResponse.quote.srcChainId, quoteResponse.quote.destChainId),
|
113
|
+
usd_amount_source: Number(quoteResponse.sentAmount?.usd ?? 0),
|
114
|
+
stx_enabled: isStxEnabledOnClient,
|
115
|
+
action_type: MetricsActionType.SWAPBRIDGE_V1,
|
116
|
+
custom_slippage: false, // TODO detect whether the user changed the default slippage
|
117
|
+
};
|
118
|
+
};
|
91
119
|
export const getTradeDataFromHistory = (historyItem) => {
|
92
120
|
return {
|
93
121
|
usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metrics.mjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n QuoteResponse,\n TxData,\n QuoteMetadata,\n QuoteFetchData,\n} from '@metamask/bridge-controller';\nimport {\n type TxStatusData,\n StatusTypes,\n formatChainIdToHex,\n isEthUsdt,\n type RequestParams,\n formatChainIdToCaip,\n type TradeData,\n formatProviderLabel,\n type RequestMetadata,\n isCustomSlippage,\n getSwapType,\n isHardwareWallet,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n type TransactionMeta,\n} from '@metamask/transaction-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { calcActualGasUsed } from './gas';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount';\nimport type { BridgeHistoryItem } from '../types';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime = historyItem.completionTime ?? txMeta?.time;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.effective?.usd ?? 0),\n gas_included: quoteResponse.quote.gasIncluded ?? false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponse['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const { quote, slippagePercentage, isStxEnabled } = historyItem;\n\n return {\n slippage_limit: slippagePercentage,\n custom_slippage: isCustomSlippage(slippagePercentage),\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n is_hardware_wallet: isHardwareWallet(account),\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n) => {\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: transactionMeta.error?.message\n ? 'Failed to finalize swap tx'\n : undefined,\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 100,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n custom_slippage: false,\n is_hardware_wallet: false,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n };\n};\n"]}
|
1
|
+
{"version":3,"file":"metrics.mjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n QuoteResponse,\n TxData,\n QuoteMetadata,\n QuoteFetchData,\n} from '@metamask/bridge-controller';\nimport {\n type TxStatusData,\n StatusTypes,\n formatChainIdToHex,\n isEthUsdt,\n type RequestParams,\n formatChainIdToCaip,\n type TradeData,\n formatProviderLabel,\n type RequestMetadata,\n isCustomSlippage,\n getSwapType,\n isHardwareWallet,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n type TransactionMeta,\n} from '@metamask/transaction-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { calcActualGasUsed } from './gas';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount';\nimport type { BridgeHistoryItem } from '../types';\n\nexport const getTxStatusesFromHistory = ({\n status,\n hasApprovalTx,\n approvalTxId,\n quote,\n}: BridgeHistoryItem): TxStatusData => {\n const source_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n const destination_transaction = status.destChain?.txHash\n ? status.status\n : StatusTypes.PENDING;\n\n const hexChainId = formatChainIdToHex(quote.srcChainId);\n const isEthUsdtTx = isEthUsdt(hexChainId, quote.srcAsset.address);\n const allowance_reset_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : undefined;\n const approval_transaction = status.srcChain.txHash\n ? StatusTypes.COMPLETE\n : StatusTypes.PENDING;\n\n return {\n allowance_reset_transaction: isEthUsdtTx\n ? allowance_reset_transaction\n : undefined,\n approval_transaction:\n hasApprovalTx || approvalTxId ? approval_transaction : undefined,\n source_transaction,\n destination_transaction:\n status.status === StatusTypes.FAILED\n ? StatusTypes.FAILED\n : destination_transaction,\n };\n};\n\n/**\n * Calculate the properties for a finalized transaction event based on the txHistory\n * and txMeta\n *\n * @param historyItem - The bridge history item\n * @param txMeta - The transaction meta from the TransactionController\n * @param approvalTxMeta - The approval transaction meta from the TransactionController\n * @returns The properties for the finalized transaction\n */\nexport const getFinalizedTxProperties = (\n historyItem: BridgeHistoryItem,\n txMeta?: TransactionMeta,\n approvalTxMeta?: TransactionMeta,\n) => {\n const startTime =\n approvalTxMeta?.submittedTime ??\n txMeta?.submittedTime ??\n historyItem.startTime;\n const completionTime =\n txMeta?.type === TransactionType.swap\n ? txMeta?.time\n : historyItem.completionTime;\n\n const actualGas = calcActualGasUsed(\n historyItem,\n txMeta?.txReceipt,\n approvalTxMeta?.txReceipt,\n );\n\n const actualReturn =\n txMeta?.type === TransactionType.swap\n ? getActualSwapReceivedAmount(historyItem, actualGas, txMeta)\n : getActualBridgeReceivedAmount(historyItem);\n\n const quotedVsUsedGasRatio =\n historyItem.pricingData?.quotedGasAmount && actualGas?.amount\n ? new BigNumber(historyItem.pricingData.quotedGasAmount)\n .multipliedBy(new BigNumber(10).pow(18))\n .div(actualGas.amount)\n .toNumber()\n : 0;\n\n const quoteVsExecutionRatio =\n historyItem.pricingData?.quotedReturnInUsd && actualReturn?.usd\n ? new BigNumber(historyItem.pricingData.quotedReturnInUsd)\n .div(actualReturn.usd)\n .toNumber()\n : 0;\n\n return {\n actual_time_minutes:\n completionTime && startTime ? (completionTime - startTime) / 60000 : 0,\n usd_actual_return: Number(actualReturn?.usd ?? 0),\n usd_actual_gas: actualGas?.usd ?? 0,\n quote_vs_execution_ratio: quoteVsExecutionRatio,\n quoted_vs_used_gas_ratio: quotedVsUsedGasRatio,\n };\n};\n\nexport const getRequestParamFromHistory = (\n historyItem: BridgeHistoryItem,\n): RequestParams => {\n return {\n chain_id_source: formatChainIdToCaip(historyItem.quote.srcChainId),\n token_symbol_source: historyItem.quote.srcAsset.symbol,\n token_address_source: historyItem.quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(historyItem.quote.destChainId),\n token_symbol_destination: historyItem.quote.destAsset.symbol,\n token_address_destination: historyItem.quote.destAsset.assetId,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.effective?.usd ?? 0),\n gas_included: quoteResponse.quote.gasIncluded ?? false,\n provider: formatProviderLabel(quoteResponse.quote),\n quoted_time_minutes: Number(\n quoteResponse.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(quoteResponse.adjustedReturn?.usd ?? 0),\n };\n};\n\nexport const getPriceImpactFromQuote = (\n quote: QuoteResponse['quote'],\n): Pick<QuoteFetchData, 'price_impact'> => {\n return { price_impact: Number(quote.priceData?.priceImpact ?? '0') };\n};\n\n/**\n * Before the tx is confirmed, its data is not available in txHistory\n * The quote is used to populate event properties before confirmation\n *\n * @param quoteResponse - The quote response\n * @param isStxEnabledOnClient - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param isHardwareAccount - whether the tx is submitted using a hardware wallet\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponse<TxData | string> & QuoteMetadata,\n isStxEnabledOnClient: boolean,\n isHardwareAccount: boolean,\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n is_hardware_wallet: isHardwareAccount,\n swap_type: getSwapType(\n quoteResponse.quote.srcChainId,\n quoteResponse.quote.destChainId,\n ),\n usd_amount_source: Number(quoteResponse.sentAmount?.usd ?? 0),\n stx_enabled: isStxEnabledOnClient,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n custom_slippage: false, // TODO detect whether the user changed the default slippage\n };\n};\n\nexport const getTradeDataFromHistory = (\n historyItem: BridgeHistoryItem,\n): TradeData => {\n return {\n usd_quoted_gas: Number(historyItem.pricingData?.quotedGasInUsd ?? 0),\n gas_included: historyItem.quote.gasIncluded ?? false,\n provider: formatProviderLabel(historyItem.quote),\n quoted_time_minutes: Number(\n historyItem.estimatedProcessingTimeInSeconds / 60,\n ),\n usd_quoted_return: Number(historyItem.pricingData?.quotedReturnInUsd ?? 0),\n };\n};\n\nexport const getRequestMetadataFromHistory = (\n historyItem: BridgeHistoryItem,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n): RequestMetadata => {\n const { quote, slippagePercentage, isStxEnabled } = historyItem;\n\n return {\n slippage_limit: slippagePercentage,\n custom_slippage: isCustomSlippage(slippagePercentage),\n usd_amount_source: Number(historyItem.pricingData?.amountSentInUsd ?? 0),\n swap_type: getSwapType(quote.srcChainId, quote.destChainId),\n is_hardware_wallet: isHardwareWallet(account),\n stx_enabled: isStxEnabled ?? false,\n security_warnings: [],\n };\n};\n\n/**\n * Get the properties for a swap transaction that is not in the txHistory\n *\n * @param transactionMeta - The transaction meta\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n) => {\n return {\n source_transaction: [\n TransactionStatus.failed,\n TransactionStatus.dropped,\n TransactionStatus.rejected,\n ].includes(transactionMeta.status)\n ? StatusTypes.FAILED\n : StatusTypes.COMPLETE,\n error_message: transactionMeta.error?.message\n ? 'Failed to finalize swap tx'\n : undefined,\n chain_id_source: formatChainIdToCaip(transactionMeta.chainId),\n chain_id_destination: formatChainIdToCaip(transactionMeta.chainId),\n token_symbol_source: transactionMeta.sourceTokenSymbol ?? '',\n token_symbol_destination: transactionMeta.destinationTokenSymbol ?? '',\n usd_amount_source: 100,\n stx_enabled: false,\n token_address_source:\n formatAddressToAssetId(\n transactionMeta.sourceTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n token_address_destination:\n formatAddressToAssetId(\n transactionMeta.destinationTokenAddress ?? '',\n transactionMeta.chainId,\n ) ?? ('' as CaipAssetType),\n custom_slippage: false,\n is_hardware_wallet: false,\n swap_type:\n transactionMeta.type &&\n [TransactionType.swap, TransactionType.swapApproval].includes(\n transactionMeta.type,\n )\n ? MetricsSwapType.SINGLE\n : MetricsSwapType.CROSSCHAIN,\n security_warnings: [],\n price_impact: 0,\n usd_quoted_gas: 0,\n gas_included: false,\n quoted_time_minutes: 0,\n usd_quoted_return: 0,\n provider: '' as `${string}_${string}`,\n actual_time_minutes: 0,\n quote_vs_execution_ratio: 0,\n quoted_vs_used_gas_ratio: 0,\n usd_actual_return: 0,\n usd_actual_gas: 0,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n };\n};\n"]}
|
@@ -162,18 +162,20 @@ const toBatchTxParams = (disable7702, { chainId, gasLimit, ...trade }, { maxFeeP
|
|
162
162
|
};
|
163
163
|
};
|
164
164
|
exports.toBatchTxParams = toBatchTxParams;
|
165
|
-
const getAddTransactionBatchParams = async ({ messagingSystem, isBridgeTx, approval, resetApproval, trade, quoteResponse: { quote: { feeData: { txFee }, gasIncluded, }, sentAmount, toTokenAmount, }, requireApproval = false, estimateGasFeeFn, }) => {
|
165
|
+
const getAddTransactionBatchParams = async ({ messagingSystem, isBridgeTx, approval, resetApproval, trade, quoteResponse: { quote: { feeData: { txFee }, gasIncluded, gasless7702, }, sentAmount, toTokenAmount, }, requireApproval = false, estimateGasFeeFn, }) => {
|
166
|
+
const isGasless = gasIncluded || gasless7702;
|
166
167
|
const selectedAccount = messagingSystem.call('AccountsController:getAccountByAddress', trade.from);
|
167
168
|
if (!selectedAccount) {
|
168
169
|
throw new Error('Failed to submit cross-chain swap batch transaction: unknown account in trade data');
|
169
170
|
}
|
170
171
|
const hexChainId = (0, bridge_controller_1.formatChainIdToHex)(trade.chainId);
|
171
172
|
const networkClientId = messagingSystem.call('NetworkController:findNetworkClientIdByChainId', hexChainId);
|
172
|
-
//
|
173
|
-
|
173
|
+
// When an active quote has gasless7702 set to true,
|
174
|
+
// enable 7702 gasless txs for smart accounts
|
175
|
+
const disable7702 = gasless7702 !== true;
|
174
176
|
const transactions = [];
|
175
177
|
if (resetApproval) {
|
176
|
-
const gasFees = await (0, gas_1.calculateGasFees)(disable7702, messagingSystem, estimateGasFeeFn, resetApproval, networkClientId, hexChainId,
|
178
|
+
const gasFees = await (0, gas_1.calculateGasFees)(disable7702, messagingSystem, estimateGasFeeFn, resetApproval, networkClientId, hexChainId, isGasless ? txFee : undefined);
|
177
179
|
transactions.push({
|
178
180
|
type: isBridgeTx
|
179
181
|
? transaction_controller_1.TransactionType.bridgeApproval
|
@@ -182,7 +184,7 @@ const getAddTransactionBatchParams = async ({ messagingSystem, isBridgeTx, appro
|
|
182
184
|
});
|
183
185
|
}
|
184
186
|
if (approval) {
|
185
|
-
const gasFees = await (0, gas_1.calculateGasFees)(disable7702, messagingSystem, estimateGasFeeFn, approval, networkClientId, hexChainId,
|
187
|
+
const gasFees = await (0, gas_1.calculateGasFees)(disable7702, messagingSystem, estimateGasFeeFn, approval, networkClientId, hexChainId, isGasless ? txFee : undefined);
|
186
188
|
transactions.push({
|
187
189
|
type: isBridgeTx
|
188
190
|
? transaction_controller_1.TransactionType.bridgeApproval
|
@@ -190,7 +192,7 @@ const getAddTransactionBatchParams = async ({ messagingSystem, isBridgeTx, appro
|
|
190
192
|
params: (0, exports.toBatchTxParams)(disable7702, approval, gasFees),
|
191
193
|
});
|
192
194
|
}
|
193
|
-
const gasFees = await (0, gas_1.calculateGasFees)(disable7702, messagingSystem, estimateGasFeeFn, trade, networkClientId, hexChainId,
|
195
|
+
const gasFees = await (0, gas_1.calculateGasFees)(disable7702, messagingSystem, estimateGasFeeFn, trade, networkClientId, hexChainId, isGasless ? txFee : undefined);
|
194
196
|
transactions.push({
|
195
197
|
type: isBridgeTx ? transaction_controller_1.TransactionType.bridge : transaction_controller_1.TransactionType.swap,
|
196
198
|
params: (0, exports.toBatchTxParams)(disable7702, trade, gasFees),
|
@@ -219,7 +221,32 @@ const findAndUpdateTransactionsInBatch = ({ messagingSystem, updateTransactionFn
|
|
219
221
|
// This is a workaround to update the tx type after the tx is signed
|
220
222
|
// TODO: remove this once the tx type for batch txs is preserved in the tx controller
|
221
223
|
Object.entries(txDataByType).forEach(([txType, txData]) => {
|
222
|
-
|
224
|
+
// Find transaction by batchId and either matching data or delegation characteristics
|
225
|
+
const txMeta = txs.find((tx) => {
|
226
|
+
if (tx.batchId !== batchId) {
|
227
|
+
return false;
|
228
|
+
}
|
229
|
+
// For 7702 delegated transactions, check for delegation-specific fields
|
230
|
+
// These transactions might have authorizationList or delegationAddress
|
231
|
+
const is7702Transaction = (Array.isArray(tx.txParams.authorizationList) &&
|
232
|
+
tx.txParams.authorizationList.length > 0) ||
|
233
|
+
Boolean(tx.delegationAddress);
|
234
|
+
if (is7702Transaction) {
|
235
|
+
// For 7702 transactions, we need to match based on transaction type
|
236
|
+
// since the data field might be different (batch execute call)
|
237
|
+
if (txType === transaction_controller_1.TransactionType.swap &&
|
238
|
+
tx.type === transaction_controller_1.TransactionType.batch) {
|
239
|
+
return true;
|
240
|
+
}
|
241
|
+
// Also check if it's an approval transaction for 7702
|
242
|
+
if (txType === transaction_controller_1.TransactionType.swapApproval &&
|
243
|
+
tx.txParams.data === txData) {
|
244
|
+
return true;
|
245
|
+
}
|
246
|
+
}
|
247
|
+
// Default matching logic for non-7702 transactions
|
248
|
+
return tx.txParams.data === txData;
|
249
|
+
});
|
223
250
|
if (txMeta) {
|
224
251
|
const updatedTx = { ...txMeta, type: txType };
|
225
252
|
updateTransactionFn(updatedTx, `Update tx type to ${txType}`);
|