@metamask/bridge-status-controller 72.0.3 → 72.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/bridge-status-controller.cjs +66 -77
  3. package/dist/bridge-status-controller.cjs.map +1 -1
  4. package/dist/bridge-status-controller.d.cts +1 -1
  5. package/dist/bridge-status-controller.d.cts.map +1 -1
  6. package/dist/bridge-status-controller.d.mts +1 -1
  7. package/dist/bridge-status-controller.d.mts.map +1 -1
  8. package/dist/bridge-status-controller.mjs +41 -52
  9. package/dist/bridge-status-controller.mjs.map +1 -1
  10. package/dist/constants.cjs +8 -1
  11. package/dist/constants.cjs.map +1 -1
  12. package/dist/constants.d.cts +2 -0
  13. package/dist/constants.d.cts.map +1 -1
  14. package/dist/constants.d.mts +2 -0
  15. package/dist/constants.d.mts.map +1 -1
  16. package/dist/constants.mjs +7 -0
  17. package/dist/constants.mjs.map +1 -1
  18. package/dist/strategy/batch-sell-strategy.cjs +8 -7
  19. package/dist/strategy/batch-sell-strategy.cjs.map +1 -1
  20. package/dist/strategy/batch-sell-strategy.d.cts.map +1 -1
  21. package/dist/strategy/batch-sell-strategy.d.mts.map +1 -1
  22. package/dist/strategy/batch-sell-strategy.mjs +8 -7
  23. package/dist/strategy/batch-sell-strategy.mjs.map +1 -1
  24. package/dist/strategy/types.cjs +20 -0
  25. package/dist/strategy/types.cjs.map +1 -1
  26. package/dist/strategy/types.d.cts +39 -0
  27. package/dist/strategy/types.d.cts.map +1 -1
  28. package/dist/strategy/types.d.mts +39 -0
  29. package/dist/strategy/types.d.mts.map +1 -1
  30. package/dist/strategy/types.mjs +20 -0
  31. package/dist/strategy/types.mjs.map +1 -1
  32. package/dist/utils/bridge.cjs +2 -5
  33. package/dist/utils/bridge.cjs.map +1 -1
  34. package/dist/utils/bridge.d.cts +2 -2
  35. package/dist/utils/bridge.d.cts.map +1 -1
  36. package/dist/utils/bridge.d.mts +2 -2
  37. package/dist/utils/bridge.d.mts.map +1 -1
  38. package/dist/utils/bridge.mjs +3 -6
  39. package/dist/utils/bridge.mjs.map +1 -1
  40. package/dist/utils/metrics.cjs +6 -22
  41. package/dist/utils/metrics.cjs.map +1 -1
  42. package/dist/utils/metrics.d.cts +9 -27
  43. package/dist/utils/metrics.d.cts.map +1 -1
  44. package/dist/utils/metrics.d.mts +9 -27
  45. package/dist/utils/metrics.d.mts.map +1 -1
  46. package/dist/utils/metrics.mjs +6 -21
  47. package/dist/utils/metrics.mjs.map +1 -1
  48. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"batch-sell-strategy.mjs","sourceRoot":"","sources":["../../src/strategy/batch-sell-strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EAChB,yCAAyC;AAG1C,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,yBAAyB,EAC1B,iCAA6B;AAC9B,OAAO,EAAE,UAAU,EAAE,oBAAgB;AAGrC,MAAM,qBAAqB,GAAG,CAAC,EAC7B,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GACd,EAAU,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,sBAAsB,CAC3C,IAA2D;IAE3D,MAAM,EACJ,eAAe,EACf,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GAChB,GAAG,IAAI,CAAC;IAET,MAAM,SAAS,GAAG,yBAAyB,CAAC;QAC1C,cAAc;QACd,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;IAEvE,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAChC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,mBAAmB,CAC3D,EAAE,EAAE,CAAC,EAAE,CAAC;IAET,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;QAC3D,SAAS;QACT,SAAS;QACT,eAAe;QACf,kBAAkB;QAClB,8DAA8D;QAC9D,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,iBAAiB,CAC5B,eAAe,EACf,WAAW,EACX,kBAAkB,CACnB;QACD,iBAAiB,EAAE,YAAY;QAC/B,gBAAgB,EAAE,OAAO,CAAC,eAAe,CAAC;QAC1C,sBAAsB,EAAE,eAAe;YACrC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACxB,wBAAwB,EAAE,CAAC,WAAW;KACvC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAEnE,2DAA2D;IAC3D,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;QAClD,SAAS;QACT,OAAO;QACP,SAAS;KACV,CAAC,CAAC,MAAM,CACP,CAAC,QAAQ,EAAgE,EAAE,CACzE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAC5D,CAAC;IAEF,sEAAsE;IACtE,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,IAAI,CAClD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACb,MAAM,EAAE,IAAI;QACZ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,cAAc,GAAG,sBAAsB,EAAE,MAAM,CAAC;IACtD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CACrD,CAAC;QAEF,kEAAkE;QAClE,MAAM;YACJ,IAAI,EAAE,UAAU,CAAC,cAAc;YAC/B,OAAO,EAAE;gBACP,UAAU,EAAE,cAAc,CAAC,EAAE;gBAC7B,aAAa,EAAE,sBAAsB,CAAC,aAAa;gBACnD,aAAa,EAAE,eAAe;gBAC9B,QAAQ;gBACR,YAAY,EAAE,cAAc;aAC7B;SACF,CAAC;QACF,mFAAmF;QACnF,KAAK,MAAM,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;YACjD,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;YAE5C,MAAM;gBACJ,IAAI,EAAE,UAAU,CAAC,cAAc;gBAC/B,OAAO,EAAE;oBACP,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;oBACpD,aAAa;oBACb,aAAa,EAAE,eAAe;iBAC/B;aACF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,0DAA0D;QAC1D,6DAA6D;QAC7D,uDAAuD;QACvD,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,gBAAgB,EAAE,CAAC;YACzD,MAAM;gBACJ,IAAI,EAAE,UAAU,CAAC,cAAc;gBAC/B,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAC,EAAE;oBACrB,aAAa;oBACb,aAAa,EAAE,eAAe;oBAC9B,YAAY,EAAE,MAAM;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,UAAU,CAAC,YAAY;QAC7B,OAAO,EAAE;YACP,SAAS,EAAE,cAAc;SAC1B;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { BatchSellTradesResponse, TxData } from '@metamask/bridge-controller';\nimport {\n TransactionMeta,\n TransactionType,\n} from '@metamask/transaction-controller';\n\nimport { QuoteAndTxMetadata } from '../types';\nimport {\n findAllTransactionsInBatch,\n getAddTransactionBatchParams,\n hasNestedSwapTransactions,\n is7702Tx,\n isTradeTx,\n shouldDisable7702,\n toQuoteAndTxMetadataBatch,\n} from '../utils/transaction';\nimport { SubmitStep } from './types';\nimport type { SubmitStrategyParams, SubmitStepResult } from './types';\n\nconst getHistoryKeyForQuote = ({\n quoteResponse: { quoteId, quote },\n}: QuoteAndTxMetadata): string => quoteId ?? quote.requestId;\n\n/**\n * Submits batch-sell transactions to the TransactionController\n *\n * @param args - The parameters for the transaction\n * @yields The approvalMeta and tradeMeta for the first batch sell transaction\n */\nexport async function* submitBatchSellHandler(\n args: SubmitStrategyParams<TxData, BatchSellTradesResponse>,\n): AsyncGenerator<SubmitStepResult, void, void> {\n const {\n requireApproval,\n quoteResponses,\n messenger,\n addTransactionBatchFn,\n isDelegatedAccount,\n batchSellTrades,\n } = args;\n\n const tradeData = toQuoteAndTxMetadataBatch({\n quoteResponses,\n batchSellTrades,\n });\n\n const { gasIncluded7702, gasIncluded, gasSponsored } = batchSellTrades;\n\n const gasFeeToken = tradeData.find(\n ({ type }) => type === TransactionType.tokenMethodTransfer,\n )?.tx.to;\n\n const transactionParams = await getAddTransactionBatchParams({\n messenger,\n tradeData,\n requireApproval,\n isDelegatedAccount,\n // Tx success/failure is independent of other txs in the batch\n atomic: false,\n disable7702: shouldDisable7702(\n gasIncluded7702,\n gasIncluded,\n isDelegatedAccount,\n ),\n isGasFeeSponsored: gasSponsored,\n isGasFeeIncluded: Boolean(gasIncluded7702),\n skipInitialGasEstimate: gasIncluded7702\n ? isDelegatedAccount\n : Boolean(gasFeeToken),\n excludeNativeTokenForFee: !gasFeeToken,\n });\n\n // Submit the batch to the TransactionController\n const { batchId } = await addTransactionBatchFn(transactionParams);\n\n // Find all batch transaction metas and add them to history\n const allTradesInBatch = findAllTransactionsInBatch({\n messenger,\n batchId,\n tradeData,\n }).filter(\n (metadata): metadata is QuoteAndTxMetadata & { txMeta: TransactionMeta } =>\n isTradeTx(metadata.type) && metadata.txMeta !== undefined,\n );\n\n // This is either the delegation tx or the first STX swap in the batch\n const firstTradeWithMetadata = allTradesInBatch.find(\n ({ txMeta }) =>\n txMeta?.type &&\n (isTradeTx(txMeta.type) || hasNestedSwapTransactions(txMeta)),\n );\n const firstTradeMeta = firstTradeWithMetadata?.txMeta;\n if (!firstTradeMeta) {\n throw new Error(\n 'Failed to add BatchSell trade to history: txMeta not found',\n );\n }\n\n // Nested/7702 batch\n if (is7702Tx(firstTradeMeta) || hasNestedSwapTransactions(firstTradeMeta)) {\n const quoteIds = Array.from(\n new Set(allTradesInBatch.map(getHistoryKeyForQuote)),\n );\n\n // Create 1 history item for the parent tx, keyed by the txMeta.id\n yield {\n type: SubmitStep.AddHistoryItem,\n payload: {\n historyKey: firstTradeMeta.id,\n quoteResponse: firstTradeWithMetadata.quoteResponse,\n batchSellData: batchSellTrades,\n quoteIds,\n bridgeTxMeta: firstTradeMeta,\n },\n };\n // Then create a new history item for each nested trade, keyed by quoteId/requestId\n for (const tradeWithMetadata of allTradesInBatch) {\n const { quoteResponse } = tradeWithMetadata;\n\n yield {\n type: SubmitStep.AddHistoryItem,\n payload: {\n historyKey: getHistoryKeyForQuote(tradeWithMetadata),\n quoteResponse,\n batchSellData: batchSellTrades,\n },\n };\n }\n } else {\n // Each trade has its own txMeta if not submitted via 7702\n // Create a new history item for each one, keyed by txMeta.id\n // Note that the approvalTxId is not tracked in history\n for (const { txMeta, quoteResponse } of allTradesInBatch) {\n yield {\n type: SubmitStep.AddHistoryItem,\n payload: {\n historyKey: txMeta.id,\n quoteResponse,\n batchSellData: batchSellTrades,\n bridgeTxMeta: txMeta,\n },\n };\n }\n }\n\n yield {\n type: SubmitStep.SetTradeMeta,\n payload: {\n tradeMeta: firstTradeMeta,\n },\n };\n}\n"]}
1
+ {"version":3,"file":"batch-sell-strategy.mjs","sourceRoot":"","sources":["../../src/strategy/batch-sell-strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EAChB,yCAAyC;AAG1C,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,yBAAyB,EAC1B,iCAA6B;AAC9B,OAAO,EAAE,UAAU,EAAE,oBAAgB;AAGrC,MAAM,qBAAqB,GAAG,CAAC,EAC7B,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GACd,EAAU,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,sBAAsB,CAC3C,IAA2D;IAE3D,MAAM,EACJ,eAAe,EACf,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,OAAO,EAAE,YAAY,GACtB,GAAG,IAAI,CAAC;IAET,MAAM,SAAS,GAAG,yBAAyB,CAAC;QAC1C,cAAc;QACd,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;IAEvE,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAChC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,mBAAmB,CAC3D,EAAE,EAAE,CAAC,EAAE,CAAC;IAET,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;QAC3D,SAAS;QACT,SAAS;QACT,eAAe;QACf,kBAAkB;QAClB,8DAA8D;QAC9D,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,iBAAiB,CAC5B,eAAe,EACf,WAAW,EACX,kBAAkB,CACnB;QACD,iBAAiB,EAAE,YAAY;QAC/B,gBAAgB,EAAE,OAAO,CAAC,eAAe,CAAC;QAC1C,OAAO,EAAE,YAAY;QACrB,sBAAsB,EAAE,eAAe;YACrC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACxB,wBAAwB,EAAE,CAAC,WAAW;KACvC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAEnE,2DAA2D;IAC3D,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;QAClD,SAAS;QACT,OAAO;QACP,SAAS;KACV,CAAC,CAAC,MAAM,CACP,CAAC,QAAQ,EAAgE,EAAE,CACzE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAC5D,CAAC;IAEF,sEAAsE;IACtE,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,IAAI,CAClD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACb,MAAM,EAAE,IAAI;QACZ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,cAAc,GAAG,sBAAsB,EAAE,MAAM,CAAC;IACtD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,UAAU,CAAC,YAAY;QAC7B,OAAO,EAAE;YACP,SAAS,EAAE,cAAc;SAC1B;KACF,CAAC;IAEF,oBAAoB;IACpB,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CACrD,CAAC;QAEF,kEAAkE;QAClE,MAAM;YACJ,IAAI,EAAE,UAAU,CAAC,cAAc;YAC/B,OAAO,EAAE;gBACP,UAAU,EAAE,cAAc,CAAC,EAAE;gBAC7B,aAAa,EAAE,sBAAsB,CAAC,aAAa;gBACnD,aAAa,EAAE,eAAe;gBAC9B,QAAQ;gBACR,YAAY,EAAE,cAAc;aAC7B;SACF,CAAC;QACF,mFAAmF;QACnF,KAAK,MAAM,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;YACjD,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;YAE5C,MAAM;gBACJ,IAAI,EAAE,UAAU,CAAC,cAAc;gBAC/B,OAAO,EAAE;oBACP,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;oBACpD,aAAa;oBACb,aAAa,EAAE,eAAe;iBAC/B;aACF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,0DAA0D;QAC1D,6DAA6D;QAC7D,uDAAuD;QACvD,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,gBAAgB,EAAE,CAAC;YACzD,MAAM;gBACJ,IAAI,EAAE,UAAU,CAAC,cAAc;gBAC/B,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAC,EAAE;oBACrB,aAAa;oBACb,aAAa,EAAE,eAAe;oBAC9B,YAAY,EAAE,MAAM;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { BatchSellTradesResponse, TxData } from '@metamask/bridge-controller';\nimport {\n TransactionMeta,\n TransactionType,\n} from '@metamask/transaction-controller';\n\nimport { QuoteAndTxMetadata } from '../types';\nimport {\n findAllTransactionsInBatch,\n getAddTransactionBatchParams,\n hasNestedSwapTransactions,\n is7702Tx,\n isTradeTx,\n shouldDisable7702,\n toQuoteAndTxMetadataBatch,\n} from '../utils/transaction';\nimport { SubmitStep } from './types';\nimport type { SubmitStrategyParams, SubmitStepResult } from './types';\n\nconst getHistoryKeyForQuote = ({\n quoteResponse: { quoteId, quote },\n}: QuoteAndTxMetadata): string => quoteId ?? quote.requestId;\n\n/**\n * Submits batch-sell transactions to the TransactionController\n *\n * @param args - The parameters for the transaction\n * @yields The approvalMeta and tradeMeta for the first batch sell transaction\n */\nexport async function* submitBatchSellHandler(\n args: SubmitStrategyParams<TxData, BatchSellTradesResponse>,\n): AsyncGenerator<SubmitStepResult, void, void> {\n const {\n requireApproval,\n quoteResponses,\n messenger,\n addTransactionBatchFn,\n isDelegatedAccount,\n batchSellTrades,\n batchId: batchIdParam,\n } = args;\n\n const tradeData = toQuoteAndTxMetadataBatch({\n quoteResponses,\n batchSellTrades,\n });\n\n const { gasIncluded7702, gasIncluded, gasSponsored } = batchSellTrades;\n\n const gasFeeToken = tradeData.find(\n ({ type }) => type === TransactionType.tokenMethodTransfer,\n )?.tx.to;\n\n const transactionParams = await getAddTransactionBatchParams({\n messenger,\n tradeData,\n requireApproval,\n isDelegatedAccount,\n // Tx success/failure is independent of other txs in the batch\n atomic: false,\n disable7702: shouldDisable7702(\n gasIncluded7702,\n gasIncluded,\n isDelegatedAccount,\n ),\n isGasFeeSponsored: gasSponsored,\n isGasFeeIncluded: Boolean(gasIncluded7702),\n batchId: batchIdParam,\n skipInitialGasEstimate: gasIncluded7702\n ? isDelegatedAccount\n : Boolean(gasFeeToken),\n excludeNativeTokenForFee: !gasFeeToken,\n });\n\n // Submit the batch to the TransactionController\n const { batchId } = await addTransactionBatchFn(transactionParams);\n\n // Find all batch transaction metas and add them to history\n const allTradesInBatch = findAllTransactionsInBatch({\n messenger,\n batchId,\n tradeData,\n }).filter(\n (metadata): metadata is QuoteAndTxMetadata & { txMeta: TransactionMeta } =>\n isTradeTx(metadata.type) && metadata.txMeta !== undefined,\n );\n\n // This is either the delegation tx or the first STX swap in the batch\n const firstTradeWithMetadata = allTradesInBatch.find(\n ({ txMeta }) =>\n txMeta?.type &&\n (isTradeTx(txMeta.type) || hasNestedSwapTransactions(txMeta)),\n );\n const firstTradeMeta = firstTradeWithMetadata?.txMeta;\n if (!firstTradeMeta) {\n throw new Error(\n 'Failed to add BatchSell trade to history: txMeta not found',\n );\n }\n\n yield {\n type: SubmitStep.SetTradeMeta,\n payload: {\n tradeMeta: firstTradeMeta,\n },\n };\n\n // Nested/7702 batch\n if (is7702Tx(firstTradeMeta) || hasNestedSwapTransactions(firstTradeMeta)) {\n const quoteIds = Array.from(\n new Set(allTradesInBatch.map(getHistoryKeyForQuote)),\n );\n\n // Create 1 history item for the parent tx, keyed by the txMeta.id\n yield {\n type: SubmitStep.AddHistoryItem,\n payload: {\n historyKey: firstTradeMeta.id,\n quoteResponse: firstTradeWithMetadata.quoteResponse,\n batchSellData: batchSellTrades,\n quoteIds,\n bridgeTxMeta: firstTradeMeta,\n },\n };\n // Then create a new history item for each nested trade, keyed by quoteId/requestId\n for (const tradeWithMetadata of allTradesInBatch) {\n const { quoteResponse } = tradeWithMetadata;\n\n yield {\n type: SubmitStep.AddHistoryItem,\n payload: {\n historyKey: getHistoryKeyForQuote(tradeWithMetadata),\n quoteResponse,\n batchSellData: batchSellTrades,\n },\n };\n }\n } else {\n // Each trade has its own txMeta if not submitted via 7702\n // Create a new history item for each one, keyed by txMeta.id\n // Note that the approvalTxId is not tracked in history\n for (const { txMeta, quoteResponse } of allTradesInBatch) {\n yield {\n type: SubmitStep.AddHistoryItem,\n payload: {\n historyKey: txMeta.id,\n quoteResponse,\n batchSellData: batchSellTrades,\n bridgeTxMeta: txMeta,\n },\n };\n }\n }\n}\n"]}
@@ -3,11 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SubmitStep = void 0;
4
4
  var SubmitStep;
5
5
  (function (SubmitStep) {
6
+ /**
7
+ * Adds quote and submission data to BridgeStatusController's `txHistory`
8
+ */
6
9
  SubmitStep["AddHistoryItem"] = "addHistoryItem";
10
+ /**
11
+ * Rekeys the history item keyed by the old history key to the new history key,
12
+ * and merges in the tradeMeta's id and hash
13
+ */
7
14
  SubmitStep["RekeyHistoryItem"] = "rekeyHistoryItem";
15
+ /**
16
+ * Triggers polling for the transaction's status
17
+ */
8
18
  SubmitStep["StartPolling"] = "startPolling";
19
+ /**
20
+ * Publishes the Unified SwapBridge Completed metrics event
21
+ */
9
22
  SubmitStep["PublishCompletedEvent"] = "publishCompletedEvent";
23
+ /**
24
+ * Sets the tradeMeta returned to the client after submission
25
+ */
10
26
  SubmitStep["SetTradeMeta"] = "setTradeMeta";
27
+ /**
28
+ * Updates the transaction type of batch transactions to swap/bridge/swapApproval/bridgeApproval
29
+ * for display purposes.
30
+ */
11
31
  SubmitStep["UpdateBatchTransactions"] = "updateBatchTransactions";
12
32
  })(SubmitStep || (exports.SubmitStep = SubmitStep = {}));
13
33
  //# sourceMappingURL=types.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":";;;AAsBA,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,+CAAiC,CAAA;IACjC,mDAAqC,CAAA;IACrC,2CAA6B,CAAA;IAC7B,6DAA+C,CAAA;IAC/C,2CAA6B,CAAA;IAC7B,iEAAmD,CAAA;AACrD,CAAC,EAPW,UAAU,0BAAV,UAAU,QAOrB","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n BatchSellTradesResponse,\n BridgeClientId,\n QuoteMetadata,\n QuoteResponse,\n Trade,\n TxData,\n} from '@metamask/bridge-controller';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type {\n TransactionController,\n TransactionMeta,\n} from '@metamask/transaction-controller';\n\nimport type {\n BridgeStatusControllerMessenger,\n FetchFunction,\n QuoteAndTxMetadata,\n StartPollingForBridgeTxStatusArgs,\n} from '../types';\n\nexport enum SubmitStep {\n AddHistoryItem = 'addHistoryItem',\n RekeyHistoryItem = 'rekeyHistoryItem',\n StartPolling = 'startPolling',\n PublishCompletedEvent = 'publishCompletedEvent',\n SetTradeMeta = 'setTradeMeta',\n UpdateBatchTransactions = 'updateBatchTransactions',\n}\n\n/**\n * Any possible result returned by steps in a submission strategy. These can be returned in any order.\n */\nexport type SubmitStepResult =\n | {\n type: SubmitStep.AddHistoryItem;\n payload: Pick<\n StartPollingForBridgeTxStatusArgs,\n 'approvalTxId' | 'bridgeTxMeta' | 'originalTransactionId' | 'actionId'\n > & {\n historyKey: string;\n quoteResponse: QuoteResponse & QuoteMetadata;\n batchSellData?: BatchSellTradesResponse;\n quoteIds?: string[];\n };\n }\n | {\n type: SubmitStep.RekeyHistoryItem;\n payload: {\n /** Usually the actionId of the preceeding `approval` transaction */\n oldHistoryKey: string;\n /** Usually the txMeta.id of the `trade` transaction */\n newHistoryKey: string;\n /** The {@link TransactionMeta} for the `trade` transaction after it has been submitted successfully */\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.StartPolling;\n payload: {\n /** The `txHistory` key of the transaction to start polling for */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.PublishCompletedEvent;\n payload: {\n /** The `txHistory` key of the transaction that has been submitted successfully */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.SetTradeMeta;\n /** The {@link TransactionMeta} for the transaction that has been submitted successfully */\n payload: {\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.UpdateBatchTransactions;\n payload: {\n quoteAndTxMetas: QuoteAndTxMetadata[];\n };\n };\n\n/**\n * The parameters for the submission flow\n */\nexport type SubmitStrategyParams<\n TradeType extends Trade = TxData,\n BatchSellTradesResponseType extends\n | BatchSellTradesResponse\n | undefined\n | null = BatchSellTradesResponse | undefined | null,\n> = {\n batchSellTrades: BatchSellTradesResponseType;\n addTransactionBatchFn: TransactionController['addTransactionBatch'];\n isBridgeTx: boolean;\n isDelegatedAccount: boolean;\n isStxEnabled: boolean;\n messenger: BridgeStatusControllerMessenger;\n quoteResponses: (QuoteResponse<TradeType, TradeType> & QuoteMetadata)[];\n requireApproval: boolean;\n selectedAccount: AccountsControllerState['internalAccounts']['accounts'][string];\n traceFn: TraceCallback;\n // Used for intent transactions\n fetchFn: FetchFunction;\n clientId: BridgeClientId;\n bridgeApiBaseUrl: string;\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":";;;AAuBA,IAAY,UA2BX;AA3BD,WAAY,UAAU;IACpB;;OAEG;IACH,+CAAiC,CAAA;IACjC;;;OAGG;IACH,mDAAqC,CAAA;IACrC;;OAEG;IACH,2CAA6B,CAAA;IAC7B;;OAEG;IACH,6DAA+C,CAAA;IAC/C;;OAEG;IACH,2CAA6B,CAAA;IAC7B;;;OAGG;IACH,iEAAmD,CAAA;AACrD,CAAC,EA3BW,UAAU,0BAAV,UAAU,QA2BrB","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n BatchSellTradesResponse,\n BridgeClientId,\n QuoteMetadata,\n QuoteResponse,\n Trade,\n TxData,\n} from '@metamask/bridge-controller';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type {\n TransactionController,\n TransactionMeta,\n} from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n BridgeStatusControllerMessenger,\n FetchFunction,\n QuoteAndTxMetadata,\n StartPollingForBridgeTxStatusArgs,\n} from '../types';\n\nexport enum SubmitStep {\n /**\n * Adds quote and submission data to BridgeStatusController's `txHistory`\n */\n AddHistoryItem = 'addHistoryItem',\n /**\n * Rekeys the history item keyed by the old history key to the new history key,\n * and merges in the tradeMeta's id and hash\n */\n RekeyHistoryItem = 'rekeyHistoryItem',\n /**\n * Triggers polling for the transaction's status\n */\n StartPolling = 'startPolling',\n /**\n * Publishes the Unified SwapBridge Completed metrics event\n */\n PublishCompletedEvent = 'publishCompletedEvent',\n /**\n * Sets the tradeMeta returned to the client after submission\n */\n SetTradeMeta = 'setTradeMeta',\n /**\n * Updates the transaction type of batch transactions to swap/bridge/swapApproval/bridgeApproval\n * for display purposes.\n */\n UpdateBatchTransactions = 'updateBatchTransactions',\n}\n\n/**\n * Any possible result returned by steps in a submission strategy. These can be returned in any order.\n */\nexport type SubmitStepResult =\n | {\n type: SubmitStep.AddHistoryItem;\n payload: Pick<\n StartPollingForBridgeTxStatusArgs,\n 'approvalTxId' | 'bridgeTxMeta' | 'originalTransactionId' | 'actionId'\n > & {\n historyKey: string;\n quoteResponse: QuoteResponse & QuoteMetadata;\n batchSellData?: BatchSellTradesResponse;\n quoteIds?: string[];\n };\n }\n | {\n type: SubmitStep.RekeyHistoryItem;\n payload: {\n /** Usually the actionId of the preceeding `approval` transaction */\n oldHistoryKey: string;\n /** Usually the txMeta.id of the `trade` transaction */\n newHistoryKey: string;\n /** The {@link TransactionMeta} for the `trade` transaction after it has been submitted successfully */\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.StartPolling;\n payload: {\n /** The `txHistory` key of the transaction to start polling for */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.PublishCompletedEvent;\n payload: {\n /** The `txHistory` key of the transaction that has been submitted successfully */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.SetTradeMeta;\n /** The {@link TransactionMeta} for the transaction that has been submitted successfully */\n payload: {\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.UpdateBatchTransactions;\n payload: {\n quoteAndTxMetas: QuoteAndTxMetadata[];\n };\n };\n\n/**\n * The parameters for the submission flow\n */\nexport type SubmitStrategyParams<\n TradeType extends Trade = TxData,\n BatchSellTradesResponseType extends\n | BatchSellTradesResponse\n | undefined\n | null = BatchSellTradesResponse | undefined | null,\n> = {\n /**\n * The response from obtainGaslessBatch API containing submittable transactions and their fees\n */\n batchSellTrades: BatchSellTradesResponseType;\n /**\n * The function to add a transaction batch to the {@link TransactionControllers}\n */\n addTransactionBatchFn: TransactionController['addTransactionBatch'];\n isBridgeTx: boolean;\n isDelegatedAccount: boolean;\n /**\n * Whether the STX is enabled in the wallet. Does not necessarily mean that\n * STX will be used to submit the transaction.\n */\n isStxEnabled: boolean;\n messenger: BridgeStatusControllerMessenger;\n quoteResponses: (QuoteResponse<TradeType, TradeType> & QuoteMetadata)[];\n /**\n * Set to true so hardware wallets get prompted for approval on mobile\n */\n requireApproval: boolean;\n selectedAccount: AccountsControllerState['internalAccounts']['accounts'][string];\n traceFn: TraceCallback;\n // Used for intent transactions\n fetchFn: FetchFunction;\n clientId: BridgeClientId;\n bridgeApiBaseUrl: string;\n /**\n * The batch ID of the transaction batch passed to the addTransactionBatchFn\n * This is only used for batch-sell transactions.\n */\n batchId?: Hex;\n};\n"]}
@@ -2,13 +2,34 @@ import type { AccountsControllerState } from "@metamask/accounts-controller";
2
2
  import type { BatchSellTradesResponse, BridgeClientId, QuoteMetadata, QuoteResponse, Trade, TxData } from "@metamask/bridge-controller";
3
3
  import type { TraceCallback } from "@metamask/controller-utils";
4
4
  import type { TransactionController, TransactionMeta } from "@metamask/transaction-controller";
5
+ import type { Hex } from "@metamask/utils";
5
6
  import type { BridgeStatusControllerMessenger, FetchFunction, QuoteAndTxMetadata, StartPollingForBridgeTxStatusArgs } from "../types.cjs";
6
7
  export declare enum SubmitStep {
8
+ /**
9
+ * Adds quote and submission data to BridgeStatusController's `txHistory`
10
+ */
7
11
  AddHistoryItem = "addHistoryItem",
12
+ /**
13
+ * Rekeys the history item keyed by the old history key to the new history key,
14
+ * and merges in the tradeMeta's id and hash
15
+ */
8
16
  RekeyHistoryItem = "rekeyHistoryItem",
17
+ /**
18
+ * Triggers polling for the transaction's status
19
+ */
9
20
  StartPolling = "startPolling",
21
+ /**
22
+ * Publishes the Unified SwapBridge Completed metrics event
23
+ */
10
24
  PublishCompletedEvent = "publishCompletedEvent",
25
+ /**
26
+ * Sets the tradeMeta returned to the client after submission
27
+ */
11
28
  SetTradeMeta = "setTradeMeta",
29
+ /**
30
+ * Updates the transaction type of batch transactions to swap/bridge/swapApproval/bridgeApproval
31
+ * for display purposes.
32
+ */
12
33
  UpdateBatchTransactions = "updateBatchTransactions"
13
34
  }
14
35
  /**
@@ -60,18 +81,36 @@ export type SubmitStepResult = {
60
81
  * The parameters for the submission flow
61
82
  */
62
83
  export type SubmitStrategyParams<TradeType extends Trade = TxData, BatchSellTradesResponseType extends BatchSellTradesResponse | undefined | null = BatchSellTradesResponse | undefined | null> = {
84
+ /**
85
+ * The response from obtainGaslessBatch API containing submittable transactions and their fees
86
+ */
63
87
  batchSellTrades: BatchSellTradesResponseType;
88
+ /**
89
+ * The function to add a transaction batch to the {@link TransactionControllers}
90
+ */
64
91
  addTransactionBatchFn: TransactionController['addTransactionBatch'];
65
92
  isBridgeTx: boolean;
66
93
  isDelegatedAccount: boolean;
94
+ /**
95
+ * Whether the STX is enabled in the wallet. Does not necessarily mean that
96
+ * STX will be used to submit the transaction.
97
+ */
67
98
  isStxEnabled: boolean;
68
99
  messenger: BridgeStatusControllerMessenger;
69
100
  quoteResponses: (QuoteResponse<TradeType, TradeType> & QuoteMetadata)[];
101
+ /**
102
+ * Set to true so hardware wallets get prompted for approval on mobile
103
+ */
70
104
  requireApproval: boolean;
71
105
  selectedAccount: AccountsControllerState['internalAccounts']['accounts'][string];
72
106
  traceFn: TraceCallback;
73
107
  fetchFn: FetchFunction;
74
108
  clientId: BridgeClientId;
75
109
  bridgeApiBaseUrl: string;
110
+ /**
111
+ * The batch ID of the transaction batch passed to the addTransactionBatchFn
112
+ * This is only used for batch-sell transactions.
113
+ */
114
+ batchId?: Hex;
76
115
  };
77
116
  //# sourceMappingURL=types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,EACL,MAAM,EACP,oCAAoC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EAChB,yCAAyC;AAE1C,OAAO,KAAK,EACV,+BAA+B,EAC/B,aAAa,EACb,kBAAkB,EAClB,iCAAiC,EAClC,qBAAiB;AAElB,oBAAY,UAAU;IACpB,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAC7B,uBAAuB,4BAA4B;CACpD;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC;IAChC,OAAO,EAAE,IAAI,CACX,iCAAiC,EACjC,cAAc,GAAG,cAAc,GAAG,uBAAuB,GAAG,UAAU,CACvE,GAAG;QACF,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,aAAa,GAAG,aAAa,CAAC;QAC7C,aAAa,CAAC,EAAE,uBAAuB,CAAC;QACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAClC,OAAO,EAAE;QACP,oEAAoE;QACpE,aAAa,EAAE,MAAM,CAAC;QACtB,uDAAuD;QACvD,aAAa,EAAE,MAAM,CAAC;QACtB,uGAAuG;QACvG,SAAS,EAAE,eAAe,CAAC;KAC5B,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;IAC9B,OAAO,EAAE;QACP,kEAAkE;QAClE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC;IACvC,OAAO,EAAE;QACP,kFAAkF;QAClF,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;IAC9B,2FAA2F;IAC3F,OAAO,EAAE;QACP,SAAS,EAAE,eAAe,CAAC;KAC5B,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,uBAAuB,CAAC;IACzC,OAAO,EAAE;QACP,eAAe,EAAE,kBAAkB,EAAE,CAAC;KACvC,CAAC;CACH,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAC9B,SAAS,SAAS,KAAK,GAAG,MAAM,EAChC,2BAA2B,SACvB,uBAAuB,GACvB,SAAS,GACT,IAAI,GAAG,uBAAuB,GAAG,SAAS,GAAG,IAAI,IACnD;IACF,eAAe,EAAE,2BAA2B,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,+BAA+B,CAAC;IAC3C,cAAc,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IACxE,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IACjF,OAAO,EAAE,aAAa,CAAC;IAEvB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,34 @@ import type { AccountsControllerState } from "@metamask/accounts-controller";
2
2
  import type { BatchSellTradesResponse, BridgeClientId, QuoteMetadata, QuoteResponse, Trade, TxData } from "@metamask/bridge-controller";
3
3
  import type { TraceCallback } from "@metamask/controller-utils";
4
4
  import type { TransactionController, TransactionMeta } from "@metamask/transaction-controller";
5
+ import type { Hex } from "@metamask/utils";
5
6
  import type { BridgeStatusControllerMessenger, FetchFunction, QuoteAndTxMetadata, StartPollingForBridgeTxStatusArgs } from "../types.mjs";
6
7
  export declare enum SubmitStep {
8
+ /**
9
+ * Adds quote and submission data to BridgeStatusController's `txHistory`
10
+ */
7
11
  AddHistoryItem = "addHistoryItem",
12
+ /**
13
+ * Rekeys the history item keyed by the old history key to the new history key,
14
+ * and merges in the tradeMeta's id and hash
15
+ */
8
16
  RekeyHistoryItem = "rekeyHistoryItem",
17
+ /**
18
+ * Triggers polling for the transaction's status
19
+ */
9
20
  StartPolling = "startPolling",
21
+ /**
22
+ * Publishes the Unified SwapBridge Completed metrics event
23
+ */
10
24
  PublishCompletedEvent = "publishCompletedEvent",
25
+ /**
26
+ * Sets the tradeMeta returned to the client after submission
27
+ */
11
28
  SetTradeMeta = "setTradeMeta",
29
+ /**
30
+ * Updates the transaction type of batch transactions to swap/bridge/swapApproval/bridgeApproval
31
+ * for display purposes.
32
+ */
12
33
  UpdateBatchTransactions = "updateBatchTransactions"
13
34
  }
14
35
  /**
@@ -60,18 +81,36 @@ export type SubmitStepResult = {
60
81
  * The parameters for the submission flow
61
82
  */
62
83
  export type SubmitStrategyParams<TradeType extends Trade = TxData, BatchSellTradesResponseType extends BatchSellTradesResponse | undefined | null = BatchSellTradesResponse | undefined | null> = {
84
+ /**
85
+ * The response from obtainGaslessBatch API containing submittable transactions and their fees
86
+ */
63
87
  batchSellTrades: BatchSellTradesResponseType;
88
+ /**
89
+ * The function to add a transaction batch to the {@link TransactionControllers}
90
+ */
64
91
  addTransactionBatchFn: TransactionController['addTransactionBatch'];
65
92
  isBridgeTx: boolean;
66
93
  isDelegatedAccount: boolean;
94
+ /**
95
+ * Whether the STX is enabled in the wallet. Does not necessarily mean that
96
+ * STX will be used to submit the transaction.
97
+ */
67
98
  isStxEnabled: boolean;
68
99
  messenger: BridgeStatusControllerMessenger;
69
100
  quoteResponses: (QuoteResponse<TradeType, TradeType> & QuoteMetadata)[];
101
+ /**
102
+ * Set to true so hardware wallets get prompted for approval on mobile
103
+ */
70
104
  requireApproval: boolean;
71
105
  selectedAccount: AccountsControllerState['internalAccounts']['accounts'][string];
72
106
  traceFn: TraceCallback;
73
107
  fetchFn: FetchFunction;
74
108
  clientId: BridgeClientId;
75
109
  bridgeApiBaseUrl: string;
110
+ /**
111
+ * The batch ID of the transaction batch passed to the addTransactionBatchFn
112
+ * This is only used for batch-sell transactions.
113
+ */
114
+ batchId?: Hex;
76
115
  };
77
116
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sCAAsC;AAC7E,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,EACL,MAAM,EACP,oCAAoC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,mCAAmC;AAChE,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EAChB,yCAAyC;AAE1C,OAAO,KAAK,EACV,+BAA+B,EAC/B,aAAa,EACb,kBAAkB,EAClB,iCAAiC,EAClC,qBAAiB;AAElB,oBAAY,UAAU;IACpB,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAC7B,uBAAuB,4BAA4B;CACpD;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC;IAChC,OAAO,EAAE,IAAI,CACX,iCAAiC,EACjC,cAAc,GAAG,cAAc,GAAG,uBAAuB,GAAG,UAAU,CACvE,GAAG;QACF,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,aAAa,GAAG,aAAa,CAAC;QAC7C,aAAa,CAAC,EAAE,uBAAuB,CAAC;QACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAClC,OAAO,EAAE;QACP,oEAAoE;QACpE,aAAa,EAAE,MAAM,CAAC;QACtB,uDAAuD;QACvD,aAAa,EAAE,MAAM,CAAC;QACtB,uGAAuG;QACvG,SAAS,EAAE,eAAe,CAAC;KAC5B,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;IAC9B,OAAO,EAAE;QACP,kEAAkE;QAClE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC;IACvC,OAAO,EAAE;QACP,kFAAkF;QAClF,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;IAC9B,2FAA2F;IAC3F,OAAO,EAAE;QACP,SAAS,EAAE,eAAe,CAAC;KAC5B,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC,uBAAuB,CAAC;IACzC,OAAO,EAAE;QACP,eAAe,EAAE,kBAAkB,EAAE,CAAC;KACvC,CAAC;CACH,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAC9B,SAAS,SAAS,KAAK,GAAG,MAAM,EAChC,2BAA2B,SACvB,uBAAuB,GACvB,SAAS,GACT,IAAI,GAAG,uBAAuB,GAAG,SAAS,GAAG,IAAI,IACnD;IACF,eAAe,EAAE,2BAA2B,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,+BAA+B,CAAC;IAC3C,cAAc,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IACxE,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IACjF,OAAO,EAAE,aAAa,CAAC;IAEvB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,30 @@
1
1
  export var SubmitStep;
2
2
  (function (SubmitStep) {
3
+ /**
4
+ * Adds quote and submission data to BridgeStatusController's `txHistory`
5
+ */
3
6
  SubmitStep["AddHistoryItem"] = "addHistoryItem";
7
+ /**
8
+ * Rekeys the history item keyed by the old history key to the new history key,
9
+ * and merges in the tradeMeta's id and hash
10
+ */
4
11
  SubmitStep["RekeyHistoryItem"] = "rekeyHistoryItem";
12
+ /**
13
+ * Triggers polling for the transaction's status
14
+ */
5
15
  SubmitStep["StartPolling"] = "startPolling";
16
+ /**
17
+ * Publishes the Unified SwapBridge Completed metrics event
18
+ */
6
19
  SubmitStep["PublishCompletedEvent"] = "publishCompletedEvent";
20
+ /**
21
+ * Sets the tradeMeta returned to the client after submission
22
+ */
7
23
  SubmitStep["SetTradeMeta"] = "setTradeMeta";
24
+ /**
25
+ * Updates the transaction type of batch transactions to swap/bridge/swapApproval/bridgeApproval
26
+ * for display purposes.
27
+ */
8
28
  SubmitStep["UpdateBatchTransactions"] = "updateBatchTransactions";
9
29
  })(SubmitStep || (SubmitStep = {}));
10
30
  //# sourceMappingURL=types.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,+CAAiC,CAAA;IACjC,mDAAqC,CAAA;IACrC,2CAA6B,CAAA;IAC7B,6DAA+C,CAAA;IAC/C,2CAA6B,CAAA;IAC7B,iEAAmD,CAAA;AACrD,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n BatchSellTradesResponse,\n BridgeClientId,\n QuoteMetadata,\n QuoteResponse,\n Trade,\n TxData,\n} from '@metamask/bridge-controller';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type {\n TransactionController,\n TransactionMeta,\n} from '@metamask/transaction-controller';\n\nimport type {\n BridgeStatusControllerMessenger,\n FetchFunction,\n QuoteAndTxMetadata,\n StartPollingForBridgeTxStatusArgs,\n} from '../types';\n\nexport enum SubmitStep {\n AddHistoryItem = 'addHistoryItem',\n RekeyHistoryItem = 'rekeyHistoryItem',\n StartPolling = 'startPolling',\n PublishCompletedEvent = 'publishCompletedEvent',\n SetTradeMeta = 'setTradeMeta',\n UpdateBatchTransactions = 'updateBatchTransactions',\n}\n\n/**\n * Any possible result returned by steps in a submission strategy. These can be returned in any order.\n */\nexport type SubmitStepResult =\n | {\n type: SubmitStep.AddHistoryItem;\n payload: Pick<\n StartPollingForBridgeTxStatusArgs,\n 'approvalTxId' | 'bridgeTxMeta' | 'originalTransactionId' | 'actionId'\n > & {\n historyKey: string;\n quoteResponse: QuoteResponse & QuoteMetadata;\n batchSellData?: BatchSellTradesResponse;\n quoteIds?: string[];\n };\n }\n | {\n type: SubmitStep.RekeyHistoryItem;\n payload: {\n /** Usually the actionId of the preceeding `approval` transaction */\n oldHistoryKey: string;\n /** Usually the txMeta.id of the `trade` transaction */\n newHistoryKey: string;\n /** The {@link TransactionMeta} for the `trade` transaction after it has been submitted successfully */\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.StartPolling;\n payload: {\n /** The `txHistory` key of the transaction to start polling for */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.PublishCompletedEvent;\n payload: {\n /** The `txHistory` key of the transaction that has been submitted successfully */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.SetTradeMeta;\n /** The {@link TransactionMeta} for the transaction that has been submitted successfully */\n payload: {\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.UpdateBatchTransactions;\n payload: {\n quoteAndTxMetas: QuoteAndTxMetadata[];\n };\n };\n\n/**\n * The parameters for the submission flow\n */\nexport type SubmitStrategyParams<\n TradeType extends Trade = TxData,\n BatchSellTradesResponseType extends\n | BatchSellTradesResponse\n | undefined\n | null = BatchSellTradesResponse | undefined | null,\n> = {\n batchSellTrades: BatchSellTradesResponseType;\n addTransactionBatchFn: TransactionController['addTransactionBatch'];\n isBridgeTx: boolean;\n isDelegatedAccount: boolean;\n isStxEnabled: boolean;\n messenger: BridgeStatusControllerMessenger;\n quoteResponses: (QuoteResponse<TradeType, TradeType> & QuoteMetadata)[];\n requireApproval: boolean;\n selectedAccount: AccountsControllerState['internalAccounts']['accounts'][string];\n traceFn: TraceCallback;\n // Used for intent transactions\n fetchFn: FetchFunction;\n clientId: BridgeClientId;\n bridgeApiBaseUrl: string;\n};\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/strategy/types.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAN,IAAY,UA2BX;AA3BD,WAAY,UAAU;IACpB;;OAEG;IACH,+CAAiC,CAAA;IACjC;;;OAGG;IACH,mDAAqC,CAAA;IACrC;;OAEG;IACH,2CAA6B,CAAA;IAC7B;;OAEG;IACH,6DAA+C,CAAA;IAC/C;;OAEG;IACH,2CAA6B,CAAA;IAC7B;;;OAGG;IACH,iEAAmD,CAAA;AACrD,CAAC,EA3BW,UAAU,KAAV,UAAU,QA2BrB","sourcesContent":["import type { AccountsControllerState } from '@metamask/accounts-controller';\nimport type {\n BatchSellTradesResponse,\n BridgeClientId,\n QuoteMetadata,\n QuoteResponse,\n Trade,\n TxData,\n} from '@metamask/bridge-controller';\nimport type { TraceCallback } from '@metamask/controller-utils';\nimport type {\n TransactionController,\n TransactionMeta,\n} from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n BridgeStatusControllerMessenger,\n FetchFunction,\n QuoteAndTxMetadata,\n StartPollingForBridgeTxStatusArgs,\n} from '../types';\n\nexport enum SubmitStep {\n /**\n * Adds quote and submission data to BridgeStatusController's `txHistory`\n */\n AddHistoryItem = 'addHistoryItem',\n /**\n * Rekeys the history item keyed by the old history key to the new history key,\n * and merges in the tradeMeta's id and hash\n */\n RekeyHistoryItem = 'rekeyHistoryItem',\n /**\n * Triggers polling for the transaction's status\n */\n StartPolling = 'startPolling',\n /**\n * Publishes the Unified SwapBridge Completed metrics event\n */\n PublishCompletedEvent = 'publishCompletedEvent',\n /**\n * Sets the tradeMeta returned to the client after submission\n */\n SetTradeMeta = 'setTradeMeta',\n /**\n * Updates the transaction type of batch transactions to swap/bridge/swapApproval/bridgeApproval\n * for display purposes.\n */\n UpdateBatchTransactions = 'updateBatchTransactions',\n}\n\n/**\n * Any possible result returned by steps in a submission strategy. These can be returned in any order.\n */\nexport type SubmitStepResult =\n | {\n type: SubmitStep.AddHistoryItem;\n payload: Pick<\n StartPollingForBridgeTxStatusArgs,\n 'approvalTxId' | 'bridgeTxMeta' | 'originalTransactionId' | 'actionId'\n > & {\n historyKey: string;\n quoteResponse: QuoteResponse & QuoteMetadata;\n batchSellData?: BatchSellTradesResponse;\n quoteIds?: string[];\n };\n }\n | {\n type: SubmitStep.RekeyHistoryItem;\n payload: {\n /** Usually the actionId of the preceeding `approval` transaction */\n oldHistoryKey: string;\n /** Usually the txMeta.id of the `trade` transaction */\n newHistoryKey: string;\n /** The {@link TransactionMeta} for the `trade` transaction after it has been submitted successfully */\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.StartPolling;\n payload: {\n /** The `txHistory` key of the transaction to start polling for */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.PublishCompletedEvent;\n payload: {\n /** The `txHistory` key of the transaction that has been submitted successfully */\n historyKey: string;\n };\n }\n | {\n type: SubmitStep.SetTradeMeta;\n /** The {@link TransactionMeta} for the transaction that has been submitted successfully */\n payload: {\n tradeMeta: TransactionMeta;\n };\n }\n | {\n type: SubmitStep.UpdateBatchTransactions;\n payload: {\n quoteAndTxMetas: QuoteAndTxMetadata[];\n };\n };\n\n/**\n * The parameters for the submission flow\n */\nexport type SubmitStrategyParams<\n TradeType extends Trade = TxData,\n BatchSellTradesResponseType extends\n | BatchSellTradesResponse\n | undefined\n | null = BatchSellTradesResponse | undefined | null,\n> = {\n /**\n * The response from obtainGaslessBatch API containing submittable transactions and their fees\n */\n batchSellTrades: BatchSellTradesResponseType;\n /**\n * The function to add a transaction batch to the {@link TransactionControllers}\n */\n addTransactionBatchFn: TransactionController['addTransactionBatch'];\n isBridgeTx: boolean;\n isDelegatedAccount: boolean;\n /**\n * Whether the STX is enabled in the wallet. Does not necessarily mean that\n * STX will be used to submit the transaction.\n */\n isStxEnabled: boolean;\n messenger: BridgeStatusControllerMessenger;\n quoteResponses: (QuoteResponse<TradeType, TradeType> & QuoteMetadata)[];\n /**\n * Set to true so hardware wallets get prompted for approval on mobile\n */\n requireApproval: boolean;\n selectedAccount: AccountsControllerState['internalAccounts']['accounts'][string];\n traceFn: TraceCallback;\n // Used for intent transactions\n fetchFn: FetchFunction;\n clientId: BridgeClientId;\n bridgeApiBaseUrl: string;\n /**\n * The batch ID of the transaction batch passed to the addTransactionBatchFn\n * This is only used for batch-sell transactions.\n */\n batchId?: Hex;\n};\n"]}
@@ -2,11 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trackMetricsEvent = exports.getBatchSellTrades = exports.stopPollingForQuotes = void 0;
4
4
  const bridge_controller_1 = require("@metamask/bridge-controller");
5
- const stopPollingForQuotes = (messenger, featureId, metricsContext) => {
6
- messenger.call('BridgeController:stopPollingForQuotes', bridge_controller_1.AbortReason.TransactionSubmitted,
7
- // If trade is submitted before all quotes are loaded, the QuotesReceived event is published
8
- // If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published
9
- featureId ? undefined : metricsContext);
5
+ const stopPollingForQuotes = (messenger, metricsContext) => {
6
+ messenger.call('BridgeController:stopPollingForQuotes', bridge_controller_1.AbortReason.TransactionSubmitted, metricsContext);
10
7
  };
11
8
  exports.stopPollingForQuotes = stopPollingForQuotes;
12
9
  const getBatchSellTrades = (messenger) => {
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.cjs","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":";;;AAAA,mEAMqC;AAI9B,MAAM,oBAAoB,GAAG,CAClC,SAA0C,EAC1C,SAAqB,EACrB,cAA0F,EACpF,EAAE;IACR,SAAS,CAAC,IAAI,CACZ,uCAAuC,EACvC,+BAAW,CAAC,oBAAoB;IAChC,4FAA4F;IAC5F,qJAAqJ;IACrJ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CACvC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEK,MAAM,kBAAkB,GAAG,CAChC,SAA0C,EACV,EAAE;IAClC,OAAO,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,eAAe,CAAC;AACrE,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,UAAU,GAKX,EAAQ,EAAE;IACT,SAAS,CAAC,IAAI,CACZ,8CAA8C,EAC9C,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,iBAAiB,qBAc5B","sourcesContent":["import {\n AbortReason,\n FeatureId,\n UnifiedSwapBridgeEventName,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n} from '@metamask/bridge-controller';\n\nimport { BridgeStatusControllerMessenger } from '../types';\n\nexport const stopPollingForQuotes = (\n messenger: BridgeStatusControllerMessenger,\n featureId?: FeatureId,\n metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n): void => {\n messenger.call(\n 'BridgeController:stopPollingForQuotes',\n AbortReason.TransactionSubmitted,\n // If trade is submitted before all quotes are loaded, the QuotesReceived event is published\n // If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published\n featureId ? undefined : metricsContext,\n );\n};\n\nexport const getBatchSellTrades = (\n messenger: BridgeStatusControllerMessenger,\n): BatchSellTradesResponse | null => {\n return messenger.call('BridgeController:getState').batchSellTrades;\n};\n\nexport const trackMetricsEvent = ({\n messenger,\n eventName,\n properties,\n}: {\n messenger: BridgeStatusControllerMessenger;\n eventName: UnifiedSwapBridgeEventName;\n properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];\n}): void => {\n messenger.call(\n 'BridgeController:trackUnifiedSwapBridgeEvent',\n eventName,\n properties,\n );\n};\n"]}
1
+ {"version":3,"file":"bridge.cjs","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":";;;AAAA,mEAKqC;AAI9B,MAAM,oBAAoB,GAAG,CAClC,SAA0C,EAC1C,cAA0F,EACpF,EAAE;IACR,SAAS,CAAC,IAAI,CACZ,uCAAuC,EACvC,+BAAW,CAAC,oBAAoB,EAChC,cAAc,CACf,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B;AAEK,MAAM,kBAAkB,GAAG,CAChC,SAA0C,EACV,EAAE;IAClC,OAAO,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,eAAe,CAAC;AACrE,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,UAAU,GAKX,EAAQ,EAAE;IACT,SAAS,CAAC,IAAI,CACZ,8CAA8C,EAC9C,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,iBAAiB,qBAc5B","sourcesContent":["import {\n AbortReason,\n UnifiedSwapBridgeEventName,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n} from '@metamask/bridge-controller';\n\nimport { BridgeStatusControllerMessenger } from '../types';\n\nexport const stopPollingForQuotes = (\n messenger: BridgeStatusControllerMessenger,\n metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n): void => {\n messenger.call(\n 'BridgeController:stopPollingForQuotes',\n AbortReason.TransactionSubmitted,\n metricsContext,\n );\n};\n\nexport const getBatchSellTrades = (\n messenger: BridgeStatusControllerMessenger,\n): BatchSellTradesResponse | null => {\n return messenger.call('BridgeController:getState').batchSellTrades;\n};\n\nexport const trackMetricsEvent = ({\n messenger,\n eventName,\n properties,\n}: {\n messenger: BridgeStatusControllerMessenger;\n eventName: UnifiedSwapBridgeEventName;\n properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];\n}): void => {\n messenger.call(\n 'BridgeController:trackUnifiedSwapBridgeEvent',\n eventName,\n properties,\n );\n};\n"]}
@@ -1,6 +1,6 @@
1
- import { FeatureId, UnifiedSwapBridgeEventName, BatchSellTradesResponse, RequiredEventContextFromClient } from "@metamask/bridge-controller";
1
+ import { UnifiedSwapBridgeEventName, BatchSellTradesResponse, RequiredEventContextFromClient } from "@metamask/bridge-controller";
2
2
  import { BridgeStatusControllerMessenger } from "../types.cjs";
3
- export declare const stopPollingForQuotes: (messenger: BridgeStatusControllerMessenger, featureId?: FeatureId, metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived]) => void;
3
+ export declare const stopPollingForQuotes: (messenger: BridgeStatusControllerMessenger, metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived]) => void;
4
4
  export declare const getBatchSellTrades: (messenger: BridgeStatusControllerMessenger) => BatchSellTradesResponse | null;
5
5
  export declare const trackMetricsEvent: ({ messenger, eventName, properties, }: {
6
6
  messenger: BridgeStatusControllerMessenger;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.cts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC/B,oCAAoC;AAErC,OAAO,EAAE,+BAA+B,EAAE,qBAAiB;AAE3D,eAAO,MAAM,oBAAoB,2DAEnB,SAAS,mBACJ,8BAA8B,CAAC,2BAA2B,cAAc,CAAC,KACzF,IAQF,CAAC;AAEF,eAAO,MAAM,kBAAkB,kDAE5B,uBAAuB,GAAG,IAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;eAMjB,0BAA0B;gBACzB,8BAA8B,CAAC,0BAA0B,CAAC;MACpE,IAMH,CAAC"}
1
+ {"version":3,"file":"bridge.d.cts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC/B,oCAAoC;AAErC,OAAO,EAAE,+BAA+B,EAAE,qBAAiB;AAE3D,eAAO,MAAM,oBAAoB,gEAEd,8BAA8B,CAAC,2BAA2B,cAAc,CAAC,KACzF,IAMF,CAAC;AAEF,eAAO,MAAM,kBAAkB,kDAE5B,uBAAuB,GAAG,IAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;eAMjB,0BAA0B;gBACzB,8BAA8B,CAAC,0BAA0B,CAAC;MACpE,IAMH,CAAC"}
@@ -1,6 +1,6 @@
1
- import { FeatureId, UnifiedSwapBridgeEventName, BatchSellTradesResponse, RequiredEventContextFromClient } from "@metamask/bridge-controller";
1
+ import { UnifiedSwapBridgeEventName, BatchSellTradesResponse, RequiredEventContextFromClient } from "@metamask/bridge-controller";
2
2
  import { BridgeStatusControllerMessenger } from "../types.mjs";
3
- export declare const stopPollingForQuotes: (messenger: BridgeStatusControllerMessenger, featureId?: FeatureId, metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived]) => void;
3
+ export declare const stopPollingForQuotes: (messenger: BridgeStatusControllerMessenger, metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived]) => void;
4
4
  export declare const getBatchSellTrades: (messenger: BridgeStatusControllerMessenger) => BatchSellTradesResponse | null;
5
5
  export declare const trackMetricsEvent: ({ messenger, eventName, properties, }: {
6
6
  messenger: BridgeStatusControllerMessenger;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.mts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC/B,oCAAoC;AAErC,OAAO,EAAE,+BAA+B,EAAE,qBAAiB;AAE3D,eAAO,MAAM,oBAAoB,2DAEnB,SAAS,mBACJ,8BAA8B,CAAC,2BAA2B,cAAc,CAAC,KACzF,IAQF,CAAC;AAEF,eAAO,MAAM,kBAAkB,kDAE5B,uBAAuB,GAAG,IAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;eAMjB,0BAA0B;gBACzB,8BAA8B,CAAC,0BAA0B,CAAC;MACpE,IAMH,CAAC"}
1
+ {"version":3,"file":"bridge.d.mts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC/B,oCAAoC;AAErC,OAAO,EAAE,+BAA+B,EAAE,qBAAiB;AAE3D,eAAO,MAAM,oBAAoB,gEAEd,8BAA8B,CAAC,2BAA2B,cAAc,CAAC,KACzF,IAMF,CAAC;AAEF,eAAO,MAAM,kBAAkB,kDAE5B,uBAAuB,GAAG,IAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;eAMjB,0BAA0B;gBACzB,8BAA8B,CAAC,0BAA0B,CAAC;MACpE,IAMH,CAAC"}
@@ -1,9 +1,6 @@
1
- import { AbortReason, FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
2
- export const stopPollingForQuotes = (messenger, featureId, metricsContext) => {
3
- messenger.call('BridgeController:stopPollingForQuotes', AbortReason.TransactionSubmitted,
4
- // If trade is submitted before all quotes are loaded, the QuotesReceived event is published
5
- // If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published
6
- featureId ? undefined : metricsContext);
1
+ import { AbortReason, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
2
+ export const stopPollingForQuotes = (messenger, metricsContext) => {
3
+ messenger.call('BridgeController:stopPollingForQuotes', AbortReason.TransactionSubmitted, metricsContext);
7
4
  };
8
5
  export const getBatchSellTrades = (messenger) => {
9
6
  return messenger.call('BridgeController:getState').batchSellTrades;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.mjs","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,0BAA0B,EAG3B,oCAAoC;AAIrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,SAA0C,EAC1C,SAAqB,EACrB,cAA0F,EACpF,EAAE;IACR,SAAS,CAAC,IAAI,CACZ,uCAAuC,EACvC,WAAW,CAAC,oBAAoB;IAChC,4FAA4F;IAC5F,qJAAqJ;IACrJ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CACvC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA0C,EACV,EAAE;IAClC,OAAO,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,eAAe,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,UAAU,GAKX,EAAQ,EAAE;IACT,SAAS,CAAC,IAAI,CACZ,8CAA8C,EAC9C,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n AbortReason,\n FeatureId,\n UnifiedSwapBridgeEventName,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n} from '@metamask/bridge-controller';\n\nimport { BridgeStatusControllerMessenger } from '../types';\n\nexport const stopPollingForQuotes = (\n messenger: BridgeStatusControllerMessenger,\n featureId?: FeatureId,\n metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n): void => {\n messenger.call(\n 'BridgeController:stopPollingForQuotes',\n AbortReason.TransactionSubmitted,\n // If trade is submitted before all quotes are loaded, the QuotesReceived event is published\n // If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published\n featureId ? undefined : metricsContext,\n );\n};\n\nexport const getBatchSellTrades = (\n messenger: BridgeStatusControllerMessenger,\n): BatchSellTradesResponse | null => {\n return messenger.call('BridgeController:getState').batchSellTrades;\n};\n\nexport const trackMetricsEvent = ({\n messenger,\n eventName,\n properties,\n}: {\n messenger: BridgeStatusControllerMessenger;\n eventName: UnifiedSwapBridgeEventName;\n properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];\n}): void => {\n messenger.call(\n 'BridgeController:trackUnifiedSwapBridgeEvent',\n eventName,\n properties,\n );\n};\n"]}
1
+ {"version":3,"file":"bridge.mjs","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,0BAA0B,EAG3B,oCAAoC;AAIrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,SAA0C,EAC1C,cAA0F,EACpF,EAAE;IACR,SAAS,CAAC,IAAI,CACZ,uCAAuC,EACvC,WAAW,CAAC,oBAAoB,EAChC,cAAc,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA0C,EACV,EAAE;IAClC,OAAO,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,eAAe,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,UAAU,GAKX,EAAQ,EAAE;IACT,SAAS,CAAC,IAAI,CACZ,8CAA8C,EAC9C,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n AbortReason,\n UnifiedSwapBridgeEventName,\n BatchSellTradesResponse,\n RequiredEventContextFromClient,\n} from '@metamask/bridge-controller';\n\nimport { BridgeStatusControllerMessenger } from '../types';\n\nexport const stopPollingForQuotes = (\n messenger: BridgeStatusControllerMessenger,\n metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n): void => {\n messenger.call(\n 'BridgeController:stopPollingForQuotes',\n AbortReason.TransactionSubmitted,\n metricsContext,\n );\n};\n\nexport const getBatchSellTrades = (\n messenger: BridgeStatusControllerMessenger,\n): BatchSellTradesResponse | null => {\n return messenger.call('BridgeController:getState').batchSellTrades;\n};\n\nexport const trackMetricsEvent = ({\n messenger,\n eventName,\n properties,\n}: {\n messenger: BridgeStatusControllerMessenger;\n eventName: UnifiedSwapBridgeEventName;\n properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];\n}): void => {\n messenger.call(\n 'BridgeController:trackUnifiedSwapBridgeEvent',\n eventName,\n properties,\n );\n};\n"]}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPollingStatusUpdatedProperties = exports.getEVMTxPropertiesFromTransactionMeta = exports.getRequestMetadataFromHistory = exports.getTradeDataFromHistory = exports.getPreConfirmationPropertiesFromQuote = 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");
7
- const accounts_1 = require("./accounts.cjs");
8
7
  const gas_1 = require("./gas.cjs");
9
8
  const swap_received_amount_1 = require("./swap-received-amount.cjs");
10
9
  const getTxStatusesFromHistory = ({ status, hasApprovalTx, approvalTxId, quote, }) => {
@@ -115,9 +114,10 @@ exports.getPriceImpactFromQuote = getPriceImpactFromQuote;
115
114
  * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)
116
115
  * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.
117
116
  * @param batchSellTrades - The batch sell trades response
117
+ * @param batchId - The batch ID of the transaction batch.
118
118
  * @returns The properties for the pre-confirmation event
119
119
  */
120
- const getPreConfirmationPropertiesFromQuote = (quoteResponse, isStxEnabled, accountHardwareType, location, abTests, activeAbTests, tokenSecurityTypeDestination, batchSellTrades) => {
120
+ const getPreConfirmationPropertiesFromQuote = (quoteResponse, isStxEnabled, accountHardwareType, location, abTests, activeAbTests, tokenSecurityTypeDestination, batchSellTrades, batchId) => {
121
121
  const { quote } = quoteResponse;
122
122
  return {
123
123
  ...(0, exports.getPriceImpactFromQuote)(quote),
@@ -145,6 +145,8 @@ const getPreConfirmationPropertiesFromQuote = (quoteResponse, isStxEnabled, acco
145
145
  activeAbTests.length > 0 && {
146
146
  active_ab_tests: activeAbTests,
147
147
  }),
148
+ ...(batchId ? { batch_id: batchId } : {}),
149
+ feature_id: quoteResponse.featureId ?? bridge_controller_1.FeatureId.UNIFIED_SWAP_BRIDGE,
148
150
  };
149
151
  };
150
152
  exports.getPreConfirmationPropertiesFromQuote = getPreConfirmationPropertiesFromQuote;
@@ -227,26 +229,8 @@ const getEVMTxPropertiesFromTransactionMeta = (transactionMeta, account) => {
227
229
  usd_actual_return: 0,
228
230
  usd_actual_gas: 0,
229
231
  action_type: bridge_controller_1.MetricsActionType.SWAPBRIDGE_V1,
232
+ ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),
230
233
  };
231
234
  };
232
235
  exports.getEVMTxPropertiesFromTransactionMeta = getEVMTxPropertiesFromTransactionMeta;
233
- const getPollingStatusUpdatedProperties = (messenger, pollingStatus, historyItem) => {
234
- const selectedAccount = (0, accounts_1.getAccountByAddress)(messenger, historyItem.account);
235
- const requestParams = (0, exports.getRequestParamFromHistory)(historyItem);
236
- const requestMetadata = (0, exports.getRequestMetadataFromHistory)(historyItem, selectedAccount);
237
- const { security_warnings: _, ...metadataWithoutWarnings } = requestMetadata;
238
- return {
239
- ...(0, exports.getTradeDataFromHistory)(historyItem),
240
- ...(0, exports.getPriceImpactFromQuote)(historyItem.quote),
241
- ...metadataWithoutWarnings,
242
- chain_id_source: requestParams.chain_id_source,
243
- chain_id_destination: requestParams.chain_id_destination,
244
- token_symbol_source: requestParams.token_symbol_source,
245
- token_symbol_destination: requestParams.token_symbol_destination,
246
- action_type: bridge_controller_1.MetricsActionType.SWAPBRIDGE_V1,
247
- polling_status: pollingStatus,
248
- retry_attempts: historyItem.attempts?.counter ?? 0,
249
- };
250
- };
251
- exports.getPollingStatusUpdatedProperties = getPollingStatusUpdatedProperties;
252
236
  //# sourceMappingURL=metrics.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.cjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\nimport {\n StatusTypes,\n getAccountHardwareType,\n formatChainIdToHex,\n isEthUsdt,\n formatChainIdToCaip,\n formatProviderLabel,\n isCustomSlippage,\n getSwapType,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n MetaMetricsSwapsEventSource,\n} from '@metamask/bridge-controller';\nimport type {\n AccountHardwareType,\n QuoteFetchData,\n QuoteMetadata,\n QuoteResponse,\n TxStatusData,\n RequestParams,\n TradeData,\n RequestMetadata,\n PollingStatus,\n BatchSellTradesResponse,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type {\n BridgeHistoryItem,\n BridgeStatusControllerMessenger,\n} from '../types';\nimport { getAccountByAddress } from './accounts';\nimport { calcActualGasUsed } from './gas';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount';\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 token_security_type_destination:\n historyItem.tokenSecurityTypeDestination ?? null,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponse & QuoteMetadata,\n batchSellTrades?: BatchSellTradesResponse | null,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.effective?.usd ?? 0),\n gas_included:\n quoteResponse.quote.gasIncluded ?? batchSellTrades?.gasIncluded ?? false,\n gas_included_7702:\n quoteResponse.quote.gasIncluded7702 ??\n batchSellTrades?.gasIncluded7702 ??\n 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 isStxEnabled - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param accountHardwareType - The hardware wallet type used to submit the tx, or null if not a hardware wallet\n * @param location - The entry point from which the user initiated the swap or bridge (e.g. Main View, Token View, Trending Explore)\n * @param abTests - Legacy A/B test context for `ab_tests` (backward compatibility)\n * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)\n * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.\n * @param batchSellTrades - The batch sell trades response\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponse & QuoteMetadata,\n isStxEnabled: boolean,\n accountHardwareType: AccountHardwareType,\n location?: MetaMetricsSwapsEventSource,\n abTests?: Record<string, string>,\n activeAbTests?: { key: string; value: string }[],\n tokenSecurityTypeDestination?: string | null,\n batchSellTrades?: BatchSellTradesResponse | null,\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse, batchSellTrades),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n token_address_source: quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n token_address_destination: quote.destAsset.assetId,\n token_security_type_destination: tokenSecurityTypeDestination ?? null,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\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: isStxEnabled,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n custom_slippage: false, // TODO detect whether the user changed the default slippage\n location,\n ...(abTests &&\n Object.keys(abTests).length > 0 && {\n ab_tests: abTests,\n }),\n ...(activeAbTests &&\n activeAbTests.length > 0 && {\n active_ab_tests: activeAbTests,\n }),\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 gas_included_7702: historyItem.quote.gasIncluded7702 ?? 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 const accountHardwareType = getAccountHardwareType(account);\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 account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\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 * @param account - The account that submitted the transaction\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n const accountHardwareType = getAccountHardwareType(account);\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: [\n `Transaction ${transactionMeta.status}`,\n transactionMeta.error?.message,\n ]\n .filter(Boolean)\n .join('. '),\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: 0,\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 token_security_type_destination: null,\n custom_slippage: false,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\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 gas_included_7702: 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\nexport const getPollingStatusUpdatedProperties = (\n messenger: BridgeStatusControllerMessenger,\n pollingStatus: PollingStatus,\n historyItem: BridgeHistoryItem,\n) => {\n const selectedAccount = getAccountByAddress(messenger, historyItem.account);\n const requestParams = getRequestParamFromHistory(historyItem);\n const requestMetadata = getRequestMetadataFromHistory(\n historyItem,\n selectedAccount,\n );\n const { security_warnings: _, ...metadataWithoutWarnings } = requestMetadata;\n\n return {\n ...getTradeDataFromHistory(historyItem),\n ...getPriceImpactFromQuote(historyItem.quote),\n ...metadataWithoutWarnings,\n chain_id_source: requestParams.chain_id_source,\n chain_id_destination: requestParams.chain_id_destination,\n token_symbol_source: requestParams.token_symbol_source,\n token_symbol_destination: requestParams.token_symbol_destination,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n polling_status: pollingStatus,\n retry_attempts: historyItem.attempts?.counter ?? 0,\n };\n};\n"]}
1
+ {"version":3,"file":"metrics.cjs","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { AccountsControllerState } from '@metamask/accounts-controller';\nimport {\n StatusTypes,\n getAccountHardwareType,\n formatChainIdToHex,\n isEthUsdt,\n formatChainIdToCaip,\n formatProviderLabel,\n isCustomSlippage,\n getSwapType,\n formatAddressToAssetId,\n MetricsActionType,\n MetricsSwapType,\n MetaMetricsSwapsEventSource,\n FeatureId,\n} from '@metamask/bridge-controller';\nimport type {\n AccountHardwareType,\n QuoteFetchData,\n QuoteMetadata,\n QuoteResponse,\n TxStatusData,\n RequestParams,\n TradeData,\n RequestMetadata,\n BatchSellTradesResponse,\n} from '@metamask/bridge-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { CaipAssetType, Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types';\nimport { calcActualGasUsed } from './gas';\nimport {\n getActualBridgeReceivedAmount,\n getActualSwapReceivedAmount,\n} from './swap-received-amount';\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 token_security_type_destination:\n historyItem.tokenSecurityTypeDestination ?? null,\n };\n};\n\nexport const getTradeDataFromQuote = (\n quoteResponse: QuoteResponse & QuoteMetadata,\n batchSellTrades?: BatchSellTradesResponse | null,\n): TradeData => {\n return {\n usd_quoted_gas: Number(quoteResponse.gasFee?.effective?.usd ?? 0),\n gas_included:\n quoteResponse.quote.gasIncluded ?? batchSellTrades?.gasIncluded ?? false,\n gas_included_7702:\n quoteResponse.quote.gasIncluded7702 ??\n batchSellTrades?.gasIncluded7702 ??\n 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 isStxEnabled - Whether smart transactions are enabled on the client, for example the getSmartTransactionsEnabled selector value from the extension\n * @param accountHardwareType - The hardware wallet type used to submit the tx, or null if not a hardware wallet\n * @param location - The entry point from which the user initiated the swap or bridge (e.g. Main View, Token View, Trending Explore)\n * @param abTests - Legacy A/B test context for `ab_tests` (backward compatibility)\n * @param activeAbTests - New A/B test context for `active_ab_tests` (migration target)\n * @param tokenSecurityTypeDestination - The security classification of the destination token, supplied by the client (e.g. from token security/scanning data). Pass `null` when no security data is available.\n * @param batchSellTrades - The batch sell trades response\n * @param batchId - The batch ID of the transaction batch.\n * @returns The properties for the pre-confirmation event\n */\nexport const getPreConfirmationPropertiesFromQuote = (\n quoteResponse: QuoteResponse & QuoteMetadata,\n isStxEnabled: boolean,\n accountHardwareType: AccountHardwareType,\n location?: MetaMetricsSwapsEventSource,\n abTests?: Record<string, string>,\n activeAbTests?: { key: string; value: string }[],\n tokenSecurityTypeDestination?: string | null,\n batchSellTrades?: BatchSellTradesResponse | null,\n batchId?: Hex,\n) => {\n const { quote } = quoteResponse;\n return {\n ...getPriceImpactFromQuote(quote),\n ...getTradeDataFromQuote(quoteResponse, batchSellTrades),\n chain_id_source: formatChainIdToCaip(quote.srcChainId),\n token_symbol_source: quote.srcAsset.symbol,\n token_address_source: quote.srcAsset.assetId,\n chain_id_destination: formatChainIdToCaip(quote.destChainId),\n token_symbol_destination: quote.destAsset.symbol,\n token_address_destination: quote.destAsset.assetId,\n token_security_type_destination: tokenSecurityTypeDestination ?? null,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\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: isStxEnabled,\n action_type: MetricsActionType.SWAPBRIDGE_V1,\n custom_slippage: false, // TODO detect whether the user changed the default slippage\n location,\n ...(abTests &&\n Object.keys(abTests).length > 0 && {\n ab_tests: abTests,\n }),\n ...(activeAbTests &&\n activeAbTests.length > 0 && {\n active_ab_tests: activeAbTests,\n }),\n ...(batchId ? { batch_id: batchId } : {}),\n feature_id: quoteResponse.featureId ?? FeatureId.UNIFIED_SWAP_BRIDGE,\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 gas_included_7702: historyItem.quote.gasIncluded7702 ?? 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 const accountHardwareType = getAccountHardwareType(account);\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 account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\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 * @param account - The account that submitted the transaction\n * @returns The properties for the swap transaction\n */\nexport const getEVMTxPropertiesFromTransactionMeta = (\n transactionMeta: TransactionMeta,\n account?: AccountsControllerState['internalAccounts']['accounts'][string],\n) => {\n const accountHardwareType = getAccountHardwareType(account);\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: [\n `Transaction ${transactionMeta.status}`,\n transactionMeta.error?.message,\n ]\n .filter(Boolean)\n .join('. '),\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: 0,\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 token_security_type_destination: null,\n custom_slippage: false,\n account_hardware_type: accountHardwareType,\n is_hardware_wallet: accountHardwareType !== null,\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 gas_included_7702: 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 ...(transactionMeta.batchId ? { batch_id: transactionMeta.batchId } : {}),\n };\n};\n"]}