UNPKG

create-web3-dapp-dev

Version:

<p align="center"> <br /> <a href="https://createweb3dapp.alchemy.com"> <img src=".github/images/cw3d-logo.png" width="200" alt=""/></a> <br /> </p>

79 lines (75 loc) 1.97 kB
import { SmartContractStandard } from "./utils/smartContractStandards.js"; import { ERC721smartContractInfo } from "../../interfaces/ERC721smartContractInfo.js"; import { SmartContractInfo } from "../../interfaces/SmartContractInfo.js"; import { ERC20smartContractInfo } from "../../interfaces/ERC20smartContractInfo.js"; import { ERC1155smartContractInfo } from "../../interfaces/ERC1155smartContractInfo.js"; export const generateContractInfo = ( contractName: string, symbol: string, standard: SmartContractStandard, selectedLibraries: string[] ): SmartContractInfo => { const name = `${contractName.slice(0, 1).toUpperCase()}${contractName.slice( 1 )}`; let contractInfo: | ERC721smartContractInfo | ERC1155smartContractInfo | ERC20smartContractInfo; switch (standard) { case SmartContractStandard.ERC721: contractInfo = { name, symbol: symbol, standard: standard, isMintable: true, isBurnable: false, isPausable: false, isVotes: false, isOwnable: false, isRoles: false, isAutoIncrement: true, isEnumerable: false, isURIStorage: false, }; break; case SmartContractStandard.ERC20: contractInfo = { name, symbol: symbol, standard: standard, isMintable: true, isBurnable: false, isPausable: false, isVotes: false, isFlashMint: false, isSnapshots: false, isOwnable: false, isRoles: false, }; break; case SmartContractStandard.ERC1155: contractInfo = { name, symbol: symbol, standard: standard, isMintable: true, isBurnable: false, isPausable: false, isVotes: false, isOwnable: false, isRoles: false, supply: true, }; break; } if (selectedLibraries && selectedLibraries.length) { for (const library of selectedLibraries) { contractInfo[library] = true; } } if (contractInfo.isOwnable && contractInfo.isRoles) { contractInfo.isOwnable = false; } return contractInfo; };