{
  "version": 3,
  "sources": ["../../src/utils/transactions/getDecodedDataField/helpers/decodeByMethod.ts"],
  "sourcesContent": ["import BigNumber from 'bignumber.js';\nimport { Address } from 'lib/sdkCore';\n\nimport {\n  DecodeMethodEnum,\n  TransactionTokensType\n} from 'types/serverTransactions.types';\nimport { isUtf8 } from 'utils/decoders/isUtf8';\nimport { addressIsValid } from 'utils/validation/addressIsValid';\n\ninterface IDecodeByMethod {\n  data: string;\n  decodeMethod: DecodeMethodEnum | string;\n  transactionTokens?: TransactionTokensType;\n}\n\nexport const decodeByMethod = ({\n  data,\n  decodeMethod,\n  transactionTokens\n}: IDecodeByMethod) => {\n  switch (decodeMethod) {\n    case DecodeMethodEnum.text:\n      try {\n        return Buffer.from(data, 'hex').toString('utf8');\n      } catch {\n        return data;\n      }\n\n    case DecodeMethodEnum.decimal:\n      return data !== '' ? new BigNumber(data, 16).toString(10) : '';\n    case DecodeMethodEnum.smart:\n      try {\n        const bech32Encoded = Address.newFromHex(data).toString();\n\n        if (addressIsValid(bech32Encoded)) {\n          return bech32Encoded;\n        }\n      } catch {\n        // skip\n      }\n\n      try {\n        const decoded = Buffer.from(data, 'hex').toString('utf8');\n\n        if (!isUtf8(decoded)) {\n          if (transactionTokens) {\n            const tokens = [\n              ...transactionTokens.esdts,\n              ...transactionTokens.nfts\n            ];\n\n            if (tokens.some((token) => decoded.includes(token))) {\n              return decoded;\n            }\n          }\n\n          const bigNumber = new BigNumber(data, 16);\n\n          return bigNumber.isFinite() ? bigNumber.toString(10) : data;\n        } else {\n          return decoded;\n        }\n      } catch {\n        return data;\n      }\n\n    case DecodeMethodEnum.raw:\n    default:\n      return data;\n  }\n};\n"],
  "mappings": "2HAAA,OAAOA,MAAe,eAgBf,IAAMC,EAAiB,CAAC,CAC7B,KAAAC,EACA,aAAAC,EACA,kBAAAC,CACF,IAAuB,CACrB,OAAQD,EAAc,CACpB,WACE,GAAI,CACF,OAAO,OAAO,KAAKD,EAAM,KAAK,EAAE,SAAS,MAAM,CACjD,MAAQ,CACN,OAAOA,CACT,CAEF,cACE,OAAOA,IAAS,GAAK,IAAIG,EAAUH,EAAM,EAAE,EAAE,SAAS,EAAE,EAAI,GAC9D,YACE,GAAI,CACF,IAAMI,EAAgBC,EAAQ,WAAWL,CAAI,EAAE,SAAS,EAExD,GAAIM,EAAeF,CAAa,EAC9B,OAAOA,CAEX,MAAQ,CAER,CAEA,GAAI,CACF,IAAMG,EAAU,OAAO,KAAKP,EAAM,KAAK,EAAE,SAAS,MAAM,EAExD,GAAKQ,EAAOD,CAAO,EAgBjB,OAAOA,EAhBa,CACpB,GAAIL,GACa,CACb,GAAGA,EAAkB,MACrB,GAAGA,EAAkB,IACvB,EAEW,KAAMO,GAAUF,EAAQ,SAASE,CAAK,CAAC,EAChD,OAAOF,EAIX,IAAMG,EAAY,IAAIP,EAAUH,EAAM,EAAE,EAExC,OAAOU,EAAU,SAAS,EAAIA,EAAU,SAAS,EAAE,EAAIV,CACzD,CAGF,MAAQ,CACN,OAAOA,CACT,CAEF,UACA,QACE,OAAOA,CACX,CACF",
  "names": ["BigNumber", "decodeByMethod", "data", "decodeMethod", "transactionTokens", "BigNumber", "bech32Encoded", "Address", "addressIsValid", "decoded", "isUtf8", "token", "bigNumber"]
}
