{"version":3,"file":"index.cjs","sources":["../../../../packages/sdk/utils/image.utils.ts","../../../../packages/sdk/utils/protobuf.utils.ts","../../../../packages/sdk/utils/string.utils.ts","../../../../packages/sdk/utils/serialization.ts","../../../../packages/sdk/utils/balance.utils.ts"],"sourcesContent":["import { CollectionSchemaVersion } from '@unique-nft/sdk/types';\n\nconst getImageUrlForImageUrlSchema = ({\n  tokenId,\n  offchainSchema,\n}: {\n  tokenId: number;\n  offchainSchema?: string;\n}): string | null => {\n  const urlTemplate = offchainSchema;\n\n  if (urlTemplate && urlTemplate.includes('{id}')) {\n    return urlTemplate.replace('{id}', tokenId.toString());\n  }\n\n  return null;\n};\n\nconst getImageUrlForUniqueSchema = ({\n  decodedConstData = {},\n}: {\n  /* eslint-disable  @typescript-eslint/no-explicit-any */\n  decodedConstData: Record<string, any>;\n}): string | null => {\n  const { ipfsJson } = decodedConstData;\n\n  if (!ipfsJson || typeof ipfsJson !== 'string') return null;\n\n  try {\n    const { ipfs: ipfsCid } = JSON.parse(ipfsJson) as {\n      ipfs?: string;\n    };\n\n    if (ipfsCid) {\n      return ipfsCid;\n    }\n  } catch (e) {\n    // do nothing\n  }\n\n  return null;\n};\n\nexport const getTokenUrl = ({\n  schemaVersion,\n  offchainSchema,\n  tokenId,\n  decodedConstData,\n}: {\n  schemaVersion?: string;\n  offchainSchema?: string;\n  tokenId: number;\n  /* eslint-disable  @typescript-eslint/no-explicit-any */\n  decodedConstData?: Record<string, any>;\n}): string | null => {\n  if (schemaVersion === CollectionSchemaVersion.ImageURL) {\n    return getImageUrlForImageUrlSchema({ offchainSchema, tokenId });\n  }\n  if (schemaVersion === CollectionSchemaVersion.Unique && decodedConstData) {\n    return getImageUrlForUniqueSchema({ decodedConstData });\n  }\n\n  return null;\n};\n","import { Root, INamespace } from 'protobufjs';\n\nexport function serializeConstData(\n  /* eslint-disable  @typescript-eslint/no-explicit-any */\n  payload: Record<string, any>,\n  schema: INamespace,\n): Uint8Array {\n  const root = Root.fromJSON(schema);\n  const NFTMeta = root.lookupType('onChainMetaData.NFTMeta');\n\n  const transformedPayload = { ...NFTMeta.fromObject(payload) };\n\n  const errMsg = NFTMeta.verify(transformedPayload);\n  if (errMsg) throw Error(errMsg);\n\n  const message = NFTMeta.create(transformedPayload);\n\n  // todo - finish() should return Uint8Array, but in fact return Buffer, so we use this workaround for now\n  return Uint8Array.from(NFTMeta.encode(message).finish());\n}\n\nexport const decodeConstData = (\n  tokenConstData: Uint8Array,\n  schema: INamespace,\n  /* eslint-disable  @typescript-eslint/no-explicit-any */\n): Record<string, any> => {\n  const root = Root.fromJSON(schema);\n\n  const NFTMeta = root.lookupType('onChainMetaData.NFTMeta');\n  const parsedToken = NFTMeta.decode(tokenConstData);\n\n  return NFTMeta.toObject(parsedToken, { enums: String });\n};\n","import type { Bytes } from '@polkadot/types-codec';\nimport { hexToString } from '@polkadot/util';\nimport {\n  cryptoWaitReady,\n  decodeAddress,\n  encodeAddress,\n} from '@polkadot/util-crypto';\nimport { Address } from '@unique-nft/sdk/types';\n\nexport const utf16ToString = (input: Array<{ toNumber(): number }>): string =>\n  String.fromCharCode(\n    ...input.map((char) => char.toNumber()).filter((num) => num),\n  );\n\nexport function stringToUTF16(input: string): number[] {\n  return Array.from(input).map((x) => x.charCodeAt(0));\n}\n\nexport function bytesToString(input: Bytes): string {\n  return hexToString(input.toHex());\n}\n\n/* eslint-disable  @typescript-eslint/no-explicit-any */\nexport function bytesToJson(input: Bytes): any | undefined {\n  try {\n    return JSON.parse(bytesToString(input));\n  } catch (e) {\n    return undefined;\n  }\n}\n\nexport function normalizeAddress(address: Address, ss58Format?: number) {\n  return encodeAddress(decodeAddress(address), ss58Format);\n}\n\nexport async function normalizeAddressAsync(\n  address: Address,\n  ss58Format?: number,\n): Promise<string> {\n  await cryptoWaitReady();\n\n  return normalizeAddress(address, ss58Format);\n}\n","/* eslint-disable  @typescript-eslint/no-use-before-define */\nimport { Codec } from '@polkadot/types-codec/types';\n\nfunction serializeCodec(data: Codec): object {\n  return {\n    rawType: data.toRawType(),\n    isEmpty: data.isEmpty,\n    hash: data.hash?.toHex(),\n    human: data.toHuman ? data.toHuman() : undefined,\n    json: data.toJSON ? data.toJSON() : undefined,\n    hex: data.toHex ? data.toHex() : undefined,\n  };\n}\n\nfunction serializeObject(data: any): any {\n  if ('toRawType' in data) {\n    return serializeCodec(data as Codec);\n  }\n\n  if (Array.isArray(data)) {\n    return data.map((value) => serialize(value));\n  }\n\n  return Object.keys(data).reduce(\n    (serializedData: any, key: string): object => {\n      // eslint-disable-next-line  no-param-reassign\n      serializedData[key] = serialize(data[key]);\n      return serializedData;\n    },\n    {},\n  );\n}\n\nexport function serialize(data: any): any {\n  if (data == null) return null;\n\n  switch (typeof data) {\n    case 'string':\n    case 'number':\n    case 'boolean':\n    case 'undefined':\n      return data;\n    case 'bigint':\n      return data.toString();\n    case 'object':\n      return serializeObject(data);\n    default:\n      return undefined;\n  }\n}\n","import { INumber } from '@polkadot/types-codec/types';\nimport { Balance } from '@unique-nft/sdk/types';\nimport { ApiPromise } from '@polkadot/api';\nimport { formatBalance as polkadotFormatBalance } from '@polkadot/util';\n\ntype FormatOptions = {\n  decimals: number;\n  unit: string;\n};\n\nconst getOptions = (\n  apiOrOptions: ApiPromise | FormatOptions,\n): FormatOptions => {\n  if ('registry' in apiOrOptions) {\n    return {\n      decimals: apiOrOptions.registry.chainDecimals[0],\n      unit: apiOrOptions.registry.chainTokens[0],\n    };\n  }\n\n  return apiOrOptions;\n};\n\ntype AnyNumber = INumber | number | string;\n\nconst getAmount = (raw: string, decimals: number): string => {\n  if (raw === '0') return '0';\n\n  if (decimals >= raw.length) {\n    return `0.${raw.padStart(decimals, '0')}`;\n  }\n\n  const dotPosition = raw.length - decimals;\n\n  let decimalPart = raw.slice(dotPosition).replace(/0+$/, '');\n  if (decimalPart.length) decimalPart = `.${decimalPart}`;\n\n  return raw.slice(0, dotPosition) + decimalPart;\n};\n\nexport function formatBalance(options: FormatOptions, raw: AnyNumber): Balance;\nexport function formatBalance(api: ApiPromise, raw: AnyNumber): Balance;\nexport function formatBalance(\n  apiOrOptions: ApiPromise | FormatOptions,\n  num: AnyNumber,\n): Balance {\n  const options = getOptions(apiOrOptions);\n  const { decimals } = options;\n\n  let sign = '';\n  let text = num.toString();\n\n  if (text[0] === '-') {\n    sign = '-';\n    text = text.slice(1);\n  }\n\n  if (text.length === 0) text = '0';\n\n  const amount = sign + getAmount(text, decimals);\n  const formatted = polkadotFormatBalance(num, { decimals, withUnit: false });\n  const raw = sign + text;\n\n  return {\n    raw,\n    amount,\n    formatted,\n    ...options,\n  };\n}\n"],"names":["CollectionSchemaVersion","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","Root","hexToString","encodeAddress","decodeAddress","cryptoWaitReady","polkadotFormatBalance"],"mappings":"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"}