{
  "version": 3,
  "sources": ["../../src/providers/strategies/helpers/signTransactions/helpers/getCommonData/helpers/getExtractTransactionsInfo.ts"],
  "sourcesContent": ["import { getAccountFromApi } from 'apiCalls/account/getAccountFromApi';\nimport { getScamAddressData } from 'apiCalls/account/getScamAddressData';\nimport { SigningErrorsEnum } from 'types/enums.types';\n\nimport {\n  MultiSignTransactionType,\n  TransactionDataTokenType\n} from 'types/transactions.types';\nimport { decodeBase64 } from 'utils/decoders/base64Utils';\nimport { checkIsValidSender } from './checkIsValidSender';\nimport { getTxInfoByDataField } from './getTxInfoByDataField';\nimport { isTokenTransfer } from '../../isTokenTransfer';\n\ninterface VerifiedAddressesType {\n  [address: string]: { type: string; info: string };\n}\nlet verifiedAddresses: VerifiedAddressesType = {};\n\ntype ExtractTransactionsInfoType = {\n  sender: string;\n  address: string;\n  apiAddress: string;\n  egldLabel: string;\n  parsedTransactionsByDataField: Record<string, TransactionDataTokenType>;\n};\n\nexport function getExtractTransactionsInfo({\n  egldLabel,\n  apiAddress,\n  sender,\n  address,\n  parsedTransactionsByDataField\n}: ExtractTransactionsInfoType) {\n  const extractTransactionsInfo = async (\n    currentTx: MultiSignTransactionType\n  ) => {\n    if (currentTx == null) {\n      return;\n    }\n\n    const senderAccount =\n      !sender || sender === address\n        ? null\n        : await getAccountFromApi({\n            address: sender,\n            baseURL: apiAddress\n          });\n\n    const { transaction, multiTxData, transactionIndex } = currentTx;\n    const dataField = decodeBase64(transaction.data.toString() ?? '');\n    const transactionTokenInfo = getTxInfoByDataField({\n      data: dataField,\n      multiTransactionData: multiTxData,\n      parsedTransactionsByDataField\n    });\n\n    const { tokenId } = transactionTokenInfo;\n    const receiver = transaction.receiver.toBech32();\n\n    if (sender && sender !== address) {\n      const isValidSender = checkIsValidSender(senderAccount, address);\n\n      if (!isValidSender) {\n        console.error(SigningErrorsEnum.senderDifferentThanLoggedInAddress);\n        throw SigningErrorsEnum.senderDifferentThanLoggedInAddress;\n      }\n    }\n\n    const notSender = address !== receiver;\n    const verified = receiver in verifiedAddresses;\n\n    if (receiver && notSender && !verified) {\n      const data = await getScamAddressData({\n        addressToVerify: receiver,\n        baseURL: apiAddress\n      });\n      verifiedAddresses = {\n        ...verifiedAddresses,\n        ...(data?.scamInfo ? { [receiver]: data.scamInfo } : {})\n      };\n    }\n\n    const isTokenTransaction = Boolean(\n      tokenId && isTokenTransfer({ tokenId, egldLabel })\n    );\n\n    return {\n      transaction,\n      receiverScamInfo: verifiedAddresses[receiver]?.info || null,\n      transactionTokenInfo,\n      isTokenTransaction,\n      dataField,\n      transactionIndex,\n      needsSigning: currentTx.needsSigning\n    };\n  };\n  return extractTransactionsInfo;\n}\n"],
  "mappings": "sPAgBA,IAAIA,EAA2C,CAAC,EAUzC,SAASC,EAA2B,CACzC,UAAAC,EACA,WAAAC,EACA,OAAAC,EACA,QAAAC,EACA,8BAAAC,CACF,EAAgC,CAgE9B,MA/DgC,OAC9BC,GACG,CACH,GAAIA,GAAa,KACf,OAGF,IAAMC,EACJ,CAACJ,GAAUA,IAAWC,EAClB,KACA,MAAMI,EAAkB,CACtB,QAASL,EACT,QAASD,CACX,CAAC,EAED,CAAE,YAAAO,EAAa,YAAAC,EAAa,iBAAAC,CAAiB,EAAIL,EACjDM,EAAYC,EAAaJ,EAAY,KAAK,SAAS,GAAK,EAAE,EAC1DK,EAAuBC,EAAqB,CAChD,KAAMH,EACN,qBAAsBF,EACtB,8BAAAL,CACF,CAAC,EAEK,CAAE,QAAAW,CAAQ,EAAIF,EACdG,EAAWR,EAAY,SAAS,SAAS,EAE/C,GAAIN,GAAUA,IAAWC,GAGnB,CAFkBc,EAAmBX,EAAeH,CAAO,EAG7D,cAAQ,6DAA0D,0DAKtE,IAAMe,EAAYf,IAAYa,EACxBG,EAAWH,KAAYlB,EAE7B,GAAIkB,GAAYE,GAAa,CAACC,EAAU,CACtC,IAAMC,EAAO,MAAMC,EAAmB,CACpC,gBAAiBL,EACjB,QAASf,CACX,CAAC,EACDH,EAAoB,CAClB,GAAGA,EACH,GAAIsB,GAAM,SAAW,CAAE,CAACJ,CAAQ,EAAGI,EAAK,QAAS,EAAI,CAAC,CACxD,CACF,CAEA,IAAME,EAAqB,GACzBP,GAAWQ,EAAgB,CAAE,QAAAR,EAAS,UAAAf,CAAU,CAAC,GAGnD,MAAO,CACL,YAAAQ,EACA,iBAAkBV,EAAkBkB,CAAQ,GAAG,MAAQ,KACvD,qBAAAH,EACA,mBAAAS,EACA,UAAAX,EACA,iBAAAD,EACA,aAAcL,EAAU,YAC1B,CACF,CAEF",
  "names": ["verifiedAddresses", "getExtractTransactionsInfo", "egldLabel", "apiAddress", "sender", "address", "parsedTransactionsByDataField", "currentTx", "senderAccount", "getAccountFromApi", "transaction", "multiTxData", "transactionIndex", "dataField", "decodeBase64", "transactionTokenInfo", "getTxInfoByDataField", "tokenId", "receiver", "checkIsValidSender", "notSender", "verified", "data", "getScamAddressData", "isTokenTransaction", "isTokenTransfer"]
}
