{
  "version": 3,
  "sources": ["../../src/providers/strategies/helpers/signTransactions/helpers/getCommonData/getCommonData.ts"],
  "sourcesContent": ["import { BigNumber } from 'bignumber.js';\nimport { ACCOUNTS_ENDPOINT } from 'apiCalls/endpoints';\nimport { getPersistedTokenDetails } from 'apiCalls/tokens/getPersistedTokenDetails';\nimport { MULTI_TRANSFER_EGLD_TOKEN } from 'constants/mvx.constants';\nimport { safeWindow } from 'constants/window.constants';\nimport { DECIMALS, DIGITS, formatAmount } from 'lib/sdkDappUtils';\nimport {\n  FungibleTransactionType,\n  ISignTransactionsPanelCommonData\n} from 'managers/internal/SignTransactionsStateManager/types';\nimport { getExplorerAddress } from 'methods/network/getExplorerAddress';\nimport { getAccountProvider } from 'providers/helpers/accountProvider';\nimport { NetworkType } from 'types/network.types';\nimport { NftEnumType } from 'types/tokens.types';\nimport {\n  MultiSignTransactionType,\n  TransactionDataTokenType\n} from 'types/transactions.types';\nimport { decodeBase64 } from 'utils/decoders/base64Utils';\nimport { capitalize } from 'utils/operations/capitalize';\nimport { getUsdValue } from 'utils/operations/getUsdValue';\nimport { getExplorerLink } from 'utils/transactions/getExplorerLink';\nimport { getFeeData } from '../getFeeData';\nimport { getAllDecodedFormats } from './helpers/decodeDataField';\nimport { getExtractTransactionsInfo } from './helpers/getExtractTransactionsInfo';\nimport { getGasPriceOptions } from './helpers/getGasPriceOptions';\nimport { getHighlight } from './helpers/getHighlight';\nimport { getScCall } from './helpers/getScCall';\nimport { getTokenType } from './helpers/getTokenType';\n\nexport type GetCommonDataPropsType = {\n  allTransactions: MultiSignTransactionType[];\n  currentScreenIndex: number;\n  price?: number;\n  network: NetworkType;\n  signedIndexes: number[];\n  egldLabel: string;\n  address: string;\n  shard?: number;\n  username?: string;\n  parsedTransactionsByDataField: Record<string, TransactionDataTokenType>;\n  gasPriceData: {\n    initialGasPrice: number;\n    gasPriceOption: number;\n  };\n};\n\nexport async function getCommonData({\n  allTransactions,\n  currentScreenIndex,\n  egldLabel,\n  network,\n  gasPriceData,\n  price,\n  address,\n  username,\n  shard,\n  signedIndexes,\n  parsedTransactionsByDataField\n}: GetCommonDataPropsType) {\n  const currentTransaction = allTransactions[currentScreenIndex];\n  const sender = currentTransaction?.transaction?.sender.toString();\n  const transaction = currentTransaction?.transaction;\n  const plainTransaction = transaction?.toPlainObject();\n\n  let tokenTransaction: {\n    identifier?: string;\n    amount: string;\n    usdValue: string;\n  } | null = null;\n\n  let fungibleTransaction:\n    | (FungibleTransactionType & {\n        type: NftEnumType.NonFungibleESDT | NftEnumType.SemiFungibleESDT;\n      })\n    | null = null;\n\n  const extractTransactionsInfo = getExtractTransactionsInfo({\n    egldLabel,\n    sender,\n    apiAddress: network.apiAddress,\n    address,\n    parsedTransactionsByDataField\n  });\n\n  const txInfo = await extractTransactionsInfo(currentTransaction);\n\n  const isEgld = !txInfo?.transactionTokenInfo?.tokenId;\n  const { tokenId, nonce, amount = '' } = txInfo?.transactionTokenInfo ?? {};\n\n  const isNftOrSft = tokenId && nonce && nonce.length > 0;\n  const tokenIdForTokenDetails = isNftOrSft ? `${tokenId}-${nonce}` : tokenId;\n\n  const tokenDetails = await getPersistedTokenDetails({\n    tokenId: tokenIdForTokenDetails\n  });\n\n  const { esdtPrice, tokenDecimals, type, identifier, tokenImageUrl } =\n    tokenDetails;\n\n  const isNft =\n    type === NftEnumType.SemiFungibleESDT ||\n    type === NftEnumType.NonFungibleESDT;\n\n  if (isNft) {\n    fungibleTransaction = {\n      type,\n      identifier,\n      amount,\n      imageURL: tokenImageUrl\n    };\n  } else {\n    const getFormattedAmount = ({ addCommas }: { addCommas: boolean }) =>\n      formatAmount({\n        input: isEgld ? transaction.value.toString() : amount,\n        decimals: isEgld ? Number(network.decimals) : tokenDecimals,\n        digits: Number(network.digits),\n        addCommas\n      });\n\n    const formattedAmount = getFormattedAmount({ addCommas: true });\n    const rawAmount = getFormattedAmount({ addCommas: false });\n    const tokenPrice = Number(isEgld ? price : esdtPrice);\n    const usdValue = getUsdValue({\n      amount: rawAmount,\n      usd: tokenPrice,\n      addEqualSign: true\n    });\n\n    const esdtIdentifier =\n      identifier === MULTI_TRANSFER_EGLD_TOKEN ? egldLabel : identifier;\n    tokenTransaction = {\n      identifier: esdtIdentifier ?? egldLabel,\n      amount: formattedAmount,\n      usdValue\n    };\n  }\n\n  const { feeLimitFormatted, feeInFiatLimit } = getFeeData({\n    transaction,\n    price\n  });\n\n  const gasPriceOptions = getGasPriceOptions({\n    shard,\n    initialGasPrice: gasPriceData.initialGasPrice,\n    transaction: plainTransaction,\n    gasStationMetadata: network.gasStationMetadata\n  });\n\n  const { gasPriceOption } = gasPriceData;\n  const provider = getAccountProvider();\n  const providerType = provider.getType();\n  const providerName = capitalize(providerType as string);\n  const transactionsCount = allTransactions.length;\n\n  const currentIndexToSign =\n    signedIndexes.length > 0 ? signedIndexes[signedIndexes.length - 1] + 1 : 0;\n\n  const data = decodeBase64(plainTransaction?.data ?? '');\n  const highlight = getHighlight(txInfo?.transactionTokenInfo);\n  const decodedData = getAllDecodedFormats({ data, identifier, highlight });\n  const explorerAddress = getExplorerAddress();\n  const explorerLink = getExplorerLink({\n    to: `/${ACCOUNTS_ENDPOINT}/${address}`,\n    explorerAddress\n  });\n\n  const needsSigning =\n    transactionsCount === 1 ||\n    (txInfo?.needsSigning && !signedIndexes.includes(currentScreenIndex));\n\n  const formattedGasPrice = formatAmount({\n    input: gasPriceOption.toString(),\n    decimals: DECIMALS,\n    addCommas: true,\n    digits: DIGITS\n  });\n\n  const formattedGasLimit = new BigNumber(plainTransaction.gasLimit).toFormat({\n    decimalSeparator: '.',\n    groupSeparator: ',',\n    groupSize: 3\n  });\n\n  const commonData: ISignTransactionsPanelCommonData = {\n    receiver: plainTransaction.receiver.toString(),\n    data,\n    decodedData,\n    gasPrice: formattedGasPrice,\n    gasLimit: formattedGasLimit,\n    explorerLink,\n    gasPriceOption,\n    gasPriceOptions,\n    egldLabel,\n    tokenType: getTokenType(type),\n    feeLimit: feeLimitFormatted,\n    feeInFiatLimit,\n    transactionsCount,\n    currentIndex: currentScreenIndex,\n    currentIndexToSign,\n    highlight,\n    scCall: getScCall(txInfo?.transactionTokenInfo),\n    needsSigning,\n    isEditable: txInfo?.needsSigning,\n    providerName,\n    address,\n    username,\n    origin: safeWindow.location?.origin\n  };\n\n  return { commonData, tokenTransaction, fungibleTransaction };\n}\n"],
  "mappings": "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",
  "names": ["BigNumber", "getCommonData", "allTransactions", "currentScreenIndex", "egldLabel", "network", "gasPriceData", "price", "address", "username", "shard", "signedIndexes", "parsedTransactionsByDataField", "currentTransaction", "sender", "transaction", "plainTransaction", "tokenTransaction", "fungibleTransaction", "txInfo", "getExtractTransactionsInfo", "isEgld", "tokenId", "nonce", "amount", "tokenIdForTokenDetails", "tokenDetails", "getPersistedTokenDetails", "esdtPrice", "tokenDecimals", "type", "identifier", "tokenImageUrl", "getFormattedAmount", "addCommas", "formatAmount", "formattedAmount", "rawAmount", "tokenPrice", "usdValue", "getUsdValue", "MULTI_TRANSFER_EGLD_TOKEN", "feeLimitFormatted", "feeInFiatLimit", "getFeeData", "gasPriceOptions", "getGasPriceOptions", "gasPriceOption", "providerType", "getAccountProvider", "providerName", "capitalize", "transactionsCount", "currentIndexToSign", "data", "decodeBase64", "highlight", "getHighlight", "decodedData", "getAllDecodedFormats", "explorerAddress", "getExplorerAddress", "explorerLink", "getExplorerLink", "ACCOUNTS_ENDPOINT", "needsSigning", "formattedGasPrice", "DECIMALS", "DIGITS", "formattedGasLimit", "BigNumber", "getTokenType", "getScCall", "safeWindow"]
}
