{
  "version": 3,
  "sources": ["../../../../../src/utils/transactions/getInterpretedTransaction/helpers/getTokenFromData.ts"],
  "sourcesContent": ["import BigNumber from 'bignumber.js';\nimport { Address } from 'lib/sdkCore';\nimport { TransactionTypesEnum } from 'types/enums.types';\nimport { decodePart } from 'utils/decoders/decodePart';\nimport { addressIsValid } from 'utils/validation/addressIsValid';\n\nconst noData = {\n  tokenId: '',\n  amount: ''\n};\n\nexport const decodeData = (data: string) => {\n  const nonceIndex = 2;\n  const amountIndex = 3;\n  const parts = data.split('@');\n  const decodedParts = parts.map((part, i) =>\n    [nonceIndex, amountIndex].includes(i) ? part : decodePart(part)\n  );\n  return decodedParts;\n};\n\nexport function getTokenFromData(data?: string): {\n  tokenId: string;\n  amount: string;\n  collection?: string;\n  nonce?: string;\n  receiver?: string;\n} {\n  if (!data) {\n    return noData;\n  }\n\n  const isTokenTransfer = data.startsWith(TransactionTypesEnum.ESDTTransfer);\n  const isNftTransfer =\n    data.startsWith(TransactionTypesEnum.ESDTNFTTransfer) && data.includes('@');\n  const isNftBurn =\n    data.startsWith(TransactionTypesEnum.ESDTNFTBurn) && data.includes('@');\n\n  try {\n    if (isTokenTransfer) {\n      const [, encodedToken, encodedAmount] = data.split('@');\n      const tokenId = Buffer.from(encodedToken, 'hex').toString('ascii');\n\n      if (!tokenId) {\n        return noData;\n      }\n\n      const amount = new BigNumber(\n        '0x' + encodedAmount.replace('0x', '')\n      ).toString(10);\n\n      return {\n        tokenId,\n        amount\n      };\n    }\n\n    const decodedData = decodeData(data);\n\n    if (isNftTransfer) {\n      const [, /*ESDTNFTTransfer*/ collection, nonce, quantity, receiver] =\n        decodedData;\n\n      if (\n        [collection, nonce, quantity, receiver].every((el) => Boolean(el)) &&\n        addressIsValid(new Address(receiver).toBech32())\n      ) {\n        return {\n          tokenId: `${collection}-${nonce}`,\n          amount: new BigNumber(quantity, 16).toString(10),\n          collection,\n          nonce,\n          receiver: new Address(receiver).toBech32()\n        };\n      }\n    }\n\n    if (isNftBurn) {\n      const [, /*ESDTNFTBurn*/ collection, nonce, quantity] = decodedData;\n\n      if ([collection, nonce, quantity].every((el) => Boolean(el))) {\n        return {\n          tokenId: `${collection}-${nonce}`,\n          amount: new BigNumber(quantity, 16).toString(10),\n          collection,\n          nonce\n        };\n      }\n    }\n  } catch {\n    return noData;\n  }\n\n  return noData;\n}\n"],
  "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,qBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAsB,2BACtBC,EAAwB,uBACxBC,EAAqC,6BACrCC,EAA2B,qCAC3BC,EAA+B,2CAE/B,MAAMC,EAAS,CACb,QAAS,GACT,OAAQ,EACV,EAEaR,EAAcS,GAGXA,EAAK,MAAM,GAAG,EACD,IAAI,CAACC,EAAMC,IACpC,CAAC,EAAY,CAAW,EAAE,SAASA,CAAC,EAAID,KAAO,cAAWA,CAAI,CAChE,EAIK,SAAST,EAAiBQ,EAM/B,CACA,GAAI,CAACA,EACH,OAAOD,EAGT,MAAMI,EAAkBH,EAAK,WAAW,uBAAqB,YAAY,EACnEI,EACJJ,EAAK,WAAW,uBAAqB,eAAe,GAAKA,EAAK,SAAS,GAAG,EACtEK,EACJL,EAAK,WAAW,uBAAqB,WAAW,GAAKA,EAAK,SAAS,GAAG,EAExE,GAAI,CACF,GAAIG,EAAiB,CACnB,KAAM,CAAC,CAAEG,EAAcC,CAAa,EAAIP,EAAK,MAAM,GAAG,EAChDQ,EAAU,OAAO,KAAKF,EAAc,KAAK,EAAE,SAAS,OAAO,EAEjE,GAAI,CAACE,EACH,OAAOT,EAGT,MAAMU,EAAS,IAAI,EAAAC,QACjB,KAAOH,EAAc,QAAQ,KAAM,EAAE,CACvC,EAAE,SAAS,EAAE,EAEb,MAAO,CACL,QAAAC,EACA,OAAAC,CACF,CACF,CAEA,MAAME,EAAcpB,EAAWS,CAAI,EAEnC,GAAII,EAAe,CACjB,KAAM,CAAC,CAAsBQ,EAAYC,EAAOC,EAAUC,CAAQ,EAChEJ,EAEF,GACE,CAACC,EAAYC,EAAOC,EAAUC,CAAQ,EAAE,MAAOC,GAAO,EAAQA,CAAG,MACjE,kBAAe,IAAI,UAAQD,CAAQ,EAAE,SAAS,CAAC,EAE/C,MAAO,CACL,QAAS,GAAGH,CAAU,IAAIC,CAAK,GAC/B,OAAQ,IAAI,EAAAH,QAAUI,EAAU,EAAE,EAAE,SAAS,EAAE,EAC/C,WAAAF,EACA,MAAAC,EACA,SAAU,IAAI,UAAQE,CAAQ,EAAE,SAAS,CAC3C,CAEJ,CAEA,GAAIV,EAAW,CACb,KAAM,CAAC,CAAkBO,EAAYC,EAAOC,CAAQ,EAAIH,EAExD,GAAI,CAACC,EAAYC,EAAOC,CAAQ,EAAE,MAAOE,GAAO,EAAQA,CAAG,EACzD,MAAO,CACL,QAAS,GAAGJ,CAAU,IAAIC,CAAK,GAC/B,OAAQ,IAAI,EAAAH,QAAUI,EAAU,EAAE,EAAE,SAAS,EAAE,EAC/C,WAAAF,EACA,MAAAC,CACF,CAEJ,CACF,MAAQ,CACN,OAAOd,CACT,CAEA,OAAOA,CACT",
  "names": ["getTokenFromData_exports", "__export", "decodeData", "getTokenFromData", "__toCommonJS", "import_bignumber", "import_sdkCore", "import_enums", "import_decodePart", "import_addressIsValid", "noData", "data", "part", "i", "isTokenTransfer", "isNftTransfer", "isNftBurn", "encodedToken", "encodedAmount", "tokenId", "amount", "BigNumber", "decodedData", "collection", "nonce", "quantity", "receiver", "el"]
}
