@metamask-previews/bridge-status-controller 12.0.1-preview-c67b57f2 → 12.0.1-preview-5867b015
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/dist/bridge-status-controller.cjs +119 -5
- package/dist/bridge-status-controller.cjs.map +1 -1
- package/dist/bridge-status-controller.d.cts +21 -2
- package/dist/bridge-status-controller.d.cts.map +1 -1
- package/dist/bridge-status-controller.d.mts +21 -2
- package/dist/bridge-status-controller.d.mts.map +1 -1
- package/dist/bridge-status-controller.mjs +121 -7
- package/dist/bridge-status-controller.mjs.map +1 -1
- package/dist/constants.cjs +2 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +1 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +1 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +1 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/index.cjs +4 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs +10 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +14 -6
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +14 -6
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +9 -0
- package/dist/types.mjs.map +1 -1
- package/dist/utils/bridge-status.cjs +6 -5
- package/dist/utils/bridge-status.cjs.map +1 -1
- package/dist/utils/bridge-status.d.cts.map +1 -1
- package/dist/utils/bridge-status.d.mts.map +1 -1
- package/dist/utils/bridge-status.mjs +6 -5
- package/dist/utils/bridge-status.mjs.map +1 -1
- package/dist/utils/transaction.cjs +75 -0
- package/dist/utils/transaction.cjs.map +1 -0
- package/dist/utils/transaction.d.cts +29 -0
- package/dist/utils/transaction.d.cts.map +1 -0
- package/dist/utils/transaction.d.mts +29 -0
- package/dist/utils/transaction.d.mts.map +1 -0
- package/dist/utils/transaction.mjs +69 -0
- package/dist/utils/transaction.mjs.map +1 -0
- package/dist/utils/validators.cjs +1 -1
- package/dist/utils/validators.cjs.map +1 -1
- package/dist/utils/validators.mjs +2 -2
- package/dist/utils/validators.mjs.map +1 -1
- package/package.json +5 -2
package/dist/types.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAkCA,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;AACvB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AA2DD,MAAM,CAAN,IAAY,QAYX;AAZD,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;AACjB,CAAC,EAZW,QAAQ,KAAR,QAAQ,QAYnB;AAED,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,oCAAyB,CAAA;IACzB,4BAAiB,CAAA;AACnB,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AAaD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAoDD,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,0FAAoE,CAAA;IACpE,6DAAuC,CAAA;IACvC,4CAAsB,CAAA;IACtB,gDAA0B,CAAA;AAC5B,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B","sourcesContent":["import type { AccountsControllerGetSelectedMultichainAccountAction } from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n} from '@metamask/base-controller';\nimport type {\n ChainId,\n Quote,\n QuoteMetadata,\n QuoteResponse,\n} from '@metamask/bridge-controller';\nimport type {\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetStateAction,\n} from '@metamask/network-controller';\nimport type {\n TransactionControllerGetStateAction,\n TransactionMeta,\n} from '@metamask/transaction-controller';\n\nimport type { BridgeStatusController } from './bridge-status-controller';\nimport type { BRIDGE_STATUS_CONTROLLER_NAME } from './constants';\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 type FetchFunction = (\n input: RequestInfo | URL,\n init?: RequestInit,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<any>;\n\nexport enum StatusTypes {\n UNKNOWN = 'UNKNOWN',\n FAILED = 'FAILED',\n PENDING = 'PENDING',\n COMPLETE = 'COMPLETE',\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 type Asset = {\n chainId: ChainId;\n address: string;\n symbol: string;\n name: string;\n decimals: number;\n icon?: string | null;\n};\n\nexport type SrcChainStatus = {\n chainId: ChainId;\n /**\n * The txHash of the transaction on the source chain.\n * This might be undefined for smart transactions (STX)\n */\n txHash?: string;\n /**\n * The atomic amount of the token sent minus fees on the source chain\n */\n amount?: string;\n token?: Record<string, never> | Asset;\n};\n\nexport type DestChainStatus = {\n chainId: ChainId;\n txHash?: string;\n /**\n * The atomic amount of the token received on the destination chain\n */\n amount?: string;\n token?: Record<string, never> | Asset;\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}\n\nexport enum FeeType {\n METABRIDGE = 'metabridge',\n REFUEL = 'refuel',\n}\n\nexport type FeeData = {\n amount: string;\n asset: Asset;\n};\n\nexport type Protocol = {\n displayName?: string;\n icon?: string;\n name?: string; // for legacy quotes\n};\n\nexport enum ActionTypes {\n BRIDGE = 'bridge',\n SWAP = 'swap',\n REFUEL = 'refuel',\n}\n\nexport type Step = {\n action: ActionTypes;\n srcChainId: ChainId;\n destChainId?: ChainId;\n srcAsset: Asset;\n destAsset: Asset;\n srcAmount: string;\n destAmount: string;\n protocol: Protocol;\n};\n\nexport type StatusResponse = {\n status: StatusTypes;\n srcChain: SrcChainStatus;\n destChain?: DestChainStatus;\n bridge?: BridgeId;\n isExpectedToken?: boolean;\n isUnrecognizedRouterAddress?: boolean;\n refuel?: RefuelStatusResponse;\n};\n\nexport type RefuelStatusResponse = object & StatusResponse;\n\nexport type RefuelData = object & Step;\n\nexport type BridgeHistoryItem = {\n txMetaId: string; // Need this to handle STX that might not have a txHash immediately\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 * From QuoteMetadata.sentAmount.amount, the actual amount sent by user in non-atomic decimal form\n */\n amountSent: string;\n amountSentInUsd?: string;\n quotedGasInUsd?: string; // from QuoteMetadata.gasFee.usd\n quotedReturnInUsd?: string; // from QuoteMetadata.toTokenAmount.usd\n quotedRefuelSrcAmountInUsd?: string;\n quotedRefuelDestAmountInUsd?: string;\n };\n initialDestAssetBalance?: string;\n targetContractAddress?: string;\n account: string;\n hasApprovalTx: boolean;\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}\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};\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 & QuoteMetadataSerialized;\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 BridgeStatusControllerActions =\n | BridgeStatusControllerStartPollingForBridgeTxStatusAction\n | BridgeStatusControllerWipeBridgeStatusAction\n | BridgeStatusControllerResetStateAction\n | BridgeStatusControllerGetStateAction;\n\n// Events\nexport type BridgeStatusControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerState\n>;\n\nexport type BridgeStatusControllerBridgeTransactionCompleteEvent = {\n type: `${typeof BRIDGE_STATUS_CONTROLLER_NAME}:bridgeTransactionComplete`;\n payload: [{ bridgeHistoryItem: BridgeHistoryItem }];\n};\n\nexport type BridgeStatusControllerBridgeTransactionFailedEvent = {\n type: `${typeof BRIDGE_STATUS_CONTROLLER_NAME}:bridgeTransactionFailed`;\n payload: [{ bridgeHistoryItem: BridgeHistoryItem }];\n};\n\nexport type BridgeStatusControllerEvents =\n | BridgeStatusControllerStateChangeEvent\n | BridgeStatusControllerBridgeTransactionCompleteEvent\n | BridgeStatusControllerBridgeTransactionFailedEvent;\n\n/**\n * The external actions available to the BridgeStatusController.\n */\ntype AllowedActions =\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetStateAction\n | NetworkControllerGetNetworkClientByIdAction\n | AccountsControllerGetSelectedMultichainAccountAction\n | TransactionControllerGetStateAction;\n\n/**\n * The external events available to the BridgeStatusController.\n */\ntype AllowedEvents = never;\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":"AA2BA,8EAA8E;AAC9E,2BAA2B;AAE3B,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAQD,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;AACvB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AA2DD,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;AAED,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,oCAAyB,CAAA;IACzB,4BAAiB,CAAA;AACnB,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AAaD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAoDD,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,0FAAoE,CAAA;IACpE,6DAAuC,CAAA;IACvC,4CAAsB,CAAA;IACtB,gDAA0B,CAAA;IAC1B,4CAAsB,CAAA;AACxB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B","sourcesContent":["import type { AccountsControllerGetSelectedMultichainAccountAction } from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n} from '@metamask/base-controller';\nimport type {\n ChainId,\n Quote,\n QuoteMetadata,\n QuoteResponse,\n TxData,\n} from '@metamask/bridge-controller';\nimport type {\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetStateAction,\n} from '@metamask/network-controller';\nimport type { HandleSnapRequest } from '@metamask/snaps-controllers';\nimport type {\n TransactionControllerGetStateAction,\n TransactionMeta,\n} from '@metamask/transaction-controller';\n\nimport type { BridgeStatusController } from './bridge-status-controller';\nimport type { BRIDGE_STATUS_CONTROLLER_NAME } from './constants';\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\nexport enum StatusTypes {\n UNKNOWN = 'UNKNOWN',\n FAILED = 'FAILED',\n PENDING = 'PENDING',\n COMPLETE = 'COMPLETE',\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 type Asset = {\n chainId: ChainId;\n address: string;\n symbol: string;\n name: string;\n decimals: number;\n icon?: string | null;\n};\n\nexport type SrcChainStatus = {\n chainId: ChainId;\n /**\n * The txHash of the transaction on the source chain.\n * This might be undefined for smart transactions (STX)\n */\n txHash?: string;\n /**\n * The atomic amount of the token sent minus fees on the source chain\n */\n amount?: string;\n token?: Record<string, never> | Asset;\n};\n\nexport type DestChainStatus = {\n chainId: ChainId;\n txHash?: string;\n /**\n * The atomic amount of the token received on the destination chain\n */\n amount?: string;\n token?: Record<string, never> | Asset;\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 enum FeeType {\n METABRIDGE = 'metabridge',\n REFUEL = 'refuel',\n}\n\nexport type FeeData = {\n amount: string;\n asset: Asset;\n};\n\nexport type Protocol = {\n displayName?: string;\n icon?: string;\n name?: string; // for legacy quotes\n};\n\nexport enum ActionTypes {\n BRIDGE = 'bridge',\n SWAP = 'swap',\n REFUEL = 'refuel',\n}\n\nexport type Step = {\n action: ActionTypes;\n srcChainId: ChainId;\n destChainId?: ChainId;\n srcAsset: Asset;\n destAsset: Asset;\n srcAmount: string;\n destAmount: string;\n protocol: Protocol;\n};\n\nexport type StatusResponse = {\n status: StatusTypes;\n srcChain: SrcChainStatus;\n destChain?: DestChainStatus;\n bridge?: BridgeId;\n isExpectedToken?: boolean;\n isUnrecognizedRouterAddress?: boolean;\n refuel?: RefuelStatusResponse;\n};\n\nexport type RefuelStatusResponse = object & StatusResponse;\n\nexport type RefuelData = object & Step;\n\nexport type BridgeHistoryItem = {\n txMetaId: string; // Need this to handle STX that might not have a txHash immediately\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 * From QuoteMetadata.sentAmount.amount, the actual amount sent by user in non-atomic decimal form\n */\n amountSent: string;\n amountSentInUsd?: string;\n quotedGasInUsd?: string; // from QuoteMetadata.gasFee.usd\n quotedReturnInUsd?: string; // from QuoteMetadata.toTokenAmount.usd\n quotedRefuelSrcAmountInUsd?: string;\n quotedRefuelDestAmountInUsd?: string;\n };\n initialDestAssetBalance?: string;\n targetContractAddress?: string;\n account: string;\n hasApprovalTx: boolean;\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}\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};\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 BridgeStatusControllerActions =\n | BridgeStatusControllerStartPollingForBridgeTxStatusAction\n | BridgeStatusControllerWipeBridgeStatusAction\n | BridgeStatusControllerResetStateAction\n | BridgeStatusControllerGetStateAction\n | BridgeStatusControllerSubmitTxAction;\n\n// Events\nexport type BridgeStatusControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof BRIDGE_STATUS_CONTROLLER_NAME,\n BridgeStatusControllerState\n>;\n\nexport type BridgeStatusControllerBridgeTransactionCompleteEvent = {\n type: `${typeof BRIDGE_STATUS_CONTROLLER_NAME}:bridgeTransactionComplete`;\n payload: [{ bridgeHistoryItem: BridgeHistoryItem }];\n};\n\nexport type BridgeStatusControllerBridgeTransactionFailedEvent = {\n type: `${typeof BRIDGE_STATUS_CONTROLLER_NAME}:bridgeTransactionFailed`;\n payload: [{ bridgeHistoryItem: BridgeHistoryItem }];\n};\n\nexport type BridgeStatusControllerEvents =\n | BridgeStatusControllerStateChangeEvent\n | BridgeStatusControllerBridgeTransactionCompleteEvent\n | BridgeStatusControllerBridgeTransactionFailedEvent;\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\n/**\n * The external events available to the BridgeStatusController.\n */\ntype AllowedEvents = never;\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"]}
|
@@ -36,14 +36,15 @@ const fetchBridgeTxStatus = async (statusRequest, clientId, fetchFn, bridgeApiBa
|
|
36
36
|
};
|
37
37
|
exports.fetchBridgeTxStatus = fetchBridgeTxStatus;
|
38
38
|
const getStatusRequestWithSrcTxHash = (quote, srcTxHash) => {
|
39
|
+
const { bridgeId, bridges, srcChainId, destChainId, refuel } = quote;
|
39
40
|
return {
|
40
|
-
bridgeId
|
41
|
+
bridgeId,
|
41
42
|
srcTxHash,
|
42
|
-
bridge:
|
43
|
-
srcChainId
|
44
|
-
destChainId
|
43
|
+
bridge: bridges[0],
|
44
|
+
srcChainId,
|
45
|
+
destChainId,
|
45
46
|
quote,
|
46
|
-
refuel: Boolean(
|
47
|
+
refuel: Boolean(refuel),
|
47
48
|
};
|
48
49
|
};
|
49
50
|
exports.getStatusRequestWithSrcTxHash = getStatusRequestWithSrcTxHash;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bridge-status.cjs","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":";;;AAEA,iDAA4D;AAQrD,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,aAAa,EAAE,QAAQ;CACxB,CAAC,CAAC;AAFU,QAAA,iBAAiB,qBAE3B;AAEI,MAAM,kBAAkB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAC7D,GAAG,gBAAgB,cAAc,CAAC;AADvB,QAAA,kBAAkB,sBACK;AAE7B,MAAM,mBAAmB,GAAG,CACjC,aAAyC,EACvB,EAAE;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,EAAE,GAAG,aAAa,CAAC;IAEzD,MAAM,6BAA6B,GAAG,MAAM,CAAC,WAAW,CACtD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACzD,GAAG;QACH,KAAK,CAAC,QAAQ,EAAE;KACjB,CAAC,CAC+C,CAAC;IAEpD,MAAM,SAAS,GACb,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,OAAO;QACL,GAAG,6BAA6B;QAChC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B;AAEK,MAAM,mBAAmB,GAAG,KAAK,EACtC,aAAyC,EACzC,QAAgB,EAChB,OAAsB,EACtB,gBAAwB,EACC,EAAE;IAC3B,MAAM,gBAAgB,GAAG,IAAA,2BAAmB,EAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAErD,QAAQ;IACR,MAAM,GAAG,GAAG,GAAG,IAAA,0BAAkB,EAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAE3E,MAAM,WAAW,GAAY,MAAM,OAAO,CAAC,GAAG,EAAE;QAC9C,OAAO,EAAE,IAAA,yBAAiB,EAAC,QAAQ,CAAC;KACrC,CAAC,CAAC;IAEH,WAAW;IACX,IAAA,yCAA4B,EAAC,WAAW,CAAC,CAAC;IAE1C,SAAS;IACT,OAAO,WAA6B,CAAC;AACvC,CAAC,CAAC;AArBW,QAAA,mBAAmB,uBAqB9B;AAEK,MAAM,6BAA6B,GAAG,CAC3C,KAAY,EACZ,SAAiB,EACW,EAAE;IAC9B,
|
1
|
+
{"version":3,"file":"bridge-status.cjs","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":";;;AAEA,iDAA4D;AAQrD,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,aAAa,EAAE,QAAQ;CACxB,CAAC,CAAC;AAFU,QAAA,iBAAiB,qBAE3B;AAEI,MAAM,kBAAkB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAC7D,GAAG,gBAAgB,cAAc,CAAC;AADvB,QAAA,kBAAkB,sBACK;AAE7B,MAAM,mBAAmB,GAAG,CACjC,aAAyC,EACvB,EAAE;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,EAAE,GAAG,aAAa,CAAC;IAEzD,MAAM,6BAA6B,GAAG,MAAM,CAAC,WAAW,CACtD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACzD,GAAG;QACH,KAAK,CAAC,QAAQ,EAAE;KACjB,CAAC,CAC+C,CAAC;IAEpD,MAAM,SAAS,GACb,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,OAAO;QACL,GAAG,6BAA6B;QAChC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B;AAEK,MAAM,mBAAmB,GAAG,KAAK,EACtC,aAAyC,EACzC,QAAgB,EAChB,OAAsB,EACtB,gBAAwB,EACC,EAAE;IAC3B,MAAM,gBAAgB,GAAG,IAAA,2BAAmB,EAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAErD,QAAQ;IACR,MAAM,GAAG,GAAG,GAAG,IAAA,0BAAkB,EAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAE3E,MAAM,WAAW,GAAY,MAAM,OAAO,CAAC,GAAG,EAAE;QAC9C,OAAO,EAAE,IAAA,yBAAiB,EAAC,QAAQ,CAAC;KACrC,CAAC,CAAC;IAEH,WAAW;IACX,IAAA,yCAA4B,EAAC,WAAW,CAAC,CAAC;IAE1C,SAAS;IACT,OAAO,WAA6B,CAAC;AACvC,CAAC,CAAC;AArBW,QAAA,mBAAmB,uBAqB9B;AAEK,MAAM,6BAA6B,GAAG,CAC3C,KAAY,EACZ,SAAiB,EACW,EAAE;IAC9B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrE,OAAO;QACL,QAAQ;QACR,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClB,UAAU;QACV,WAAW;QACX,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,6BAA6B,iCAcxC","sourcesContent":["import type { Quote } from '@metamask/bridge-controller';\n\nimport { validateBridgeStatusResponse } from './validators';\nimport type {\n StatusResponse,\n StatusRequestWithSrcTxHash,\n StatusRequestDto,\n FetchFunction,\n} from '../types';\n\nexport const getClientIdHeader = (clientId: string) => ({\n 'X-Client-Id': clientId,\n});\n\nexport const getBridgeStatusUrl = (bridgeApiBaseUrl: string) =>\n `${bridgeApiBaseUrl}/getTxStatus`;\n\nexport const getStatusRequestDto = (\n statusRequest: StatusRequestWithSrcTxHash,\n): StatusRequestDto => {\n const { quote, ...statusRequestNoQuote } = statusRequest;\n\n const statusRequestNoQuoteFormatted = Object.fromEntries(\n Object.entries(statusRequestNoQuote).map(([key, value]) => [\n key,\n value.toString(),\n ]),\n ) as unknown as Omit<StatusRequestDto, 'requestId'>;\n\n const requestId: { requestId: string } | Record<string, never> =\n quote?.requestId ? { requestId: quote.requestId } : {};\n\n return {\n ...statusRequestNoQuoteFormatted,\n ...requestId,\n };\n};\n\nexport const fetchBridgeTxStatus = async (\n statusRequest: StatusRequestWithSrcTxHash,\n clientId: string,\n fetchFn: FetchFunction,\n bridgeApiBaseUrl: string,\n): Promise<StatusResponse> => {\n const statusRequestDto = getStatusRequestDto(statusRequest);\n const params = new URLSearchParams(statusRequestDto);\n\n // Fetch\n const url = `${getBridgeStatusUrl(bridgeApiBaseUrl)}?${params.toString()}`;\n\n const rawTxStatus: unknown = await fetchFn(url, {\n headers: getClientIdHeader(clientId),\n });\n\n // Validate\n validateBridgeStatusResponse(rawTxStatus);\n\n // Return\n return rawTxStatus as StatusResponse;\n};\n\nexport const getStatusRequestWithSrcTxHash = (\n quote: Quote,\n srcTxHash: string,\n): StatusRequestWithSrcTxHash => {\n const { bridgeId, bridges, srcChainId, destChainId, refuel } = quote;\n return {\n bridgeId,\n srcTxHash,\n bridge: bridges[0],\n srcChainId,\n destChainId,\n quote,\n refuel: Boolean(refuel),\n };\n};\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bridge-status.d.cts","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oCAAoC;AAGzD,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACd,qBAAiB;AAElB,eAAO,MAAM,iBAAiB,aAAc,MAAM;;CAEhD,CAAC;AAEH,eAAO,MAAM,kBAAkB,qBAAsB,MAAM,WACxB,CAAC;AAEpC,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,KACxC,gBAiBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,YAC/B,MAAM,WACP,aAAa,oBACJ,MAAM,KACvB,QAAQ,cAAc,CAgBxB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UACjC,KAAK,aACD,MAAM,KAChB,
|
1
|
+
{"version":3,"file":"bridge-status.d.cts","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oCAAoC;AAGzD,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACd,qBAAiB;AAElB,eAAO,MAAM,iBAAiB,aAAc,MAAM;;CAEhD,CAAC;AAEH,eAAO,MAAM,kBAAkB,qBAAsB,MAAM,WACxB,CAAC;AAEpC,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,KACxC,gBAiBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,YAC/B,MAAM,WACP,aAAa,oBACJ,MAAM,KACvB,QAAQ,cAAc,CAgBxB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UACjC,KAAK,aACD,MAAM,KAChB,0BAWF,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bridge-status.d.mts","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oCAAoC;AAGzD,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACd,qBAAiB;AAElB,eAAO,MAAM,iBAAiB,aAAc,MAAM;;CAEhD,CAAC;AAEH,eAAO,MAAM,kBAAkB,qBAAsB,MAAM,WACxB,CAAC;AAEpC,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,KACxC,gBAiBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,YAC/B,MAAM,WACP,aAAa,oBACJ,MAAM,KACvB,QAAQ,cAAc,CAgBxB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UACjC,KAAK,aACD,MAAM,KAChB,
|
1
|
+
{"version":3,"file":"bridge-status.d.mts","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oCAAoC;AAGzD,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACd,qBAAiB;AAElB,eAAO,MAAM,iBAAiB,aAAc,MAAM;;CAEhD,CAAC;AAEH,eAAO,MAAM,kBAAkB,qBAAsB,MAAM,WACxB,CAAC;AAEpC,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,KACxC,gBAiBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,kBACf,0BAA0B,YAC/B,MAAM,WACP,aAAa,oBACJ,MAAM,KACvB,QAAQ,cAAc,CAgBxB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UACjC,KAAK,aACD,MAAM,KAChB,0BAWF,CAAC"}
|
@@ -29,14 +29,15 @@ export const fetchBridgeTxStatus = async (statusRequest, clientId, fetchFn, brid
|
|
29
29
|
return rawTxStatus;
|
30
30
|
};
|
31
31
|
export const getStatusRequestWithSrcTxHash = (quote, srcTxHash) => {
|
32
|
+
const { bridgeId, bridges, srcChainId, destChainId, refuel } = quote;
|
32
33
|
return {
|
33
|
-
bridgeId
|
34
|
+
bridgeId,
|
34
35
|
srcTxHash,
|
35
|
-
bridge:
|
36
|
-
srcChainId
|
37
|
-
destChainId
|
36
|
+
bridge: bridges[0],
|
37
|
+
srcChainId,
|
38
|
+
destChainId,
|
38
39
|
quote,
|
39
|
-
refuel: Boolean(
|
40
|
+
refuel: Boolean(refuel),
|
40
41
|
};
|
41
42
|
};
|
42
43
|
//# sourceMappingURL=bridge-status.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bridge-status.mjs","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,yBAAqB;AAQ5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,aAAa,EAAE,QAAQ;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAC7D,GAAG,gBAAgB,cAAc,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,aAAyC,EACvB,EAAE;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,EAAE,GAAG,aAAa,CAAC;IAEzD,MAAM,6BAA6B,GAAG,MAAM,CAAC,WAAW,CACtD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACzD,GAAG;QACH,KAAK,CAAC,QAAQ,EAAE;KACjB,CAAC,CAC+C,CAAC;IAEpD,MAAM,SAAS,GACb,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,OAAO;QACL,GAAG,6BAA6B;QAChC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,aAAyC,EACzC,QAAgB,EAChB,OAAsB,EACtB,gBAAwB,EACC,EAAE;IAC3B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAErD,QAAQ;IACR,MAAM,GAAG,GAAG,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAE3E,MAAM,WAAW,GAAY,MAAM,OAAO,CAAC,GAAG,EAAE;QAC9C,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;KACrC,CAAC,CAAC;IAEH,WAAW;IACX,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE1C,SAAS;IACT,OAAO,WAA6B,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,KAAY,EACZ,SAAiB,EACW,EAAE;IAC9B,
|
1
|
+
{"version":3,"file":"bridge-status.mjs","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,yBAAqB;AAQ5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,aAAa,EAAE,QAAQ;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAC7D,GAAG,gBAAgB,cAAc,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,aAAyC,EACvB,EAAE;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,EAAE,GAAG,aAAa,CAAC;IAEzD,MAAM,6BAA6B,GAAG,MAAM,CAAC,WAAW,CACtD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACzD,GAAG;QACH,KAAK,CAAC,QAAQ,EAAE;KACjB,CAAC,CAC+C,CAAC;IAEpD,MAAM,SAAS,GACb,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,OAAO;QACL,GAAG,6BAA6B;QAChC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,aAAyC,EACzC,QAAgB,EAChB,OAAsB,EACtB,gBAAwB,EACC,EAAE;IAC3B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAErD,QAAQ;IACR,MAAM,GAAG,GAAG,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAE3E,MAAM,WAAW,GAAY,MAAM,OAAO,CAAC,GAAG,EAAE;QAC9C,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;KACrC,CAAC,CAAC;IAEH,WAAW;IACX,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE1C,SAAS;IACT,OAAO,WAA6B,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,KAAY,EACZ,SAAiB,EACW,EAAE;IAC9B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrE,OAAO;QACL,QAAQ;QACR,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClB,UAAU;QACV,WAAW;QACX,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Quote } from '@metamask/bridge-controller';\n\nimport { validateBridgeStatusResponse } from './validators';\nimport type {\n StatusResponse,\n StatusRequestWithSrcTxHash,\n StatusRequestDto,\n FetchFunction,\n} from '../types';\n\nexport const getClientIdHeader = (clientId: string) => ({\n 'X-Client-Id': clientId,\n});\n\nexport const getBridgeStatusUrl = (bridgeApiBaseUrl: string) =>\n `${bridgeApiBaseUrl}/getTxStatus`;\n\nexport const getStatusRequestDto = (\n statusRequest: StatusRequestWithSrcTxHash,\n): StatusRequestDto => {\n const { quote, ...statusRequestNoQuote } = statusRequest;\n\n const statusRequestNoQuoteFormatted = Object.fromEntries(\n Object.entries(statusRequestNoQuote).map(([key, value]) => [\n key,\n value.toString(),\n ]),\n ) as unknown as Omit<StatusRequestDto, 'requestId'>;\n\n const requestId: { requestId: string } | Record<string, never> =\n quote?.requestId ? { requestId: quote.requestId } : {};\n\n return {\n ...statusRequestNoQuoteFormatted,\n ...requestId,\n };\n};\n\nexport const fetchBridgeTxStatus = async (\n statusRequest: StatusRequestWithSrcTxHash,\n clientId: string,\n fetchFn: FetchFunction,\n bridgeApiBaseUrl: string,\n): Promise<StatusResponse> => {\n const statusRequestDto = getStatusRequestDto(statusRequest);\n const params = new URLSearchParams(statusRequestDto);\n\n // Fetch\n const url = `${getBridgeStatusUrl(bridgeApiBaseUrl)}?${params.toString()}`;\n\n const rawTxStatus: unknown = await fetchFn(url, {\n headers: getClientIdHeader(clientId),\n });\n\n // Validate\n validateBridgeStatusResponse(rawTxStatus);\n\n // Return\n return rawTxStatus as StatusResponse;\n};\n\nexport const getStatusRequestWithSrcTxHash = (\n quote: Quote,\n srcTxHash: string,\n): StatusRequestWithSrcTxHash => {\n const { bridgeId, bridges, srcChainId, destChainId, refuel } = quote;\n return {\n bridgeId,\n srcTxHash,\n bridge: bridges[0],\n srcChainId,\n destChainId,\n quote,\n refuel: Boolean(refuel),\n };\n};\n"]}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.handleSolanaTxResponse = exports.getTxMetaFields = exports.getStatusRequestParams = void 0;
|
4
|
+
const bridge_controller_1 = require("@metamask/bridge-controller");
|
5
|
+
const transaction_controller_1 = require("@metamask/transaction-controller");
|
6
|
+
const uuid_1 = require("uuid");
|
7
|
+
const getStatusRequestParams = (quoteResponse) => {
|
8
|
+
return {
|
9
|
+
bridgeId: quoteResponse.quote.bridgeId,
|
10
|
+
bridge: quoteResponse.quote.bridges[0],
|
11
|
+
srcChainId: quoteResponse.quote.srcChainId,
|
12
|
+
destChainId: quoteResponse.quote.destChainId,
|
13
|
+
quote: quoteResponse.quote,
|
14
|
+
refuel: Boolean(quoteResponse.quote.refuel),
|
15
|
+
};
|
16
|
+
};
|
17
|
+
exports.getStatusRequestParams = getStatusRequestParams;
|
18
|
+
const getTxMetaFields = (quoteResponse, approvalTxId) => {
|
19
|
+
return {
|
20
|
+
destinationChainId: (0, bridge_controller_1.formatChainIdToHex)(quoteResponse.quote.destChainId),
|
21
|
+
sourceTokenAmount: quoteResponse.quote.srcTokenAmount,
|
22
|
+
sourceTokenSymbol: quoteResponse.quote.srcAsset.symbol,
|
23
|
+
sourceTokenDecimals: quoteResponse.quote.srcAsset.decimals,
|
24
|
+
sourceTokenAddress: quoteResponse.quote.srcAsset.address,
|
25
|
+
destinationTokenAmount: quoteResponse.quote.destTokenAmount,
|
26
|
+
destinationTokenSymbol: quoteResponse.quote.destAsset.symbol,
|
27
|
+
destinationTokenDecimals: quoteResponse.quote.destAsset.decimals,
|
28
|
+
destinationTokenAddress: quoteResponse.quote.destAsset.address,
|
29
|
+
approvalTxId,
|
30
|
+
// this is the decimal (non atomic) amount (not USD value) of source token to swap
|
31
|
+
swapTokenValue: quoteResponse.sentAmount.amount,
|
32
|
+
// Ensure it's marked as a bridge transaction for UI detection
|
33
|
+
isBridgeTx: true, // TODO deprecate this and use tx type
|
34
|
+
};
|
35
|
+
};
|
36
|
+
exports.getTxMetaFields = getTxMetaFields;
|
37
|
+
const handleSolanaTxResponse = (snapResponse, quoteResponse, snapId, // TODO use SnapId type
|
38
|
+
selectedAccountAddress) => {
|
39
|
+
let hash;
|
40
|
+
// Handle different response formats
|
41
|
+
if (typeof snapResponse === 'string') {
|
42
|
+
hash = snapResponse;
|
43
|
+
}
|
44
|
+
else if (snapResponse && typeof snapResponse === 'object') {
|
45
|
+
// If it's an object with result property, try to get the signature
|
46
|
+
if (snapResponse.result && typeof snapResponse.result === 'object') {
|
47
|
+
// Try to extract signature from common locations in response object
|
48
|
+
hash =
|
49
|
+
snapResponse.result.signature ||
|
50
|
+
snapResponse.result.txid ||
|
51
|
+
snapResponse.result.hash ||
|
52
|
+
snapResponse.result.txHash;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
// Create a transaction meta object with bridge-specific fields
|
56
|
+
const txMeta = {
|
57
|
+
...(0, exports.getTxMetaFields)(quoteResponse),
|
58
|
+
id: (0, uuid_1.v4)(),
|
59
|
+
chainId: (0, bridge_controller_1.formatChainIdToHex)(quoteResponse.quote.srcChainId),
|
60
|
+
// networkClientId: selectedAccount.id, //TODO optional for solana or no?
|
61
|
+
txParams: { from: selectedAccountAddress },
|
62
|
+
type: transaction_controller_1.TransactionType.bridge,
|
63
|
+
status: transaction_controller_1.TransactionStatus.submitted,
|
64
|
+
hash,
|
65
|
+
// Add an explicit flag to mark this as a Solana transaction
|
66
|
+
isSolana: true,
|
67
|
+
isBridgeTx: true,
|
68
|
+
// Add key bridge-specific fields for proper categorization
|
69
|
+
// actionId: txType,
|
70
|
+
origin: snapId,
|
71
|
+
}; // TODO remove this override once deprecated fields are removed
|
72
|
+
return txMeta;
|
73
|
+
};
|
74
|
+
exports.handleSolanaTxResponse = handleSolanaTxResponse;
|
75
|
+
//# sourceMappingURL=transaction.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transaction.cjs","sourceRoot":"","sources":["../../src/utils/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TxData } from '@metamask/bridge-controller';\nimport {\n formatChainIdToHex,\n type QuoteMetadata,\n type QuoteResponse,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n type TransactionMeta,\n} from '@metamask/transaction-controller';\nimport { v4 as uuid } from 'uuid';\n\nexport const getStatusRequestParams = (\n quoteResponse: QuoteResponse<string | TxData>,\n) => {\n return {\n bridgeId: quoteResponse.quote.bridgeId,\n bridge: quoteResponse.quote.bridges[0],\n srcChainId: quoteResponse.quote.srcChainId,\n destChainId: quoteResponse.quote.destChainId,\n quote: quoteResponse.quote,\n refuel: Boolean(quoteResponse.quote.refuel),\n };\n};\n\nexport const getTxMetaFields = (\n quoteResponse: Omit<QuoteResponse<string | TxData>, 'approval' | 'trade'> &\n QuoteMetadata,\n approvalTxId?: string,\n) => {\n return {\n destinationChainId: formatChainIdToHex(quoteResponse.quote.destChainId),\n sourceTokenAmount: quoteResponse.quote.srcTokenAmount,\n sourceTokenSymbol: quoteResponse.quote.srcAsset.symbol,\n sourceTokenDecimals: quoteResponse.quote.srcAsset.decimals,\n sourceTokenAddress: quoteResponse.quote.srcAsset.address,\n\n destinationTokenAmount: quoteResponse.quote.destTokenAmount,\n destinationTokenSymbol: quoteResponse.quote.destAsset.symbol,\n destinationTokenDecimals: quoteResponse.quote.destAsset.decimals,\n destinationTokenAddress: quoteResponse.quote.destAsset.address,\n\n approvalTxId,\n // this is the decimal (non atomic) amount (not USD value) of source token to swap\n swapTokenValue: quoteResponse.sentAmount.amount,\n // Ensure it's marked as a bridge transaction for UI detection\n isBridgeTx: true, // TODO deprecate this and use tx type\n };\n};\n\nexport const handleSolanaTxResponse = (\n snapResponse: string | { result: Record<string, string> },\n quoteResponse: Omit<QuoteResponse<string>, 'approval' | 'trade'> &\n QuoteMetadata,\n snapId: string, // TODO use SnapId type\n selectedAccountAddress: string,\n) => {\n let hash;\n // Handle different response formats\n if (typeof snapResponse === 'string') {\n hash = snapResponse;\n } else if (snapResponse && typeof snapResponse === 'object') {\n // If it's an object with result property, try to get the signature\n if (snapResponse.result && typeof snapResponse.result === 'object') {\n // Try to extract signature from common locations in response object\n hash =\n snapResponse.result.signature ||\n snapResponse.result.txid ||\n snapResponse.result.hash ||\n snapResponse.result.txHash;\n }\n }\n\n // Create a transaction meta object with bridge-specific fields\n const txMeta: TransactionMeta = {\n ...getTxMetaFields(quoteResponse),\n id: uuid(),\n chainId: formatChainIdToHex(quoteResponse.quote.srcChainId),\n // networkClientId: selectedAccount.id, //TODO optional for solana or no?\n txParams: { from: selectedAccountAddress }, // { data: quoteResponse.trade }, // TODO not reading this for solana\n type: TransactionType.bridge,\n status: TransactionStatus.submitted,\n hash, // Add the transaction signature as hash\n // Add an explicit flag to mark this as a Solana transaction\n isSolana: true, // TODO deprecate this and use chainId\n isBridgeTx: true, // TODO deprecate this and use type\n // Add key bridge-specific fields for proper categorization\n // actionId: txType,\n origin: snapId,\n } as never; // TODO remove this override once deprecated fields are removed\n\n return txMeta;\n};\n"]}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import type { TxData } from "@metamask/bridge-controller";
|
2
|
+
import { type QuoteMetadata, type QuoteResponse } from "@metamask/bridge-controller";
|
3
|
+
import { type TransactionMeta } from "@metamask/transaction-controller";
|
4
|
+
export declare const getStatusRequestParams: (quoteResponse: QuoteResponse<string | TxData>) => {
|
5
|
+
bridgeId: string;
|
6
|
+
bridge: string;
|
7
|
+
srcChainId: import("@metamask/bridge-controller").ChainId;
|
8
|
+
destChainId: import("@metamask/bridge-controller").ChainId;
|
9
|
+
quote: import("@metamask/bridge-controller").Quote;
|
10
|
+
refuel: boolean;
|
11
|
+
};
|
12
|
+
export declare const getTxMetaFields: (quoteResponse: Omit<QuoteResponse<string | TxData>, 'approval' | 'trade'> & QuoteMetadata, approvalTxId?: string) => {
|
13
|
+
destinationChainId: `0x${string}`;
|
14
|
+
sourceTokenAmount: string;
|
15
|
+
sourceTokenSymbol: string;
|
16
|
+
sourceTokenDecimals: number;
|
17
|
+
sourceTokenAddress: string;
|
18
|
+
destinationTokenAmount: string;
|
19
|
+
destinationTokenSymbol: string;
|
20
|
+
destinationTokenDecimals: number;
|
21
|
+
destinationTokenAddress: string;
|
22
|
+
approvalTxId: string | undefined;
|
23
|
+
swapTokenValue: string;
|
24
|
+
isBridgeTx: boolean;
|
25
|
+
};
|
26
|
+
export declare const handleSolanaTxResponse: (snapResponse: string | {
|
27
|
+
result: Record<string, string>;
|
28
|
+
}, quoteResponse: Omit<QuoteResponse<string>, 'approval' | 'trade'> & QuoteMetadata, snapId: string, selectedAccountAddress: string) => TransactionMeta;
|
29
|
+
//# sourceMappingURL=transaction.d.cts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transaction.d.cts","sourceRoot":"","sources":["../../src/utils/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,oCAAoC;AAC1D,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,oCAAoC;AACrC,OAAO,EAGL,KAAK,eAAe,EACrB,yCAAyC;AAG1C,eAAO,MAAM,sBAAsB,kBAClB,cAAc,MAAM,GAAG,MAAM,CAAC;;;;;;;CAU9C,CAAC;AAEF,eAAO,MAAM,eAAe,kBACX,KAAK,cAAc,MAAM,GAAG,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GACvE,aAAa,iBACA,MAAM;;;;;;;;;;;;;CAoBtB,CAAC;AAEF,eAAO,MAAM,sBAAsB,iBACnB,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,iBAC1C,KAAK,cAAc,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAC9D,aAAa,UACP,MAAM,0BACU,MAAM,oBAqC/B,CAAC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import type { TxData } from "@metamask/bridge-controller";
|
2
|
+
import { type QuoteMetadata, type QuoteResponse } from "@metamask/bridge-controller";
|
3
|
+
import { type TransactionMeta } from "@metamask/transaction-controller";
|
4
|
+
export declare const getStatusRequestParams: (quoteResponse: QuoteResponse<string | TxData>) => {
|
5
|
+
bridgeId: string;
|
6
|
+
bridge: string;
|
7
|
+
srcChainId: import("@metamask/bridge-controller").ChainId;
|
8
|
+
destChainId: import("@metamask/bridge-controller").ChainId;
|
9
|
+
quote: import("@metamask/bridge-controller").Quote;
|
10
|
+
refuel: boolean;
|
11
|
+
};
|
12
|
+
export declare const getTxMetaFields: (quoteResponse: Omit<QuoteResponse<string | TxData>, 'approval' | 'trade'> & QuoteMetadata, approvalTxId?: string) => {
|
13
|
+
destinationChainId: `0x${string}`;
|
14
|
+
sourceTokenAmount: string;
|
15
|
+
sourceTokenSymbol: string;
|
16
|
+
sourceTokenDecimals: number;
|
17
|
+
sourceTokenAddress: string;
|
18
|
+
destinationTokenAmount: string;
|
19
|
+
destinationTokenSymbol: string;
|
20
|
+
destinationTokenDecimals: number;
|
21
|
+
destinationTokenAddress: string;
|
22
|
+
approvalTxId: string | undefined;
|
23
|
+
swapTokenValue: string;
|
24
|
+
isBridgeTx: boolean;
|
25
|
+
};
|
26
|
+
export declare const handleSolanaTxResponse: (snapResponse: string | {
|
27
|
+
result: Record<string, string>;
|
28
|
+
}, quoteResponse: Omit<QuoteResponse<string>, 'approval' | 'trade'> & QuoteMetadata, snapId: string, selectedAccountAddress: string) => TransactionMeta;
|
29
|
+
//# sourceMappingURL=transaction.d.mts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transaction.d.mts","sourceRoot":"","sources":["../../src/utils/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,oCAAoC;AAC1D,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,oCAAoC;AACrC,OAAO,EAGL,KAAK,eAAe,EACrB,yCAAyC;AAG1C,eAAO,MAAM,sBAAsB,kBAClB,cAAc,MAAM,GAAG,MAAM,CAAC;;;;;;;CAU9C,CAAC;AAEF,eAAO,MAAM,eAAe,kBACX,KAAK,cAAc,MAAM,GAAG,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GACvE,aAAa,iBACA,MAAM;;;;;;;;;;;;;CAoBtB,CAAC;AAEF,eAAO,MAAM,sBAAsB,iBACnB,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,iBAC1C,KAAK,cAAc,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAC9D,aAAa,UACP,MAAM,0BACU,MAAM,oBAqC/B,CAAC"}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import { formatChainIdToHex } from "@metamask/bridge-controller";
|
2
|
+
import { TransactionStatus, TransactionType } from "@metamask/transaction-controller";
|
3
|
+
import { v4 as uuid } from "uuid";
|
4
|
+
export const getStatusRequestParams = (quoteResponse) => {
|
5
|
+
return {
|
6
|
+
bridgeId: quoteResponse.quote.bridgeId,
|
7
|
+
bridge: quoteResponse.quote.bridges[0],
|
8
|
+
srcChainId: quoteResponse.quote.srcChainId,
|
9
|
+
destChainId: quoteResponse.quote.destChainId,
|
10
|
+
quote: quoteResponse.quote,
|
11
|
+
refuel: Boolean(quoteResponse.quote.refuel),
|
12
|
+
};
|
13
|
+
};
|
14
|
+
export const getTxMetaFields = (quoteResponse, approvalTxId) => {
|
15
|
+
return {
|
16
|
+
destinationChainId: formatChainIdToHex(quoteResponse.quote.destChainId),
|
17
|
+
sourceTokenAmount: quoteResponse.quote.srcTokenAmount,
|
18
|
+
sourceTokenSymbol: quoteResponse.quote.srcAsset.symbol,
|
19
|
+
sourceTokenDecimals: quoteResponse.quote.srcAsset.decimals,
|
20
|
+
sourceTokenAddress: quoteResponse.quote.srcAsset.address,
|
21
|
+
destinationTokenAmount: quoteResponse.quote.destTokenAmount,
|
22
|
+
destinationTokenSymbol: quoteResponse.quote.destAsset.symbol,
|
23
|
+
destinationTokenDecimals: quoteResponse.quote.destAsset.decimals,
|
24
|
+
destinationTokenAddress: quoteResponse.quote.destAsset.address,
|
25
|
+
approvalTxId,
|
26
|
+
// this is the decimal (non atomic) amount (not USD value) of source token to swap
|
27
|
+
swapTokenValue: quoteResponse.sentAmount.amount,
|
28
|
+
// Ensure it's marked as a bridge transaction for UI detection
|
29
|
+
isBridgeTx: true, // TODO deprecate this and use tx type
|
30
|
+
};
|
31
|
+
};
|
32
|
+
export const handleSolanaTxResponse = (snapResponse, quoteResponse, snapId, // TODO use SnapId type
|
33
|
+
selectedAccountAddress) => {
|
34
|
+
let hash;
|
35
|
+
// Handle different response formats
|
36
|
+
if (typeof snapResponse === 'string') {
|
37
|
+
hash = snapResponse;
|
38
|
+
}
|
39
|
+
else if (snapResponse && typeof snapResponse === 'object') {
|
40
|
+
// If it's an object with result property, try to get the signature
|
41
|
+
if (snapResponse.result && typeof snapResponse.result === 'object') {
|
42
|
+
// Try to extract signature from common locations in response object
|
43
|
+
hash =
|
44
|
+
snapResponse.result.signature ||
|
45
|
+
snapResponse.result.txid ||
|
46
|
+
snapResponse.result.hash ||
|
47
|
+
snapResponse.result.txHash;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
// Create a transaction meta object with bridge-specific fields
|
51
|
+
const txMeta = {
|
52
|
+
...getTxMetaFields(quoteResponse),
|
53
|
+
id: uuid(),
|
54
|
+
chainId: formatChainIdToHex(quoteResponse.quote.srcChainId),
|
55
|
+
// networkClientId: selectedAccount.id, //TODO optional for solana or no?
|
56
|
+
txParams: { from: selectedAccountAddress },
|
57
|
+
type: TransactionType.bridge,
|
58
|
+
status: TransactionStatus.submitted,
|
59
|
+
hash,
|
60
|
+
// Add an explicit flag to mark this as a Solana transaction
|
61
|
+
isSolana: true,
|
62
|
+
isBridgeTx: true,
|
63
|
+
// Add key bridge-specific fields for proper categorization
|
64
|
+
// actionId: txType,
|
65
|
+
origin: snapId,
|
66
|
+
}; // TODO remove this override once deprecated fields are removed
|
67
|
+
return txMeta;
|
68
|
+
};
|
69
|
+
//# sourceMappingURL=transaction.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transaction.mjs","sourceRoot":"","sources":["../../src/utils/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TxData } from '@metamask/bridge-controller';\nimport {\n formatChainIdToHex,\n type QuoteMetadata,\n type QuoteResponse,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n type TransactionMeta,\n} from '@metamask/transaction-controller';\nimport { v4 as uuid } from 'uuid';\n\nexport const getStatusRequestParams = (\n quoteResponse: QuoteResponse<string | TxData>,\n) => {\n return {\n bridgeId: quoteResponse.quote.bridgeId,\n bridge: quoteResponse.quote.bridges[0],\n srcChainId: quoteResponse.quote.srcChainId,\n destChainId: quoteResponse.quote.destChainId,\n quote: quoteResponse.quote,\n refuel: Boolean(quoteResponse.quote.refuel),\n };\n};\n\nexport const getTxMetaFields = (\n quoteResponse: Omit<QuoteResponse<string | TxData>, 'approval' | 'trade'> &\n QuoteMetadata,\n approvalTxId?: string,\n) => {\n return {\n destinationChainId: formatChainIdToHex(quoteResponse.quote.destChainId),\n sourceTokenAmount: quoteResponse.quote.srcTokenAmount,\n sourceTokenSymbol: quoteResponse.quote.srcAsset.symbol,\n sourceTokenDecimals: quoteResponse.quote.srcAsset.decimals,\n sourceTokenAddress: quoteResponse.quote.srcAsset.address,\n\n destinationTokenAmount: quoteResponse.quote.destTokenAmount,\n destinationTokenSymbol: quoteResponse.quote.destAsset.symbol,\n destinationTokenDecimals: quoteResponse.quote.destAsset.decimals,\n destinationTokenAddress: quoteResponse.quote.destAsset.address,\n\n approvalTxId,\n // this is the decimal (non atomic) amount (not USD value) of source token to swap\n swapTokenValue: quoteResponse.sentAmount.amount,\n // Ensure it's marked as a bridge transaction for UI detection\n isBridgeTx: true, // TODO deprecate this and use tx type\n };\n};\n\nexport const handleSolanaTxResponse = (\n snapResponse: string | { result: Record<string, string> },\n quoteResponse: Omit<QuoteResponse<string>, 'approval' | 'trade'> &\n QuoteMetadata,\n snapId: string, // TODO use SnapId type\n selectedAccountAddress: string,\n) => {\n let hash;\n // Handle different response formats\n if (typeof snapResponse === 'string') {\n hash = snapResponse;\n } else if (snapResponse && typeof snapResponse === 'object') {\n // If it's an object with result property, try to get the signature\n if (snapResponse.result && typeof snapResponse.result === 'object') {\n // Try to extract signature from common locations in response object\n hash =\n snapResponse.result.signature ||\n snapResponse.result.txid ||\n snapResponse.result.hash ||\n snapResponse.result.txHash;\n }\n }\n\n // Create a transaction meta object with bridge-specific fields\n const txMeta: TransactionMeta = {\n ...getTxMetaFields(quoteResponse),\n id: uuid(),\n chainId: formatChainIdToHex(quoteResponse.quote.srcChainId),\n // networkClientId: selectedAccount.id, //TODO optional for solana or no?\n txParams: { from: selectedAccountAddress }, // { data: quoteResponse.trade }, // TODO not reading this for solana\n type: TransactionType.bridge,\n status: TransactionStatus.submitted,\n hash, // Add the transaction signature as hash\n // Add an explicit flag to mark this as a Solana transaction\n isSolana: true, // TODO deprecate this and use chainId\n isBridgeTx: true, // TODO deprecate this and use type\n // Add key bridge-specific fields for proper categorization\n // actionId: txType,\n origin: snapId,\n } as never; // TODO remove this override once deprecated fields are removed\n\n return txMeta;\n};\n"]}
|
@@ -31,7 +31,7 @@ const validateBridgeStatusResponse = (data) => {
|
|
31
31
|
status: (0, superstruct_1.enums)(Object.values(types_1.StatusTypes)),
|
32
32
|
srcChain: SrcChainStatusSchema,
|
33
33
|
destChain: (0, superstruct_1.optional)(DestChainStatusSchema),
|
34
|
-
bridge: (0, superstruct_1.optional)((0, superstruct_1.
|
34
|
+
bridge: (0, superstruct_1.optional)((0, superstruct_1.string)()),
|
35
35
|
isExpectedToken: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
|
36
36
|
isUnrecognizedRouterAddress: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
|
37
37
|
refuel: (0, superstruct_1.optional)(RefuelStatusResponseSchema),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validators.cjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":";;;AAAA,uDAW+B;AAE/B,
|
1
|
+
{"version":3,"file":"validators.cjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":";;;AAAA,uDAW+B;AAE/B,wCAAuC;AAEhC,MAAM,4BAA4B,GAAG,CAAC,IAAa,EAAE,EAAE;IAC5D,MAAM,aAAa,GAAG,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,CAAC,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,IAAA,kBAAI,EAAC;QACvB,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,IAAA,oBAAM,GAAE;QACjB,MAAM,EAAE,IAAA,oBAAM,GAAE;QAChB,IAAI,EAAE,IAAA,oBAAM,GAAE;QACd,QAAQ,EAAE,IAAA,oBAAM,GAAE;QAClB,IAAI,EAAE,IAAA,sBAAQ,EAAC,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC,CAAC;KACnC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,IAAA,oBAAM,EAAC,EAAE,CAAC,CAAC;IAErC,MAAM,oBAAoB,GAAG,IAAA,kBAAI,EAAC;QAChC,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;QAC1B,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;QAC1B,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,IAAA,kBAAI,EAAC;QACjC,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;QAC1B,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;QAC1B,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,0BAA0B,GAAG,IAAA,oBAAM,GAAE,CAAC;IAE5C,MAAM,oBAAoB,GAAG,IAAA,kBAAI,EAAC;QAChC,MAAM,EAAE,IAAA,mBAAK,EAAC,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC;QACzC,QAAQ,EAAE,oBAAoB;QAC9B,SAAS,EAAE,IAAA,sBAAQ,EAAC,qBAAqB,CAAC;QAC1C,MAAM,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;QAC1B,eAAe,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;QACpC,2BAA2B,EAAE,IAAA,sBAAQ,EAAC,IAAA,qBAAO,GAAE,CAAC;QAChD,MAAM,EAAE,IAAA,sBAAQ,EAAC,0BAA0B,CAAC;KAC7C,CAAC,CAAC;IAEH,IAAA,oBAAM,EAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACrC,CAAC,CAAC;AAzCW,QAAA,4BAA4B,gCAyCvC","sourcesContent":["import {\n object,\n string,\n boolean,\n number,\n optional,\n enums,\n union,\n type,\n nullable,\n assert,\n} from '@metamask/superstruct';\n\nimport { StatusTypes } from '../types';\n\nexport const validateBridgeStatusResponse = (data: unknown) => {\n const ChainIdSchema = union([number(), string()]);\n\n const AssetSchema = type({\n chainId: ChainIdSchema,\n address: string(),\n symbol: string(),\n name: string(),\n decimals: number(),\n icon: optional(nullable(string())),\n });\n\n const EmptyObjectSchema = object({});\n\n const SrcChainStatusSchema = type({\n chainId: ChainIdSchema,\n txHash: optional(string()),\n amount: optional(string()),\n token: optional(union([EmptyObjectSchema, AssetSchema])),\n });\n\n const DestChainStatusSchema = type({\n chainId: ChainIdSchema,\n txHash: optional(string()),\n amount: optional(string()),\n token: optional(union([EmptyObjectSchema, AssetSchema])),\n });\n\n const RefuelStatusResponseSchema = object();\n\n const StatusResponseSchema = type({\n status: enums(Object.values(StatusTypes)),\n srcChain: SrcChainStatusSchema,\n destChain: optional(DestChainStatusSchema),\n bridge: optional(string()),\n isExpectedToken: optional(boolean()),\n isUnrecognizedRouterAddress: optional(boolean()),\n refuel: optional(RefuelStatusResponseSchema),\n });\n\n assert(data, StatusResponseSchema);\n};\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { object, string, boolean, number, optional, enums, union, type, nullable, assert } from "@metamask/superstruct";
|
2
|
-
import {
|
2
|
+
import { StatusTypes } from "../types.mjs";
|
3
3
|
export const validateBridgeStatusResponse = (data) => {
|
4
4
|
const ChainIdSchema = union([number(), string()]);
|
5
5
|
const AssetSchema = type({
|
@@ -28,7 +28,7 @@ export const validateBridgeStatusResponse = (data) => {
|
|
28
28
|
status: enums(Object.values(StatusTypes)),
|
29
29
|
srcChain: SrcChainStatusSchema,
|
30
30
|
destChain: optional(DestChainStatusSchema),
|
31
|
-
bridge: optional(
|
31
|
+
bridge: optional(string()),
|
32
32
|
isExpectedToken: optional(boolean()),
|
33
33
|
isUnrecognizedRouterAddress: optional(boolean()),
|
34
34
|
refuel: optional(RefuelStatusResponseSchema),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACP,8BAA8B;AAE/B,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"validators.mjs","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACP,8BAA8B;AAE/B,OAAO,EAAE,WAAW,EAAE,qBAAiB;AAEvC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAa,EAAE,EAAE;IAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,MAAM,EAAE;QACjB,MAAM,EAAE,MAAM,EAAE;QAChB,IAAI,EAAE,MAAM,EAAE;QACd,QAAQ,EAAE,MAAM,EAAE;QAClB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,oBAAoB,GAAG,IAAI,CAAC;QAChC,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACjC,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,0BAA0B,GAAG,MAAM,EAAE,CAAC;IAE5C,MAAM,oBAAoB,GAAG,IAAI,CAAC;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzC,QAAQ,EAAE,oBAAoB;QAC9B,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC;QAC1C,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,eAAe,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpC,2BAA2B,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACrC,CAAC,CAAC","sourcesContent":["import {\n object,\n string,\n boolean,\n number,\n optional,\n enums,\n union,\n type,\n nullable,\n assert,\n} from '@metamask/superstruct';\n\nimport { StatusTypes } from '../types';\n\nexport const validateBridgeStatusResponse = (data: unknown) => {\n const ChainIdSchema = union([number(), string()]);\n\n const AssetSchema = type({\n chainId: ChainIdSchema,\n address: string(),\n symbol: string(),\n name: string(),\n decimals: number(),\n icon: optional(nullable(string())),\n });\n\n const EmptyObjectSchema = object({});\n\n const SrcChainStatusSchema = type({\n chainId: ChainIdSchema,\n txHash: optional(string()),\n amount: optional(string()),\n token: optional(union([EmptyObjectSchema, AssetSchema])),\n });\n\n const DestChainStatusSchema = type({\n chainId: ChainIdSchema,\n txHash: optional(string()),\n amount: optional(string()),\n token: optional(union([EmptyObjectSchema, AssetSchema])),\n });\n\n const RefuelStatusResponseSchema = object();\n\n const StatusResponseSchema = type({\n status: enums(Object.values(StatusTypes)),\n srcChain: SrcChainStatusSchema,\n destChain: optional(DestChainStatusSchema),\n bridge: optional(string()),\n isExpectedToken: optional(boolean()),\n isUnrecognizedRouterAddress: optional(boolean()),\n refuel: optional(RefuelStatusResponseSchema),\n });\n\n assert(data, StatusResponseSchema);\n};\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@metamask-previews/bridge-status-controller",
|
3
|
-
"version": "12.0.1-preview-
|
3
|
+
"version": "12.0.1-preview-5867b015",
|
4
4
|
"description": "Manages bridge-related status fetching functionality for MetaMask",
|
5
5
|
"keywords": [
|
6
6
|
"MetaMask",
|
@@ -52,12 +52,14 @@
|
|
52
52
|
"@metamask/controller-utils": "^11.7.0",
|
53
53
|
"@metamask/polling-controller": "^13.0.0",
|
54
54
|
"@metamask/superstruct": "^3.1.0",
|
55
|
-
"@metamask/utils": "^11.2.0"
|
55
|
+
"@metamask/utils": "^11.2.0",
|
56
|
+
"uuid": "^8.3.2"
|
56
57
|
},
|
57
58
|
"devDependencies": {
|
58
59
|
"@metamask/accounts-controller": "^27.0.0",
|
59
60
|
"@metamask/auto-changelog": "^3.4.4",
|
60
61
|
"@metamask/network-controller": "^23.2.0",
|
62
|
+
"@metamask/snaps-controllers": "^9.19.0",
|
61
63
|
"@metamask/transaction-controller": "^54.0.0",
|
62
64
|
"@types/jest": "^27.4.1",
|
63
65
|
"deepmerge": "^4.2.2",
|
@@ -73,6 +75,7 @@
|
|
73
75
|
"peerDependencies": {
|
74
76
|
"@metamask/accounts-controller": "^27.0.0",
|
75
77
|
"@metamask/network-controller": "^23.0.0",
|
78
|
+
"@metamask/snaps-controllers": "^9.19.0",
|
76
79
|
"@metamask/transaction-controller": "^54.0.0"
|
77
80
|
},
|
78
81
|
"engines": {
|