{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {constants, Address} from '@unique-nft/utils'\nexport {constants}\n\nimport type {ethers as _Ethers, Signer} from 'ethers'\ntype Ethers = typeof _Ethers\ntype SignerOrProvider = Signer | _Ethers.Provider | _Ethers.Wallet\n\nimport type {\n  CollectionHelpers,\n  ContractHelpers,\n  UniqueNFT,\n  UniqueFungible,\n  UniqueRefungible,\n  UniqueRefungibleToken,\n} from '../dist/ethers'\n\nexport type {\n  CollectionHelpers,\n  ContractHelpers,\n  UniqueNFT,\n  UniqueFungible,\n  UniqueRefungible,\n  UniqueRefungibleToken,\n}\n\nconst getEthers = async (ethers?: Ethers): Promise<Ethers> => {\n  if (ethers) return ethers\n  return (await import('ethers')).ethers\n}\n\nconst collectionIdOrAddressToAddress = (collectionIdOrAddress: number | string | unknown): string => {\n  if (typeof collectionIdOrAddress === 'number') {\n    return Address.collection.idToAddress(collectionIdOrAddress)\n  } else if (typeof collectionIdOrAddress === 'string') {\n    Address.validate.collectionAddress(collectionIdOrAddress)\n    return collectionIdOrAddress\n  } else {\n    throw new Error('Collection ID or address must be a number or a string')\n  }\n}\n\nexport type RefungibleTokenCollectionAndTokenId = {\n  collectionId: number | string\n  tokenId: number\n}\nconst tokenIdOrAddressToAddress = (tokenIdOrAddress: RefungibleTokenCollectionAndTokenId | string): string => {\n  if (typeof tokenIdOrAddress === 'string') {\n    Address.validate.collectionAddress(tokenIdOrAddress)\n    return tokenIdOrAddress\n  }\n  if (typeof tokenIdOrAddress !== 'object' || tokenIdOrAddress === null) {\n    throw new Error('tokenIdOrAddress must be a string or a valid object with collectionId and tokenId')\n  }\n  let collectionId = typeof tokenIdOrAddress.collectionId === 'number'\n    ? tokenIdOrAddress.collectionId\n    : Address.collection.addressToId(tokenIdOrAddress.collectionId)\n\n  return Address.nesting.idsToAddress(collectionId, tokenIdOrAddress.tokenId)\n}\n\n\n\nexport const CollectionHelpersFactory = async (signerOrProvider: SignerOrProvider, ethers?: Ethers) => {\n  const ethersLib = await getEthers(ethers)\n\n  return new ethersLib.Contract(\n    constants.STATIC_ADDRESSES.collectionHelpers,\n    (await import('../dist/abi/CollectionHelpers.json')).default,\n    signerOrProvider,\n  ) as unknown as CollectionHelpers\n}\n\nexport const ContractHelpersFactory = async (signerOrProvider: SignerOrProvider, ethers?: Ethers) => {\n  const ethersLib = await getEthers(ethers)\n\n  return new ethersLib.Contract(\n    constants.STATIC_ADDRESSES.contractHelpers,\n    (await import('../dist/abi/ContractHelpers.json')).default,\n    signerOrProvider\n  ) as unknown as ContractHelpers\n}\n\nexport const UniqueNFTFactory = async (collectionIdOrAddress: number | string, signerOrProvider: SignerOrProvider, ethers?: Ethers) => {\n  const ethersLib = await getEthers(ethers)\n\n  return new ethersLib.Contract(\n    collectionIdOrAddressToAddress(collectionIdOrAddress),\n    (await import('../dist/abi/UniqueNFT.json')).default,\n    signerOrProvider\n  ) as unknown as UniqueNFT\n}\n\nexport const UniqueFungibleFactory = async (collectionIdOrAddress: number | string, signerOrProvider: SignerOrProvider, ethers?: Ethers) => {\n  const ethersLib = await getEthers(ethers)\n\n  return new ethersLib.Contract(\n    collectionIdOrAddressToAddress(collectionIdOrAddress),\n    (await import('../dist/abi/UniqueFungible.json')).default,\n    signerOrProvider\n  ) as unknown as UniqueFungible\n}\n\nexport const UniqueRefungibleFactory = async (collectionIdOrAddress: number | string, signerOrProvider: SignerOrProvider, ethers?: Ethers) => {\n  const ethersLib = await getEthers(ethers)\n\n  return new ethersLib.Contract(\n    collectionIdOrAddressToAddress(collectionIdOrAddress),\n    (await import('../dist/abi/UniqueRefungible.json')).default,\n    signerOrProvider\n  ) as unknown as UniqueFungible\n}\n\nexport const UniqueRefungibleTokenFactory = async (tokenIdOrAddress: RefungibleTokenCollectionAndTokenId | string, signerOrProvider: SignerOrProvider, ethers?: Ethers) => {\n  const ethersLib = await getEthers(ethers)\n\n  const address = tokenIdOrAddressToAddress(tokenIdOrAddress)\n\n  return new ethersLib.Contract(\n    collectionIdOrAddressToAddress(address),\n    (await import('../dist/abi/UniqueRefungibleToken.json')).default,\n    signerOrProvider\n  ) as unknown as UniqueRefungibleToken\n}\n\nimport type {ContractTransactionReceipt, EventLog, Log} from 'ethers'\n\nconst isEventLog = (log: Log | EventLog): log is EventLog => {\n  return !!(log as EventLog).fragment\n}\n\nexport const parseEthersV6TxReceipt = <ParsedEvents extends Record<string, any>>(tx: ContractTransactionReceipt, options = {decimals: 18}) => {\n  const eventLogs = (tx.logs || []).filter(isEventLog);\n\n  const events = Object.fromEntries(eventLogs.map((event, index) => {\n    const name = event.fragment?.name || `event_${index.toString().padStart(4, '0')}`\n    const args = event.args ? event.args.toObject() : {}\n\n    return [name, args];\n  })) as ParsedEvents\n\n  const rawPrice = tx.gasUsed * tx.gasPrice\n  const priceStr = rawPrice.toString().padStart(options.decimals + 1, '0')\n  const price = parseFloat([priceStr.slice(0, -options.decimals), '.', priceStr.slice(-options.decimals)].join(''))\n\n  return {\n    get tx() {\n      return tx\n    },\n    from: tx.from,\n    to: tx.to,\n    rawPrice,\n    price,\n    rawEvents: tx.logs || [],\n    events,\n    gasUsed: tx.gasUsed,\n    cumulativeGasUsed: tx.cumulativeGasUsed,\n    effectiveGasPrice: tx.gasPrice,\n  }\n}\n\n"],"mappings":"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","names":[]}