{"version":3,"file":"trade-utils.cjs","sourceRoot":"","sources":["../../src/utils/trade-utils.ts"],"names":[],"mappings":";;;AAKA;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,KAAY,EAAmB,EAAE;IAC3D,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,SAAS,IAAI,KAAK;QAClB,IAAI,IAAI,KAAK,CACd,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEF;;;;;GAKG;AACI,MAAM,cAAc,GAAG,CAAC,KAAY,EAA6B,EAAE;IACxE,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,oBAAoB,IAAI,KAAK,CAC7E,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEF;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,KAAY,EAA0B,EAAE;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,IAAI,KAAK,CAAC;AAChF,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEF;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAU,EAAE;IACvD,qEAAqE;IACrE,IAAI,IAAA,sBAAc,EAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,4CAA4C;QAC5C,OAAO,KAAK,CAAC,kBAAkB,CAAC;IAClC,CAAC;IAED,IAAI,IAAA,mBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,+DAA+D;QAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,kDAAkD;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAA,mBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,+CAA+C;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAvBW,QAAA,gBAAgB,oBAuB3B","sourcesContent":["import type { BitcoinTradeData, TronTradeData, TxData } from '../types';\n\n// Union type representing all possible trade formats (EVM, Solana, Bitcoin, Tron)\nexport type Trade = TxData | string | BitcoinTradeData | TronTradeData;\n\n/**\n * Type guard to check if a trade is an EVM TxData object\n *\n * @param trade - The trade object to check\n * @returns True if the trade is a TxData object with data property\n */\nexport const isEvmTxData = (trade: Trade): trade is TxData => {\n  return (\n    typeof trade === 'object' &&\n    trade !== null &&\n    'data' in trade &&\n    'chainId' in trade &&\n    'to' in trade\n  );\n};\n\n/**\n * Type guard to check if a trade is a Bitcoin trade with unsignedPsbtBase64\n *\n * @param trade - The trade object to check\n * @returns True if the trade is a Bitcoin trade with unsignedPsbtBase64 property\n */\nexport const isBitcoinTrade = (trade: Trade): trade is BitcoinTradeData => {\n  return (\n    typeof trade === 'object' && trade !== null && 'unsignedPsbtBase64' in trade\n  );\n};\n\n/**\n * Type guard to check if a trade is a Tron trade with raw_data_hex\n *\n * @param trade - The trade object to check\n * @returns True if the trade is a Tron trade with raw_data_hex property\n */\nexport const isTronTrade = (trade: Trade): trade is TronTradeData => {\n  return typeof trade === 'object' && trade !== null && 'raw_data_hex' in trade;\n};\n\n/**\n * Extracts the transaction data from different trade formats\n *\n * @param trade - The trade object which can be a TxData, string, Bitcoin trade, or Tron trade\n * @returns The extracted transaction data as a base64 string for SnapController\n */\nexport const extractTradeData = (trade: Trade): string => {\n  // Check more specific trade types first to prevent misidentification\n  if (isBitcoinTrade(trade)) {\n    // Bitcoin trades are already base64 encoded\n    return trade.unsignedPsbtBase64;\n  }\n\n  if (isTronTrade(trade)) {\n    // Tron trades need hex to base64 conversion for SnapController\n    return Buffer.from(trade.raw_data_hex, 'hex').toString('base64');\n  }\n\n  if (typeof trade === 'string') {\n    // Solana txs - assuming already in correct format\n    return trade;\n  }\n\n  if (isEvmTxData(trade)) {\n    // EVM TxData object - return the data property\n    return trade.data;\n  }\n\n  return '';\n};\n"]}