{"version":3,"file":"static/js/4101.b9b41398.chunk.js","mappings":"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","sources":["helpers/contracts/erc721.ts","helpers/contracts/reward.ts"],"sourcesContent":["import { ContractTransaction, ethers } from \"ethers\";\nimport CollectionErc1155Json from \"../../contracts/ERC1155/erc1155.json\";\nimport CollectionErc721Json from \"../../contracts/ERC721Collection.sol/ERC721Collection.json\";\n\nconst { abi: collectionErc721ABI } = CollectionErc721Json;\nconst { abi: collectionErc1155ABI } = CollectionErc1155Json;\n\nexport function getNftContract(provider: any, address: string) {\n return new ethers.Contract(address, collectionErc721ABI, provider);\n}\n\nexport async function ensureApproved(\n signer: ethers.providers.JsonRpcSigner,\n tokenAddress: string,\n targetAddress: string,\n contractInterface?: string,\n) {\n const contractCollection = new ethers.Contract(\n tokenAddress,\n contractInterface === (\"ERC1155\" || 2) ? collectionErc1155ABI : collectionErc721ABI,\n signer,\n );\n\n const account = await signer.getAddress();\n const isApproved = await contractCollection.isApprovedForAll(account, targetAddress);\n\n if (!isApproved) {\n const tx = await contractCollection.setApprovalForAll(targetAddress, true);\n await tx.wait();\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n}\n\nexport async function isApprovedForAll(\n signer: ethers.providers.Web3Provider | ethers.providers.JsonRpcSigner,\n tokenAddress: string,\n account: string,\n operator: string,\n contractInterface?: string,\n) {\n const collectionContract = new ethers.Contract(\n tokenAddress,\n contractInterface === \"ERC1155\" ? collectionErc1155ABI : collectionErc721ABI,\n signer,\n );\n\n return collectionContract.isApprovedForAll(account, operator);\n}\n\nexport async function getCollectionDetail(\n providers: ethers.providers.Web3Provider,\n nftAddress: string,\n) {\n const collection = new ethers.Contract(nftAddress, collectionErc721ABI, providers);\n const name = await collection.name();\n const symbol = await collection.symbol();\n const totalSupply = await collection.totalSupply();\n return { name, symbol, totalSupply: totalSupply.toNumber() };\n}\n\nexport async function getMintedIdsFromTransaction(tx: ContractTransaction): Promise {\n const txReceipt = await tx.wait();\n const transferEvents = txReceipt.events?.filter(\n (e) => e.event === \"Transfer\" && e.args?.from === ethers.constants.AddressZero,\n );\n const transferIds = transferEvents?.map((e) => e.args?.tokenId);\n\n return transferIds || [];\n}\n\nexport async function getErc721Balance(\n providers: ethers.providers.Web3Provider | ethers.providers.JsonRpcSigner,\n tokenAddress: string,\n account: string,\n) {\n const contract = getNftContract(providers, tokenAddress);\n return contract.balanceOf(account);\n}\n\nexport async function getNftOwner(\n providers: ethers.providers.Web3Provider | ethers.providers.JsonRpcSigner,\n tokenAddress: string,\n tokenId: string,\n) {\n const contract = getNftContract(providers, tokenAddress);\n return contract.ownerOf(tokenId);\n}\n\nfunction checkApprovedClosure() {\n const cache: Map> = new Map();\n\n const isApproved = async function isApproved(\n signer: ethers.providers.JsonRpcSigner,\n tokenAddress: string,\n targetAddress: string,\n ): Promise {\n if (!signer) return false;\n\n const userAddress = await signer.getAddress();\n\n const key = `${tokenAddress}-${userAddress}-${targetAddress}`;\n\n if (cache.has(key)) {\n return cache.get(key) as Promise;\n }\n\n const checkApprovedPromise = isApprovedForAll(signer, tokenAddress, userAddress, targetAddress);\n\n cache.set(key, checkApprovedPromise);\n return cache.get(key) as Promise;\n };\n\n const update = function updateCache(\n signer: ethers.providers.JsonRpcSigner,\n tokenAddress: string,\n targetAddress: string,\n isApproved: boolean,\n ) {\n const userAddress = signer.getAddress();\n const key = `${tokenAddress}-${userAddress}-${targetAddress}`;\n cache.set(key, Promise.resolve(isApproved));\n };\n\n return {\n update,\n isApproved,\n };\n}\n\nexport const approveCache = checkApprovedClosure();\n","import { BigNumber, ethers } from \"ethers\";\nimport { toast } from \"react-toastify\";\nimport { ChainId } from \"../../components/CreateCollection\";\nimport rewardJson from \"../../contracts/new/Reward.json\";\nimport { chainConfig } from \"../../siteConfig/chains\";\nimport { getDecimals } from \"./erc20\";\n\nconst { abi: RewardABI } = rewardJson;\n\nexport const rewardTokenDecimals = process.env.REWARD_TOKEN_DECIMALS;\n\nexport async function getRewardContract(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n) {\n return new ethers.Contract(\n chainConfig[chainId as ChainId].address.marketReward,\n RewardABI,\n provider,\n );\n}\n\nexport async function getCollectionToTier(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n address: string,\n) {\n try {\n if (!address || !provider) return;\n const contract = await getRewardContract(chainId, provider);\n return await contract.collectionToTier(address);\n } catch (error) {\n console.log(error);\n }\n}\n\nexport async function getTier(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n address: string,\n id: number,\n) {\n try {\n if (!address || !provider) return;\n const contract = await getRewardContract(chainId, provider);\n return await contract.tiers(id, address);\n } catch (error) {\n console.log(error);\n }\n}\n\nexport async function calculateReward(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n collectionAddress: string,\n currencyAddress: string,\n price: number,\n) {\n try {\n if (!collectionAddress || !currencyAddress || !provider) return;\n const contract = await getRewardContract(chainId, provider);\n const tier = await contract.collectionToTier(collectionAddress);\n const tierInfo = await contract.tiers(tier, currencyAddress);\n const rewardToken = await contract?.rewardToken();\n const decimal = await getDecimals(provider, rewardToken);\n\n const {\n seller,\n buyer,\n collectionOwner,\n }: { seller: BigNumber; buyer: BigNumber; collectionOwner: BigNumber } = tierInfo;\n\n const sellerReward = ethers.utils.formatUnits(seller, 18);\n\n const buyerReward = ethers.utils.formatUnits(buyer, 18);\n const collectionOwnerReward = ethers.utils.formatUnits(collectionOwner, decimal);\n\n return { sellerReward, buyerReward, collectionOwnerReward };\n } catch (error) {\n console.log(error);\n return { sellerReward: \"0\", buyerReward: \"0\", collectionOwnerReward: \"0\" };\n }\n}\n\nexport async function claimReward(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n) {\n try {\n if (!provider) return;\n const contract = await getRewardContract(chainId, provider);\n return await contract.claim();\n } catch (error: any) {\n console.log(error);\n toast.error(error?.message);\n }\n}\n\nexport async function balanceReward(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n address: string,\n) {\n try {\n if (!provider || !address) return;\n const contract = await getRewardContract(chainId, provider);\n return await contract.balanceOf(address);\n } catch (error) {\n console.log(error);\n }\n}\n\nexport async function getReward(\n chainId: number,\n provider: ethers.providers.JsonRpcSigner | ethers.providers.Web3Provider,\n address: string,\n currency: string,\n) {\n try {\n const tier = await getCollectionToTier(chainId, provider, address);\n return await getTier(chainId, provider, currency, tier);\n } catch (error) {\n console.log(error);\n }\n}\n"],"names":["abi","collectionErc721ABI","CollectionErc721Json","collectionErc1155ABI","CollectionErc1155Json","getNftContract","provider","address","ethers","async","ensureApproved","signer","tokenAddress","targetAddress","contractInterface","contractCollection","account","getAddress","isApprovedForAll","tx","setApprovalForAll","wait","Promise","resolve","setTimeout","operator","getCollectionDetail","providers","nftAddress","collection","name","symbol","totalSupply","toNumber","getMintedIdsFromTransaction","_txReceipt$events","transferEvents","events","filter","e","_e$args","event","args","from","map","_e$args2","tokenId","getErc721Balance","balanceOf","getNftOwner","ownerOf","cache","Map","checkApprovedClosure","RewardABI","rewardJson","getRewardContract","chainId","chainConfig","marketReward","calculateReward","collectionAddress","currencyAddress","price","contract","tier","collectionToTier","tierInfo","tiers","rewardToken","decimal","getDecimals","seller","buyer","collectionOwner","sellerReward","buyerReward","collectionOwnerReward","error","console","log","balanceReward","getReward","currency","getCollectionToTier","id","getTier"],"sourceRoot":""}