{"version":3,"sources":["MintCountdown.tsx","MintButton.tsx","Home.tsx","App.tsx","reportWebVitals.ts","index.tsx","utils.ts","connection.tsx","candy-machine.ts"],"names":["useStyles","makeStyles","theme","createStyles","root","display","padding","spacing","margin","width","height","flexDirection","alignContent","alignItems","justifyContent","background","color","borderRadius","fontSize","done","marginBottom","fontWeight","item","MintCountdown","date","status","style","onComplete","classes","renderer","days","hours","minutes","seconds","completed","className","Paper","elevation","CTAButton","styled","Button","MintButton","onMint","candyMachine","isMinting","setIsMinting","isActive","wallet","useWallet","connection","useConnection","useState","verified","setVerified","useGateway","requestGatewayToken","gatewayStatus","webSocketSubscriptionId","setWebSocketSubscriptionId","clicked","setClicked","useEffect","mint","a","removeAccountChangeListener","previousGatewayStatus","value","ref","useRef","current","usePrevious","fromStates","GatewayStatus","NOT_REQUESTED","REFRESH_TOKEN_REQUIRED","invalidToStates","UNKNOWN","find","state","console","log","disabled","onClick","gatekeeper","network","gatekeeperNetwork","toBase58","ACTIVE","findGatewayToken","publicKey","gatewayToken","isValid","window","open","getGatewayTokenAddressForOwnerAndGatekeeperNetwork","gatewayTokenAddress","onGatewayTokenChange","Error","variant","isSoldOut","CircularProgress","isPresale","isWhitelistOnly","ConnectButton","WalletDialogButton","MintContainer","div","getCountdownDate","endSettings","endSettingType","toDate","number","goLiveDate","anchor","Date","getTime","undefined","Home","props","isUserMinting","setIsUserMinting","setCandyMachine","message","severity","alertState","setAlertState","setIsActive","endDate","setEndDate","itemsRemaining","setItemsRemaining","isWhitelistUser","setIsWhitelistUser","setIsPresale","discountPrice","setDiscountPrice","needTxnSplit","setNeedTxnSplit","setupTxn","setSetupTxn","rpcUrl","rpcHost","anchorWallet","useMemo","signAllTransactions","signTransaction","refreshCandyMachineState","useCallback","candyMachineId","getCandyMachineState","cndy","active","toNumber","presale","whitelistMintSettings","PublicKey","getAtaForMint","token","getTokenAccountBalance","balance","valid","parseInt","amount","limit","Math","min","itemsAvailable","itemsRedeemed","getCollectionPDA","collectionPDA","program","provider","getAccountInfo","collectionPDAAccount","txnEstimate","retainAuthority","tokenMint","mode","burnEveryTime","expireOnUse","noHide","startsWith","beforeTransactions","afterTransactions","document","getElementById","click","connected","createAccountsForMint","setupMint","err","transaction","awaitTransactionSignatureConfirmation","txTimeout","mintOneToken","mintOne","mintTxId","remaining","msg","code","location","reload","indexOf","toggleMintButton","now","Container","marginTop","maxWidth","position","paddingBottom","backgroundColor","boxShadow","Grid","container","direction","wrap","xs","Typography","formatNumber","asNumber","price","align","CANDY_MACHINE_PROGRAM","clusterUrl","handleTransaction","signatures","sig","equals","sendTransaction","error","broadcastTransaction","options","autoShowModal","val","Snackbar","autoHideDuration","onClose","Alert","createTheme","palette","type","process","e","getCandyMachineId","Connection","App","endpoint","clusterApiUrl","wallets","getPhantomWallet","getSolflareWallet","getSlopeWallet","getSolletWallet","getSolletExtensionWallet","ThemeProvider","ConnectionProvider","WalletProvider","autoConnect","DEFAULT_TIMEOUT","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","numberFormater","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","LAMPORTS_PER_SOL","SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID","CIVIC","buyer","findProgramAddress","toBuffer","TOKEN_PROGRAM_ID","getNetworkExpire","Buffer","from","getNetworkToken","SequenceType","getErrorForTransaction","txid","confirmTransaction","getParsedConfirmedTransaction","tx","errors","meta","logMessages","forEach","m","regex","exec","index","lastIndex","length","push","sendTransactions","instructionSet","signersSet","sequenceType","Parallel","commitment","successCallback","ind","failCallback","block","WalletNotConnectedError","unsignedTxns","getRecentBlockhash","i","instructions","signers","Transaction","instruction","add","recentBlockhash","blockhash","setSigners","map","s","partialSign","partiallySignedTransactions","filter","t","fullySignedTransactions","signedTxns","concat","pendingTxns","signedTxnPromise","sendSignedTransaction","signedTransaction","slot","StopOnFailure","Promise","all","txs","result","awaitConfirmation","includesFeePayer","rawTransaction","serialize","skipPreflight","sendRawTransaction","confirmation","getUnixTs","timeout","startTime","sleep","simulateResult","simulateTransaction","logs","line","slice","JSON","stringify","_recentBlockhash","_disableBlockhashCaching","signData","serializeMessage","wireTransaction","_serialize","encodedTransaction","toString","args","encoding","_rpcRequest","res","queryStatus","confirmations","subId","resolve","reject","setTimeout","onSignature","context","getSignatureStatuses","signatureStatuses","_signatureSubscriptions","removeSignatureListener","ms","TOKEN_METADATA_PROGRAM_ID","createAssociatedTokenAccountInstruction","associatedTokenAddress","payer","walletAddress","splTokenMintAddress","keys","pubkey","isSigner","isWritable","SystemProgram","programId","SYSVAR_RENT_PUBKEY","TransactionInstruction","data","preflightCommitment","fetchIdl","idl","account","fetch","id","authority","treasury","hiddenSettings","getMasterEdition","getMetadata","getCandyMachineCreator","candyMachineAddress","getCollectionAuthorityRecordPDA","newAuthority","Keypair","generate","userTokenAccountAddress","MintLayout","span","getMinimumBalanceForRentExemption","fromPubkey","newAccountPubkey","space","lamports","createAccount","Token","createInitMintInstruction","createMintToInstruction","userTokenAccount","setupState","userPayingAccountAddress","remainingAccounts","cleanupInstructions","whitelistToken","whitelistBurnAuthority","createApproveInstruction","createRevokeInstruction","transferAuthority","metadataAddress","masterEdition","candyMachineCreator","creatorBump","rm","mintNft","accounts","metadata","mintAuthority","updateAuthority","tokenMetadataProgram","tokenProgram","systemProgram","rent","clock","SYSVAR_CLOCK_PUBKEY","recentBlockhashes","SYSVAR_SLOT_HASHES_PUBKEY","instructionSysvarAccount","SYSVAR_INSTRUCTIONS_PUBKEY","collectionPda","collectionData","collectionMint","collectionAuthorityRecord","collectionMetadata","collectionMasterEdition","setCollectionDuringMint","instructionsMatrix","signersMatrix"],"mappings":"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","file":"static/js/main.a8ebf811.chunk.js","sourcesContent":["import { Paper } from '@material-ui/core';\nimport Countdown from 'react-countdown';\nimport { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n padding: theme.spacing(0),\n '& > *': {\n margin: theme.spacing(0.4),\n width: theme.spacing(6),\n height: theme.spacing(6),\n display: 'flex',\n flexDirection: 'column',\n alignContent: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n background: '#384457',\n color: 'white',\n borderRadius: 5,\n fontSize: 10,\n },\n },\n done: {\n display: 'flex',\n margin: 0,\n marginBottom: theme.spacing(0.5),\n height: theme.spacing(3.5),\n padding: theme.spacing(1),\n flexDirection: 'column',\n alignContent: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n background: '#384457',\n color: 'white',\n borderRadius: 5,\n fontWeight: 'bold',\n fontSize: 18,\n },\n item: {\n fontWeight: 'bold',\n fontSize: 18,\n },\n }),\n);\n\ninterface MintCountdownProps {\n date: Date | undefined;\n style?: React.CSSProperties;\n status?: string;\n onComplete?: () => void;\n}\n\ninterface MintCountdownRender {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n completed: boolean;\n}\n\nexport const MintCountdown: React.FC = ({\n date,\n status,\n style,\n onComplete,\n}) => {\n const classes = useStyles();\n const renderCountdown = ({\n days,\n hours,\n minutes,\n seconds,\n completed,\n }: MintCountdownRender) => {\n hours += days * 24;\n if (completed) {\n return status ? {status} : null;\n } else {\n return (\n
\n \n \n {hours < 10 ? `0${hours}` : hours}\n \n hrs\n \n \n \n {minutes < 10 ? `0${minutes}` : minutes}\n \n mins\n \n \n \n {seconds < 10 ? `0${seconds}` : seconds}\n \n secs\n \n
\n );\n }\n };\n\n if (date) {\n return (\n \n );\n } else {\n return null;\n }\n};\n","import styled from 'styled-components';\nimport Button from '@material-ui/core/Button';\nimport { CandyMachineAccount } from './candy-machine';\nimport { CircularProgress } from '@material-ui/core';\nimport { GatewayStatus, useGateway } from '@civic/solana-gateway-react';\nimport { useEffect, useState, useRef } from 'react';\nimport { useConnection, useWallet } from '@solana/wallet-adapter-react';\nimport {\n findGatewayToken,\n getGatewayTokenAddressForOwnerAndGatekeeperNetwork,\n onGatewayTokenChange,\n removeAccountChangeListener,\n} from '@identity.com/solana-gateway-ts';\n\nexport const CTAButton = styled(Button)`\n width: 100%;\n height: 60px;\n margin-top: 10px;\n margin-bottom: 5px;\n border-radius: 200px;\n border: 3px solid #ffffff;\n background: linear-gradient(180deg, #e0fca6 0%, #b3f724 100%);\n radius:\n color: balck;\n font-size: 16px;\n font-weight: bold;\n`; // add your own styles here\n\nexport const MintButton = ({\n onMint,\n candyMachine,\n isMinting,\n setIsMinting,\n isActive,\n}: {\n onMint: () => Promise;\n candyMachine?: CandyMachineAccount;\n isMinting: boolean;\n setIsMinting: (val: boolean) => void;\n isActive: boolean;\n}) => {\n const wallet = useWallet();\n const connection = useConnection();\n const [verified, setVerified] = useState(false);\n const { requestGatewayToken, gatewayStatus } = useGateway();\n const [webSocketSubscriptionId, setWebSocketSubscriptionId] = useState(-1);\n const [clicked, setClicked] = useState(false);\n\n const getMintButtonContent = () => {\n if (candyMachine?.state.isSoldOut) {\n return 'SOLD OUT';\n } else if (isMinting) {\n return ;\n } else if (\n candyMachine?.state.isPresale ||\n candyMachine?.state.isWhitelistOnly\n ) {\n return 'WHITELIST MINT';\n }\n\n return 'MINT';\n };\n\n useEffect(() => {\n const mint = async () => {\n await removeAccountChangeListener(\n connection.connection,\n webSocketSubscriptionId,\n );\n await onMint();\n\n setClicked(false);\n setVerified(false);\n };\n if (verified && clicked) {\n mint();\n }\n }, [\n verified,\n clicked,\n connection.connection,\n onMint,\n webSocketSubscriptionId,\n ]);\n\n const previousGatewayStatus = usePrevious(gatewayStatus);\n useEffect(() => {\n const fromStates = [\n GatewayStatus.NOT_REQUESTED,\n GatewayStatus.REFRESH_TOKEN_REQUIRED,\n ];\n const invalidToStates = [...fromStates, GatewayStatus.UNKNOWN];\n if (\n fromStates.find(state => previousGatewayStatus === state) &&\n !invalidToStates.find(state => gatewayStatus === state)\n ) {\n setIsMinting(true);\n }\n console.log('change: ', gatewayStatus);\n }, [setIsMinting, previousGatewayStatus, gatewayStatus]);\n\n return (\n {\n if (candyMachine?.state.isActive && candyMachine?.state.gatekeeper) {\n const network =\n candyMachine.state.gatekeeper.gatekeeperNetwork.toBase58();\n if (network === 'ignREusXmGrscGNUesoU9mxfds9AiYTezUKex2PsZV6') {\n if (gatewayStatus === GatewayStatus.ACTIVE) {\n await onMint();\n } else {\n // setIsMinting(true);\n await requestGatewayToken();\n console.log('after: ', gatewayStatus);\n }\n } else if (\n network === 'ttib7tuX8PTWPqFsmUFQTj78MbRhUmqxidJRDv4hRRE' ||\n network === 'tibePmPaoTgrs929rWpu755EXaxC7M3SthVCf6GzjZt'\n ) {\n setClicked(true);\n const gatewayToken = await findGatewayToken(\n connection.connection,\n wallet.publicKey!,\n candyMachine.state.gatekeeper.gatekeeperNetwork,\n );\n\n if (gatewayToken?.isValid()) {\n await onMint();\n } else {\n window.open(\n `https://verify.encore.fans/?gkNetwork=${network}`,\n '_blank',\n );\n\n const gatewayTokenAddress =\n await getGatewayTokenAddressForOwnerAndGatekeeperNetwork(\n wallet.publicKey!,\n candyMachine.state.gatekeeper.gatekeeperNetwork,\n );\n\n setWebSocketSubscriptionId(\n onGatewayTokenChange(\n connection.connection,\n gatewayTokenAddress,\n () => setVerified(true),\n 'confirmed',\n ),\n );\n }\n } else {\n setClicked(false);\n throw new Error(`Unknown Gatekeeper Network: ${network}`);\n }\n } else {\n await onMint();\n setClicked(false);\n }\n }}\n variant=\"contained\"\n >\n {getMintButtonContent()}\n \n );\n};\n\nfunction usePrevious(value: T): T | undefined {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n","import { useEffect, useMemo, useState, useCallback } from 'react';\nimport * as anchor from '@project-serum/anchor';\n\nimport styled from 'styled-components';\nimport { Container, Snackbar } from '@material-ui/core';\nimport Paper from '@material-ui/core/Paper';\nimport Alert from '@material-ui/lab/Alert';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport { useWallet } from '@solana/wallet-adapter-react';\nimport { WalletDialogButton } from '@solana/wallet-adapter-material-ui';\nimport {\n awaitTransactionSignatureConfirmation,\n CandyMachineAccount,\n CANDY_MACHINE_PROGRAM,\n getCandyMachineState,\n mintOneToken,\n getCollectionPDA,\n SetupState,\n createAccountsForMint,\n} from './candy-machine';\nimport { AlertState, toDate, formatNumber, getAtaForMint } from './utils';\nimport { MintCountdown } from './MintCountdown';\nimport { MintButton } from './MintButton';\nimport { GatewayProvider } from '@civic/solana-gateway-react';\nimport { sendTransaction } from './connection';\n\nconst ConnectButton = styled(WalletDialogButton)`\n width: 100%;\n height: 60px;\n margin-top: 10px;\n margin-bottom: 5px;\n border-radius: 200px;\n border: 3px solid #ffffff;\n background: linear-gradient(180deg, #e0fca6 0%, #b3f724 100%);\n color: black;\n font-size: 16px;\n font-weight: bold;\n font-Family: Kanit,\n`;\n\n\n\n\nconst MintContainer = styled.div``; // add your owns styles here\n\nexport interface HomeProps {\n candyMachineId?: anchor.web3.PublicKey;\n connection: anchor.web3.Connection;\n txTimeout: number;\n rpcHost: string;\n}\n\nconst Home = (props: HomeProps) => {\n const [isUserMinting, setIsUserMinting] = useState(false);\n const [candyMachine, setCandyMachine] = useState();\n const [alertState, setAlertState] = useState({\n open: false,\n message: '',\n severity: undefined,\n });\n\n const [isActive, setIsActive] = useState(false);\n const [endDate, setEndDate] = useState();\n const [itemsRemaining, setItemsRemaining] = useState();\n const [isWhitelistUser, setIsWhitelistUser] = useState(false);\n const [isPresale, setIsPresale] = useState(false);\n const [discountPrice, setDiscountPrice] = useState();\n const [needTxnSplit, setNeedTxnSplit] = useState(true);\n const [setupTxn, setSetupTxn] = useState();\n\n const rpcUrl = props.rpcHost;\n const wallet = useWallet();\n\n const anchorWallet = useMemo(() => {\n if (\n !wallet ||\n !wallet.publicKey ||\n !wallet.signAllTransactions ||\n !wallet.signTransaction\n ) {\n return;\n }\n\n return {\n publicKey: wallet.publicKey,\n signAllTransactions: wallet.signAllTransactions,\n signTransaction: wallet.signTransaction,\n } as anchor.Wallet;\n }, [wallet]);\n\n const refreshCandyMachineState = useCallback(async () => {\n if (!anchorWallet) {\n return;\n }\n\n if (props.candyMachineId) {\n try {\n const cndy = await getCandyMachineState(\n anchorWallet,\n props.candyMachineId,\n props.connection,\n );\n let active =\n cndy?.state.goLiveDate?.toNumber() < new Date().getTime() / 1000;\n let presale = false;\n // whitelist mint?\n if (cndy?.state.whitelistMintSettings) {\n // is it a presale mint?\n if (\n cndy.state.whitelistMintSettings.presale &&\n (!cndy.state.goLiveDate ||\n cndy.state.goLiveDate.toNumber() > new Date().getTime() / 1000)\n ) {\n presale = true;\n }\n // is there a discount?\n if (cndy.state.whitelistMintSettings.discountPrice) {\n setDiscountPrice(cndy.state.whitelistMintSettings.discountPrice);\n } else {\n setDiscountPrice(undefined);\n // when presale=false and discountPrice=null, mint is restricted\n // to whitelist users only\n if (!cndy.state.whitelistMintSettings.presale) {\n cndy.state.isWhitelistOnly = true;\n }\n }\n // retrieves the whitelist token\n const mint = new anchor.web3.PublicKey(\n cndy.state.whitelistMintSettings.mint,\n );\n const token = (await getAtaForMint(mint, anchorWallet.publicKey))[0];\n\n try {\n const balance = await props.connection.getTokenAccountBalance(\n token,\n );\n let valid = parseInt(balance.value.amount) > 0;\n // only whitelist the user if the balance > 0\n setIsWhitelistUser(valid);\n active = (presale && valid) || active;\n } catch (e) {\n setIsWhitelistUser(false);\n // no whitelist user, no mint\n if (cndy.state.isWhitelistOnly) {\n active = false;\n }\n console.log('There was a problem fetching whitelist token balance');\n console.log(e);\n }\n }\n // datetime to stop the mint?\n if (cndy?.state.endSettings?.endSettingType.date) {\n setEndDate(toDate(cndy.state.endSettings.number));\n if (\n cndy.state.endSettings.number.toNumber() <\n new Date().getTime() / 1000\n ) {\n active = false;\n }\n }\n // amount to stop the mint?\n if (cndy?.state.endSettings?.endSettingType.amount) {\n let limit = Math.min(\n cndy.state.endSettings.number.toNumber(),\n cndy.state.itemsAvailable,\n );\n if (cndy.state.itemsRedeemed < limit) {\n setItemsRemaining(limit - cndy.state.itemsRedeemed);\n } else {\n setItemsRemaining(0);\n cndy.state.isSoldOut = true;\n }\n } else {\n setItemsRemaining(cndy.state.itemsRemaining);\n }\n\n if (cndy.state.isSoldOut) {\n active = false;\n }\n\n const [collectionPDA] = await getCollectionPDA(props.candyMachineId);\n const collectionPDAAccount =\n await cndy.program.provider.connection.getAccountInfo(collectionPDA);\n\n setIsActive((cndy.state.isActive = active));\n setIsPresale((cndy.state.isPresale = presale));\n setCandyMachine(cndy);\n\n const txnEstimate =\n 892 +\n (!!collectionPDAAccount && cndy.state.retainAuthority ? 182 : 0) +\n (cndy.state.tokenMint ? 177 : 0) +\n (cndy.state.whitelistMintSettings ? 33 : 0) +\n (cndy.state.whitelistMintSettings?.mode?.burnEveryTime ? 145 : 0) +\n (cndy.state.gatekeeper ? 33 : 0) +\n (cndy.state.gatekeeper?.expireOnUse ? 66 : 0);\n\n setNeedTxnSplit(txnEstimate > 1230);\n } catch (e) {\n if (e instanceof Error) {\n if (e.message === `Account does not exist ${props.candyMachineId}`) {\n setAlertState({\n open: true,\n message: `Couldn't fetch candy machine state from candy machine with address: ${props.candyMachineId}, using rpc: ${props.rpcHost}! You probably typed the REACT_APP_CANDY_MACHINE_ID value in wrong in your .env file, or you are using the wrong RPC!`,\n severity: 'error',\n noHide: true,\n });\n } else if (e.message.startsWith('failed to get info about account')) {\n setAlertState({\n open: true,\n message: `Couldn't fetch candy machine state with rpc: ${props.rpcHost}! This probably means you have an issue with the REACT_APP_SOLANA_RPC_HOST value in your .env file, or you are not using a custom RPC!`,\n severity: 'error',\n noHide: true,\n });\n }\n } else {\n setAlertState({\n open: true,\n message: `${e}`,\n severity: 'error',\n noHide: true,\n });\n }\n console.log(e);\n }\n } else {\n setAlertState({\n open: true,\n message: `Your REACT_APP_CANDY_MACHINE_ID value in the .env file doesn't look right! Make sure you enter it in as plain base-58 address!`,\n severity: 'error',\n noHide: true,\n });\n }\n }, [anchorWallet, props.candyMachineId, props.connection, props.rpcHost]);\n\n const onMint = async (\n beforeTransactions: Transaction[] = [],\n afterTransactions: Transaction[] = [],\n ) => {\n try {\n setIsUserMinting(true);\n document.getElementById('#identity')?.click();\n if (wallet.connected && candyMachine?.program && wallet.publicKey) {\n let setupMint: SetupState | undefined;\n if (needTxnSplit && setupTxn === undefined) {\n setAlertState({\n open: true,\n message: 'Please sign account setup transaction',\n severity: 'info',\n });\n setupMint = await createAccountsForMint(\n candyMachine,\n wallet.publicKey,\n );\n let status: any = { err: true };\n if (setupMint.transaction) {\n status = await awaitTransactionSignatureConfirmation(\n setupMint.transaction,\n props.txTimeout,\n props.connection,\n true,\n );\n }\n if (status && !status.err) {\n setSetupTxn(setupMint);\n setAlertState({\n open: true,\n message:\n 'Setup transaction succeeded! Please sign minting transaction',\n severity: 'info',\n });\n } else {\n setAlertState({\n open: true,\n message: 'Mint failed! Please try again!',\n severity: 'error',\n });\n setIsUserMinting(false);\n return;\n }\n } else {\n setAlertState({\n open: true,\n message: 'Please sign minting transaction',\n severity: 'info',\n });\n }\n\n let mintOne = await mintOneToken(\n candyMachine,\n wallet.publicKey,\n beforeTransactions,\n afterTransactions,\n setupMint ?? setupTxn,\n );\n const mintTxId = mintOne[0];\n\n let status: any = { err: true };\n if (mintTxId) {\n status = await awaitTransactionSignatureConfirmation(\n mintTxId,\n props.txTimeout,\n props.connection,\n true,\n );\n }\n\n if (status && !status.err) {\n // manual update since the refresh might not detect\n // the change immediately\n let remaining = itemsRemaining! - 1;\n setItemsRemaining(remaining);\n setIsActive((candyMachine.state.isActive = remaining > 0));\n candyMachine.state.isSoldOut = remaining === 0;\n setSetupTxn(undefined);\n setAlertState({\n open: true,\n message: 'Congratulations! Mint succeeded!',\n severity: 'success',\n });\n } else {\n setAlertState({\n open: true,\n message: 'Mint failed! Please try again!',\n severity: 'error',\n });\n }\n }\n } catch (error: any) {\n let message = error.msg || 'Minting failed! Please try again!';\n if (!error.msg) {\n if (!error.message) {\n message = 'Transaction timeout! Please try again.';\n } else if (error.message.indexOf('0x137')) {\n console.log(error);\n message = `SOLD OUT!`;\n } else if (error.message.indexOf('0x135')) {\n message = `Insufficient funds to mint. Please fund your wallet.`;\n }\n } else {\n if (error.code === 311) {\n console.log(error);\n message = `SOLD OUT!`;\n window.location.reload();\n } else if (error.code === 312) {\n message = `Minting period hasn't started yet.`;\n }\n }\n\n setAlertState({\n open: true,\n message,\n severity: 'error',\n });\n // updates the candy machine state to reflect the latest\n // information on chain\n refreshCandyMachineState();\n } finally {\n setIsUserMinting(false);\n }\n };\n\n const toggleMintButton = () => {\n let active = !isActive || isPresale;\n\n if (active) {\n if (candyMachine!.state.isWhitelistOnly && !isWhitelistUser) {\n active = false;\n }\n if (endDate && Date.now() >= endDate.getTime()) {\n active = false;\n }\n }\n\n if (\n isPresale &&\n candyMachine!.state.goLiveDate &&\n candyMachine!.state.goLiveDate.toNumber() <= new Date().getTime() / 1000\n ) {\n setIsPresale((candyMachine!.state.isPresale = false));\n }\n\n setIsActive((candyMachine!.state.isActive = active));\n };\n\n useEffect(() => {\n refreshCandyMachineState();\n }, [\n anchorWallet,\n props.candyMachineId,\n props.connection,\n refreshCandyMachineState,\n ]);\n\n return (\n \n \n \n {!wallet.connected ? (\n Connect Wallet\n ) : (\n <>\n {candyMachine && (\n \n \n \n Remaining\n \n \n {`${itemsRemaining}`}\n \n \n \n \n {isWhitelistUser && discountPrice\n ? 'Discount Price'\n : 'Price'}\n \n \n {isWhitelistUser && discountPrice\n ? `◎ ${formatNumber.asNumber(discountPrice)}`\n : `◎ ${formatNumber.asNumber(\n candyMachine.state.price,\n )}`}\n \n \n \n {isActive && endDate && Date.now() < endDate.getTime() ? (\n <>\n \n \n TO END OF MINT\n \n \n ) : (\n <>\n endDate.getTime())\n ? 'COMPLETED'\n : isPresale\n ? 'PRESALE'\n : 'LIVE'\n }\n onComplete={toggleMintButton}\n />\n {isPresale &&\n candyMachine.state.goLiveDate &&\n candyMachine.state.goLiveDate.toNumber() >\n new Date().getTime() / 1000 && (\n \n UNTIL PUBLIC MINT\n \n )}\n \n )}\n \n \n )}\n \n {candyMachine?.state.isActive &&\n candyMachine?.state.gatekeeper &&\n wallet.publicKey &&\n wallet.signTransaction ? (\n {\n setIsUserMinting(true);\n const userMustSign = transaction.signatures.find(sig =>\n sig.publicKey.equals(wallet.publicKey!),\n );\n if (userMustSign) {\n setAlertState({\n open: true,\n message: 'Please sign one-time Civic Pass issuance',\n severity: 'info',\n });\n try {\n transaction = await wallet.signTransaction!(\n transaction,\n );\n } catch (e) {\n setAlertState({\n open: true,\n message: 'User cancelled signing',\n severity: 'error',\n });\n // setTimeout(() => window.location.reload(), 2000);\n setIsUserMinting(false);\n throw e;\n }\n } else {\n setAlertState({\n open: true,\n message: 'Refreshing Civic Pass',\n severity: 'info',\n });\n }\n try {\n await sendTransaction(\n props.connection,\n wallet,\n transaction,\n [],\n true,\n 'confirmed',\n );\n setAlertState({\n open: true,\n message: 'Please sign minting',\n severity: 'info',\n });\n } catch (e) {\n setAlertState({\n open: true,\n message:\n 'Solana dropped the transaction, please try again',\n severity: 'warning',\n });\n console.error(e);\n // setTimeout(() => window.location.reload(), 2000);\n setIsUserMinting(false);\n throw e;\n }\n await onMint();\n }}\n broadcastTransaction={false}\n options={{ autoShowModal: false }}\n >\n setIsUserMinting(val)}\n onMint={onMint}\n isActive={isActive || (isPresale && isWhitelistUser)}\n />\n \n ) : (\n setIsUserMinting(val)}\n onMint={onMint}\n isActive={isActive || (isPresale && isWhitelistUser)}\n />\n )}\n \n \n )}\n \n \n \n \n\n setAlertState({ ...alertState, open: false })}\n >\n setAlertState({ ...alertState, open: false })}\n severity={alertState.severity}\n >\n {alertState.message}\n \n \n \n );\n};\n\nconst getCountdownDate = (\n candyMachine: CandyMachineAccount,\n): Date | undefined => {\n if (\n candyMachine.state.isActive &&\n candyMachine.state.endSettings?.endSettingType.date\n ) {\n return toDate(candyMachine.state.endSettings.number);\n }\n\n return toDate(\n candyMachine.state.goLiveDate\n ? candyMachine.state.goLiveDate\n : candyMachine.state.isPresale\n ? new anchor.BN(new Date().getTime() / 1000)\n : undefined,\n );\n};\n\nexport default Home;\n\n\n","import './App.css';\nimport { useMemo } from 'react';\nimport * as anchor from '@project-serum/anchor';\nimport Home from './Home';\nimport { DEFAULT_TIMEOUT } from './connection';\nimport { clusterApiUrl } from '@solana/web3.js';\nimport { WalletAdapterNetwork } from '@solana/wallet-adapter-base';\nimport {\n getPhantomWallet,\n getSlopeWallet,\n getSolflareWallet,\n getSolletWallet,\n getSolletExtensionWallet,\n} from '@solana/wallet-adapter-wallets';\n\nimport {\n ConnectionProvider,\n WalletProvider,\n} from '@solana/wallet-adapter-react';\nimport { WalletDialogProvider } from '@solana/wallet-adapter-material-ui';\n\nimport { ThemeProvider, createTheme } from '@material-ui/core';\n\nconst theme = createTheme({\n palette: {\n type: 'dark',\n },\n});\n\nconst getCandyMachineId = (): anchor.web3.PublicKey | undefined => {\n try {\n const candyMachineId = new anchor.web3.PublicKey(\n process.env.REACT_APP_CANDY_MACHINE_ID!,\n );\n\n return candyMachineId;\n } catch (e) {\n console.log('Failed to construct CandyMachineId', e);\n return undefined;\n }\n};\n\nconst candyMachineId = getCandyMachineId();\nconst network = process.env.REACT_APP_SOLANA_NETWORK as WalletAdapterNetwork;\nconst rpcHost = process.env.REACT_APP_SOLANA_RPC_HOST!;\nconst connection = new anchor.web3.Connection(\n rpcHost ? rpcHost : anchor.web3.clusterApiUrl('devnet'),\n);\n\nconst App = () => {\n const endpoint = useMemo(() => clusterApiUrl(network), []);\n\n const wallets = useMemo(\n () => [\n getPhantomWallet(),\n getSolflareWallet(),\n getSlopeWallet(),\n getSolletWallet({ network }),\n getSolletExtensionWallet({ network }),\n ],\n [],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nimport './index.css';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","import * as anchor from '@project-serum/anchor';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { SystemProgram } from '@solana/web3.js';\nimport {\n LAMPORTS_PER_SOL,\n SYSVAR_RENT_PUBKEY,\n TransactionInstruction,\n} from '@solana/web3.js';\n\nexport interface AlertState {\n open: boolean;\n message: string;\n severity: 'success' | 'info' | 'warning' | 'error' | undefined;\n noHide?: boolean;\n}\n\nexport const toDate = (value?: anchor.BN) => {\n if (!value) {\n return;\n }\n\n return new Date(value.toNumber() * 1000);\n};\n\nconst numberFormater = new Intl.NumberFormat('en-US', {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n});\n\nexport const formatNumber = {\n format: (val?: number) => {\n if (!val) {\n return '--';\n }\n\n return numberFormater.format(val);\n },\n asNumber: (val?: anchor.BN) => {\n if (!val) {\n return undefined;\n }\n\n return val.toNumber() / LAMPORTS_PER_SOL;\n },\n};\n\nexport const SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID =\n new anchor.web3.PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n\nexport const CIVIC = new anchor.web3.PublicKey(\n 'gatem74V238djXdzWnJf94Wo1DcnuGkfijbf3AuBhfs',\n);\n\nexport const getAtaForMint = async (\n mint: anchor.web3.PublicKey,\n buyer: anchor.web3.PublicKey,\n): Promise<[anchor.web3.PublicKey, number]> => {\n return await anchor.web3.PublicKey.findProgramAddress(\n [buyer.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID,\n );\n};\n\nexport const getNetworkExpire = async (\n gatekeeperNetwork: anchor.web3.PublicKey,\n): Promise<[anchor.web3.PublicKey, number]> => {\n return await anchor.web3.PublicKey.findProgramAddress(\n [gatekeeperNetwork.toBuffer(), Buffer.from('expire')],\n CIVIC,\n );\n};\n\nexport const getNetworkToken = async (\n wallet: anchor.web3.PublicKey,\n gatekeeperNetwork: anchor.web3.PublicKey,\n): Promise<[anchor.web3.PublicKey, number]> => {\n return await anchor.web3.PublicKey.findProgramAddress(\n [\n wallet.toBuffer(),\n Buffer.from('gateway'),\n Buffer.from([0, 0, 0, 0, 0, 0, 0, 0]),\n gatekeeperNetwork.toBuffer(),\n ],\n CIVIC,\n );\n};\n\nexport function createAssociatedTokenAccountInstruction(\n associatedTokenAddress: anchor.web3.PublicKey,\n payer: anchor.web3.PublicKey,\n walletAddress: anchor.web3.PublicKey,\n splTokenMintAddress: anchor.web3.PublicKey,\n) {\n const keys = [\n {\n pubkey: payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: associatedTokenAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: walletAddress,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: splTokenMintAddress,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: TOKEN_PROGRAM_ID,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n ];\n return new TransactionInstruction({\n keys,\n programId: SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID,\n data: Buffer.from([]),\n });\n}\n","import {\n Keypair,\n Commitment,\n Connection,\n RpcResponseAndContext,\n SignatureStatus,\n SimulatedTransactionResponse,\n Transaction,\n TransactionInstruction,\n TransactionSignature,\n Blockhash,\n FeeCalculator,\n} from '@solana/web3.js';\n\nimport { WalletNotConnectedError } from '@solana/wallet-adapter-base';\n\ninterface BlockhashAndFeeCalculator {\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n}\n\nexport const DEFAULT_TIMEOUT = 60000;\n\nexport const getErrorForTransaction = async (\n connection: Connection,\n txid: string,\n) => {\n // wait for all confirmation before geting transaction\n await connection.confirmTransaction(txid, 'max');\n\n const tx = await connection.getParsedConfirmedTransaction(txid);\n\n const errors: string[] = [];\n if (tx?.meta && tx.meta.logMessages) {\n tx.meta.logMessages.forEach(log => {\n const regex = /Error: (.*)/gm;\n let m;\n while ((m = regex.exec(log)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n if (m.length > 1) {\n errors.push(m[1]);\n }\n }\n });\n }\n\n return errors;\n};\n\nexport enum SequenceType {\n Sequential,\n Parallel,\n StopOnFailure,\n}\n\nexport async function sendTransactionsWithManualRetry(\n connection: Connection,\n wallet: any,\n instructions: TransactionInstruction[][],\n signers: Keypair[][],\n): Promise<(string | undefined)[]> {\n let stopPoint = 0;\n let tries = 0;\n let lastInstructionsLength = null;\n let toRemoveSigners: Record = {};\n instructions = instructions.filter((instr, i) => {\n if (instr.length > 0) {\n return true;\n } else {\n toRemoveSigners[i] = true;\n return false;\n }\n });\n let ids: string[] = [];\n let filteredSigners = signers.filter((_, i) => !toRemoveSigners[i]);\n\n while (stopPoint < instructions.length && tries < 3) {\n instructions = instructions.slice(stopPoint, instructions.length);\n filteredSigners = filteredSigners.slice(stopPoint, filteredSigners.length);\n\n if (instructions.length === lastInstructionsLength) tries = tries + 1;\n else tries = 0;\n\n try {\n if (instructions.length === 1) {\n const id = await sendTransactionWithRetry(\n connection,\n wallet,\n instructions[0],\n filteredSigners[0],\n 'single',\n );\n ids.push(id.txid);\n stopPoint = 1;\n } else {\n const { txs } = await sendTransactions(\n connection,\n wallet,\n instructions,\n filteredSigners,\n SequenceType.StopOnFailure,\n 'single',\n );\n ids = ids.concat(txs.map(t => t.txid));\n }\n } catch (e) {\n console.error(e);\n }\n console.log(\n 'Died on ',\n stopPoint,\n 'retrying from instruction',\n instructions[stopPoint],\n 'instructions length is',\n instructions.length,\n );\n lastInstructionsLength = instructions.length;\n }\n\n return ids;\n}\n\nexport const sendTransactions = async (\n connection: Connection,\n wallet: any,\n instructionSet: TransactionInstruction[][],\n signersSet: Keypair[][],\n sequenceType: SequenceType = SequenceType.Parallel,\n commitment: Commitment = 'singleGossip',\n successCallback: (txid: string, ind: number) => void = (txid, ind) => {},\n failCallback: (reason: string, ind: number) => boolean = (txid, ind) => false,\n block?: BlockhashAndFeeCalculator,\n beforeTransactions: Transaction[] = [],\n afterTransactions: Transaction[] = [],\n): Promise<{ number: number; txs: { txid: string; slot: number }[] }> => {\n if (!wallet.publicKey) throw new WalletNotConnectedError();\n\n const unsignedTxns: Transaction[] = beforeTransactions;\n\n if (!block) {\n block = await connection.getRecentBlockhash(commitment);\n }\n\n for (let i = 0; i < instructionSet.length; i++) {\n const instructions = instructionSet[i];\n const signers = signersSet[i];\n\n if (instructions.length === 0) {\n continue;\n }\n\n let transaction = new Transaction();\n instructions.forEach(instruction => transaction.add(instruction));\n transaction.recentBlockhash = block.blockhash;\n transaction.setSigners(\n // fee payed by the wallet owner\n wallet.publicKey,\n ...signers.map(s => s.publicKey),\n );\n\n if (signers.length > 0) {\n transaction.partialSign(...signers);\n }\n\n unsignedTxns.push(transaction);\n }\n unsignedTxns.push(...afterTransactions);\n\n const partiallySignedTransactions = unsignedTxns.filter(t =>\n t.signatures.find(sig => sig.publicKey.equals(wallet.publicKey)),\n );\n const fullySignedTransactions = unsignedTxns.filter(\n t => !t.signatures.find(sig => sig.publicKey.equals(wallet.publicKey)),\n );\n let signedTxns = await wallet.signAllTransactions(\n partiallySignedTransactions,\n );\n signedTxns = fullySignedTransactions.concat(signedTxns);\n const pendingTxns: Promise<{ txid: string; slot: number }>[] = [];\n\n console.log(\n 'Signed txns length',\n signedTxns.length,\n 'vs handed in length',\n instructionSet.length,\n );\n for (let i = 0; i < signedTxns.length; i++) {\n const signedTxnPromise = sendSignedTransaction({\n connection,\n signedTransaction: signedTxns[i],\n });\n\n if (sequenceType !== SequenceType.Parallel) {\n try {\n await signedTxnPromise.then(({ txid, slot }) =>\n successCallback(txid, i),\n );\n pendingTxns.push(signedTxnPromise);\n } catch (e) {\n console.log('Failed at txn index:', i);\n console.log('Caught failure:', e);\n\n failCallback(signedTxns[i], i);\n if (sequenceType === SequenceType.StopOnFailure) {\n return {\n number: i,\n txs: await Promise.all(pendingTxns),\n };\n }\n }\n } else {\n pendingTxns.push(signedTxnPromise);\n }\n }\n\n if (sequenceType !== SequenceType.Parallel) {\n const result = await Promise.all(pendingTxns);\n return { number: signedTxns.length, txs: result };\n }\n\n return { number: signedTxns.length, txs: await Promise.all(pendingTxns) };\n};\n\nexport const sendTransaction = async (\n connection: Connection,\n wallet: any,\n instructions: TransactionInstruction[] | Transaction,\n signers: Keypair[],\n awaitConfirmation = true,\n commitment: Commitment = 'singleGossip',\n includesFeePayer: boolean = false,\n block?: BlockhashAndFeeCalculator,\n) => {\n if (!wallet.publicKey) throw new WalletNotConnectedError();\n\n let transaction: Transaction;\n if (instructions instanceof Transaction) {\n transaction = instructions;\n } else {\n transaction = new Transaction();\n instructions.forEach(instruction => transaction.add(instruction));\n transaction.recentBlockhash = (\n block || (await connection.getRecentBlockhash(commitment))\n ).blockhash;\n\n if (includesFeePayer) {\n transaction.setSigners(...signers.map(s => s.publicKey));\n } else {\n transaction.setSigners(\n // fee payed by the wallet owner\n wallet.publicKey,\n ...signers.map(s => s.publicKey),\n );\n }\n\n if (signers.length > 0) {\n transaction.partialSign(...signers);\n }\n if (!includesFeePayer) {\n transaction = await wallet.signTransaction(transaction);\n }\n }\n\n const rawTransaction = transaction.serialize();\n let options = {\n skipPreflight: true,\n commitment,\n };\n\n const txid = await connection.sendRawTransaction(rawTransaction, options);\n let slot = 0;\n\n if (awaitConfirmation) {\n const confirmation = await awaitTransactionSignatureConfirmation(\n txid,\n DEFAULT_TIMEOUT,\n connection,\n commitment,\n );\n\n if (!confirmation)\n throw new Error('Timed out awaiting confirmation on transaction');\n slot = confirmation?.slot || 0;\n\n if (confirmation?.err) {\n const errors = await getErrorForTransaction(connection, txid);\n\n console.log(errors);\n throw new Error(`Raw transaction ${txid} failed`);\n }\n }\n\n return { txid, slot };\n};\n\nexport const sendTransactionWithRetry = async (\n connection: Connection,\n wallet: any,\n instructions: TransactionInstruction[],\n signers: Keypair[],\n commitment: Commitment = 'singleGossip',\n includesFeePayer: boolean = false,\n block?: BlockhashAndFeeCalculator,\n beforeSend?: () => void,\n) => {\n if (!wallet.publicKey) throw new WalletNotConnectedError();\n\n let transaction = new Transaction();\n instructions.forEach(instruction => transaction.add(instruction));\n transaction.recentBlockhash = (\n block || (await connection.getRecentBlockhash(commitment))\n ).blockhash;\n\n if (includesFeePayer) {\n transaction.setSigners(...signers.map(s => s.publicKey));\n } else {\n transaction.setSigners(\n // fee payed by the wallet owner\n wallet.publicKey,\n ...signers.map(s => s.publicKey),\n );\n }\n\n if (signers.length > 0) {\n transaction.partialSign(...signers);\n }\n if (!includesFeePayer) {\n transaction = await wallet.signTransaction(transaction);\n }\n\n if (beforeSend) {\n beforeSend();\n }\n\n const { txid, slot } = await sendSignedTransaction({\n connection,\n signedTransaction: transaction,\n });\n\n return { txid, slot };\n};\n\nexport const getUnixTs = () => {\n return new Date().getTime() / 1000;\n};\n\nexport async function sendSignedTransaction({\n signedTransaction,\n connection,\n timeout = DEFAULT_TIMEOUT,\n}: {\n signedTransaction: Transaction;\n connection: Connection;\n sendingMessage?: string;\n sentMessage?: string;\n successMessage?: string;\n timeout?: number;\n}): Promise<{ txid: string; slot: number }> {\n const rawTransaction = signedTransaction.serialize();\n\n const startTime = getUnixTs();\n let slot = 0;\n const txid: TransactionSignature = await connection.sendRawTransaction(\n rawTransaction,\n {\n skipPreflight: true,\n },\n );\n\n console.log('Started awaiting confirmation for', txid);\n\n let done = false;\n (async () => {\n while (!done && getUnixTs() - startTime < timeout) {\n connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n });\n await sleep(500);\n }\n })();\n try {\n const confirmation = await awaitTransactionSignatureConfirmation(\n txid,\n timeout,\n connection,\n 'recent',\n true,\n );\n\n if (!confirmation)\n throw new Error('Timed out awaiting confirmation on transaction');\n\n if (confirmation.err) {\n console.error(confirmation.err);\n throw new Error('Transaction failed: Custom instruction error');\n }\n\n slot = confirmation?.slot || 0;\n } catch (err: any) {\n console.error('Timeout Error caught', err);\n if (err.timeout) {\n throw new Error('Timed out awaiting confirmation on transaction');\n }\n let simulateResult: SimulatedTransactionResponse | null = null;\n try {\n simulateResult = (\n await simulateTransaction(connection, signedTransaction, 'single')\n ).value;\n } catch (e) {}\n if (simulateResult && simulateResult.err) {\n if (simulateResult.logs) {\n for (let i = simulateResult.logs.length - 1; i >= 0; --i) {\n const line = simulateResult.logs[i];\n if (line.startsWith('Program log: ')) {\n throw new Error(\n 'Transaction failed: ' + line.slice('Program log: '.length),\n );\n }\n }\n }\n throw new Error(JSON.stringify(simulateResult.err));\n }\n // throw new Error('Transaction failed');\n } finally {\n done = true;\n }\n\n console.log('Latency', txid, getUnixTs() - startTime);\n return { txid, slot };\n}\n\nasync function simulateTransaction(\n connection: Connection,\n transaction: Transaction,\n commitment: Commitment,\n): Promise> {\n // @ts-ignore\n transaction.recentBlockhash = await connection._recentBlockhash(\n // @ts-ignore\n connection._disableBlockhashCaching,\n );\n\n const signData = transaction.serializeMessage();\n // @ts-ignore\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = { encoding: 'base64', commitment };\n const args = [encodedTransaction, config];\n\n // @ts-ignore\n const res = await connection._rpcRequest('simulateTransaction', args);\n if (res.error) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n}\n\nasync function awaitTransactionSignatureConfirmation(\n txid: TransactionSignature,\n timeout: number,\n connection: Connection,\n commitment: Commitment = 'recent',\n queryStatus = false,\n): Promise {\n let done = false;\n let status: SignatureStatus | null | void = {\n slot: 0,\n confirmations: 0,\n err: null,\n };\n let subId = 0;\n status = await new Promise(async (resolve, reject) => {\n setTimeout(() => {\n if (done) {\n return;\n }\n done = true;\n console.log('Rejecting for timeout...');\n reject({ timeout: true });\n }, timeout);\n try {\n subId = connection.onSignature(\n txid,\n (result, context) => {\n done = true;\n status = {\n err: result.err,\n slot: context.slot,\n confirmations: 0,\n };\n if (result.err) {\n console.log('Rejected via websocket', result.err);\n reject(status);\n } else {\n console.log('Resolved via websocket', result);\n resolve(status);\n }\n },\n commitment,\n );\n } catch (e) {\n done = true;\n console.error('WS error in setup', txid, e);\n }\n while (!done && queryStatus) {\n // eslint-disable-next-line no-loop-func\n (async () => {\n try {\n const signatureStatuses = await connection.getSignatureStatuses([\n txid,\n ]);\n status = signatureStatuses && signatureStatuses.value[0];\n if (!done) {\n if (!status) {\n console.log('REST null result for', txid, status);\n } else if (status.err) {\n console.log('REST error for', txid, status);\n done = true;\n reject(status.err);\n } else if (!status.confirmations) {\n console.log('REST no confirmations for', txid, status);\n } else {\n console.log('REST confirmation for', txid, status);\n done = true;\n resolve(status);\n }\n }\n } catch (e) {\n if (!done) {\n console.log('REST connection error: txid', txid, e);\n }\n }\n })();\n await sleep(2000);\n }\n });\n\n //@ts-ignore\n if (connection._signatureSubscriptions[subId])\n connection.removeSignatureListener(subId);\n done = true;\n console.log('Returning status', status);\n return status;\n}\nexport function sleep(ms: number): Promise {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import * as anchor from '@project-serum/anchor';\n\nimport { MintLayout, TOKEN_PROGRAM_ID, Token } from '@solana/spl-token';\nimport {\n SystemProgram,\n Transaction,\n SYSVAR_SLOT_HASHES_PUBKEY,\n} from '@solana/web3.js';\nimport { sendTransactions, SequenceType } from './connection';\n\nimport {\n CIVIC,\n getAtaForMint,\n getNetworkExpire,\n getNetworkToken,\n SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID,\n} from './utils';\n\nexport const CANDY_MACHINE_PROGRAM = new anchor.web3.PublicKey(\n 'cndy3Z4yapfJBmL3ShUp5exZKqR3z33thTzeNMm2gRZ',\n);\n\nconst TOKEN_METADATA_PROGRAM_ID = new anchor.web3.PublicKey(\n 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',\n);\n\ninterface CandyMachineState {\n authority: anchor.web3.PublicKey;\n itemsAvailable: number;\n itemsRedeemed: number;\n itemsRemaining: number;\n treasury: anchor.web3.PublicKey;\n tokenMint: anchor.web3.PublicKey;\n isSoldOut: boolean;\n isActive: boolean;\n isPresale: boolean;\n isWhitelistOnly: boolean;\n goLiveDate: anchor.BN;\n price: anchor.BN;\n gatekeeper: null | {\n expireOnUse: boolean;\n gatekeeperNetwork: anchor.web3.PublicKey;\n };\n endSettings: null | {\n number: anchor.BN;\n endSettingType: any;\n };\n whitelistMintSettings: null | {\n mode: any;\n mint: anchor.web3.PublicKey;\n presale: boolean;\n discountPrice: null | anchor.BN;\n };\n hiddenSettings: null | {\n name: string;\n uri: string;\n hash: Uint8Array;\n };\n retainAuthority: boolean;\n}\n\nexport interface CandyMachineAccount {\n id: anchor.web3.PublicKey;\n program: anchor.Program;\n state: CandyMachineState;\n}\n\nexport const awaitTransactionSignatureConfirmation = async (\n txid: anchor.web3.TransactionSignature,\n timeout: number,\n connection: anchor.web3.Connection,\n queryStatus = false,\n): Promise => {\n let done = false;\n let status: anchor.web3.SignatureStatus | null | void = {\n slot: 0,\n confirmations: 0,\n err: null,\n };\n let subId = 0;\n status = await new Promise(async (resolve, reject) => {\n setTimeout(() => {\n if (done) {\n return;\n }\n done = true;\n console.log('Rejecting for timeout...');\n reject({ timeout: true });\n }, timeout);\n\n while (!done && queryStatus) {\n // eslint-disable-next-line no-loop-func\n (async () => {\n try {\n const signatureStatuses = await connection.getSignatureStatuses([\n txid,\n ]);\n status = signatureStatuses && signatureStatuses.value[0];\n if (!done) {\n if (!status) {\n console.log('REST null result for', txid, status);\n } else if (status.err) {\n console.log('REST error for', txid, status);\n done = true;\n reject(status.err);\n } else if (!status.confirmations) {\n console.log('REST no confirmations for', txid, status);\n } else {\n console.log('REST confirmation for', txid, status);\n done = true;\n resolve(status);\n }\n }\n } catch (e) {\n if (!done) {\n console.log('REST connection error: txid', txid, e);\n }\n }\n })();\n await sleep(2000);\n }\n });\n\n //@ts-ignore\n if (connection._signatureSubscriptions[subId]) {\n connection.removeSignatureListener(subId);\n }\n done = true;\n console.log('Returning status', status);\n return status;\n};\n\nconst createAssociatedTokenAccountInstruction = (\n associatedTokenAddress: anchor.web3.PublicKey,\n payer: anchor.web3.PublicKey,\n walletAddress: anchor.web3.PublicKey,\n splTokenMintAddress: anchor.web3.PublicKey,\n) => {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedTokenAddress, isSigner: false, isWritable: true },\n { pubkey: walletAddress, isSigner: false, isWritable: false },\n { pubkey: splTokenMintAddress, isSigner: false, isWritable: false },\n {\n pubkey: anchor.web3.SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n {\n pubkey: anchor.web3.SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n ];\n return new anchor.web3.TransactionInstruction({\n keys,\n programId: SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID,\n data: Buffer.from([]),\n });\n};\n\nexport const getCandyMachineState = async (\n anchorWallet: anchor.Wallet,\n candyMachineId: anchor.web3.PublicKey,\n connection: anchor.web3.Connection,\n): Promise => {\n const provider = new anchor.Provider(connection, anchorWallet, {\n preflightCommitment: 'processed',\n });\n\n const idl = await anchor.Program.fetchIdl(CANDY_MACHINE_PROGRAM, provider);\n\n const program = new anchor.Program(idl!, CANDY_MACHINE_PROGRAM, provider);\n\n const state: any = await program.account.candyMachine.fetch(candyMachineId);\n const itemsAvailable = state.data.itemsAvailable.toNumber();\n const itemsRedeemed = state.itemsRedeemed.toNumber();\n const itemsRemaining = itemsAvailable - itemsRedeemed;\n\n return {\n id: candyMachineId,\n program,\n state: {\n authority: state.authority,\n itemsAvailable,\n itemsRedeemed,\n itemsRemaining,\n isSoldOut: itemsRemaining === 0,\n isActive: false,\n isPresale: false,\n isWhitelistOnly: false,\n goLiveDate: state.data.goLiveDate,\n treasury: state.wallet,\n tokenMint: state.tokenMint,\n gatekeeper: state.data.gatekeeper,\n endSettings: state.data.endSettings,\n whitelistMintSettings: state.data.whitelistMintSettings,\n hiddenSettings: state.data.hiddenSettings,\n price: state.data.price,\n retainAuthority: state.data.retainAuthority,\n },\n };\n};\n\nconst getMasterEdition = async (\n mint: anchor.web3.PublicKey,\n): Promise => {\n return (\n await anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from('metadata'),\n TOKEN_METADATA_PROGRAM_ID.toBuffer(),\n mint.toBuffer(),\n Buffer.from('edition'),\n ],\n TOKEN_METADATA_PROGRAM_ID,\n )\n )[0];\n};\n\nconst getMetadata = async (\n mint: anchor.web3.PublicKey,\n): Promise => {\n return (\n await anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from('metadata'),\n TOKEN_METADATA_PROGRAM_ID.toBuffer(),\n mint.toBuffer(),\n ],\n TOKEN_METADATA_PROGRAM_ID,\n )\n )[0];\n};\n\nexport const getCandyMachineCreator = async (\n candyMachine: anchor.web3.PublicKey,\n): Promise<[anchor.web3.PublicKey, number]> => {\n return await anchor.web3.PublicKey.findProgramAddress(\n [Buffer.from('candy_machine'), candyMachine.toBuffer()],\n CANDY_MACHINE_PROGRAM,\n );\n};\n\nexport const getCollectionPDA = async (\n candyMachineAddress: anchor.web3.PublicKey,\n): Promise<[anchor.web3.PublicKey, number]> => {\n return await anchor.web3.PublicKey.findProgramAddress(\n [Buffer.from('collection'), candyMachineAddress.toBuffer()],\n CANDY_MACHINE_PROGRAM,\n );\n};\n\nexport interface CollectionData {\n mint: anchor.web3.PublicKey;\n candyMachine: anchor.web3.PublicKey;\n}\n\nexport const getCollectionAuthorityRecordPDA = async (\n mint: anchor.web3.PublicKey,\n newAuthority: anchor.web3.PublicKey,\n): Promise => {\n return (\n await anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from('metadata'),\n TOKEN_METADATA_PROGRAM_ID.toBuffer(),\n mint.toBuffer(),\n Buffer.from('collection_authority'),\n newAuthority.toBuffer(),\n ],\n TOKEN_METADATA_PROGRAM_ID,\n )\n )[0];\n};\n\nexport type SetupState = {\n mint: anchor.web3.Keypair;\n userTokenAccount: anchor.web3.PublicKey;\n transaction: string;\n};\n\nexport const createAccountsForMint = async (\n candyMachine: CandyMachineAccount,\n payer: anchor.web3.PublicKey,\n): Promise => {\n const mint = anchor.web3.Keypair.generate();\n const userTokenAccountAddress = (\n await getAtaForMint(mint.publicKey, payer)\n )[0];\n\n const signers: anchor.web3.Keypair[] = [mint];\n const instructions = [\n anchor.web3.SystemProgram.createAccount({\n fromPubkey: payer,\n newAccountPubkey: mint.publicKey,\n space: MintLayout.span,\n lamports:\n await candyMachine.program.provider.connection.getMinimumBalanceForRentExemption(\n MintLayout.span,\n ),\n programId: TOKEN_PROGRAM_ID,\n }),\n Token.createInitMintInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n 0,\n payer,\n payer,\n ),\n createAssociatedTokenAccountInstruction(\n userTokenAccountAddress,\n payer,\n payer,\n mint.publicKey,\n ),\n Token.createMintToInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n userTokenAccountAddress,\n payer,\n [],\n 1,\n ),\n ];\n\n return {\n mint: mint,\n userTokenAccount: userTokenAccountAddress,\n transaction: (\n await sendTransactions(\n candyMachine.program.provider.connection,\n candyMachine.program.provider.wallet,\n [instructions],\n [signers],\n SequenceType.StopOnFailure,\n 'singleGossip',\n () => {},\n () => false,\n undefined,\n [],\n [],\n )\n ).txs[0].txid,\n };\n};\n\nexport const mintOneToken = async (\n candyMachine: CandyMachineAccount,\n payer: anchor.web3.PublicKey,\n beforeTransactions: Transaction[] = [],\n afterTransactions: Transaction[] = [],\n setupState?: SetupState,\n): Promise => {\n const mint = setupState?.mint ?? anchor.web3.Keypair.generate();\n const userTokenAccountAddress = (\n await getAtaForMint(mint.publicKey, payer)\n )[0];\n\n const userPayingAccountAddress = candyMachine.state.tokenMint\n ? (await getAtaForMint(candyMachine.state.tokenMint, payer))[0]\n : payer;\n\n const candyMachineAddress = candyMachine.id;\n const remainingAccounts = [];\n const cleanupInstructions = [];\n const instructions = [];\n const signers: anchor.web3.Keypair[] = [];\n console.log('SetupState: ', setupState);\n if (!setupState) {\n signers.push(mint);\n instructions.push(\n ...[\n anchor.web3.SystemProgram.createAccount({\n fromPubkey: payer,\n newAccountPubkey: mint.publicKey,\n space: MintLayout.span,\n lamports:\n await candyMachine.program.provider.connection.getMinimumBalanceForRentExemption(\n MintLayout.span,\n ),\n programId: TOKEN_PROGRAM_ID,\n }),\n Token.createInitMintInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n 0,\n payer,\n payer,\n ),\n createAssociatedTokenAccountInstruction(\n userTokenAccountAddress,\n payer,\n payer,\n mint.publicKey,\n ),\n Token.createMintToInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n userTokenAccountAddress,\n payer,\n [],\n 1,\n ),\n ],\n );\n }\n\n if (candyMachine.state.gatekeeper) {\n remainingAccounts.push({\n pubkey: (\n await getNetworkToken(\n payer,\n candyMachine.state.gatekeeper.gatekeeperNetwork,\n )\n )[0],\n isWritable: true,\n isSigner: false,\n });\n\n if (candyMachine.state.gatekeeper.expireOnUse) {\n remainingAccounts.push({\n pubkey: CIVIC,\n isWritable: false,\n isSigner: false,\n });\n remainingAccounts.push({\n pubkey: (\n await getNetworkExpire(\n candyMachine.state.gatekeeper.gatekeeperNetwork,\n )\n )[0],\n isWritable: false,\n isSigner: false,\n });\n }\n }\n if (candyMachine.state.whitelistMintSettings) {\n const mint = new anchor.web3.PublicKey(\n candyMachine.state.whitelistMintSettings.mint,\n );\n\n const whitelistToken = (await getAtaForMint(mint, payer))[0];\n remainingAccounts.push({\n pubkey: whitelistToken,\n isWritable: true,\n isSigner: false,\n });\n\n if (candyMachine.state.whitelistMintSettings.mode.burnEveryTime) {\n const whitelistBurnAuthority = anchor.web3.Keypair.generate();\n\n remainingAccounts.push({\n pubkey: mint,\n isWritable: true,\n isSigner: false,\n });\n remainingAccounts.push({\n pubkey: whitelistBurnAuthority.publicKey,\n isWritable: false,\n isSigner: true,\n });\n signers.push(whitelistBurnAuthority);\n const exists =\n await candyMachine.program.provider.connection.getAccountInfo(\n whitelistToken,\n );\n if (exists) {\n instructions.push(\n Token.createApproveInstruction(\n TOKEN_PROGRAM_ID,\n whitelistToken,\n whitelistBurnAuthority.publicKey,\n payer,\n [],\n 1,\n ),\n );\n cleanupInstructions.push(\n Token.createRevokeInstruction(\n TOKEN_PROGRAM_ID,\n whitelistToken,\n payer,\n [],\n ),\n );\n }\n }\n }\n\n if (candyMachine.state.tokenMint) {\n const transferAuthority = anchor.web3.Keypair.generate();\n\n signers.push(transferAuthority);\n remainingAccounts.push({\n pubkey: userPayingAccountAddress,\n isWritable: true,\n isSigner: false,\n });\n remainingAccounts.push({\n pubkey: transferAuthority.publicKey,\n isWritable: false,\n isSigner: true,\n });\n\n instructions.push(\n Token.createApproveInstruction(\n TOKEN_PROGRAM_ID,\n userPayingAccountAddress,\n transferAuthority.publicKey,\n payer,\n [],\n candyMachine.state.price.toNumber(),\n ),\n );\n cleanupInstructions.push(\n Token.createRevokeInstruction(\n TOKEN_PROGRAM_ID,\n userPayingAccountAddress,\n payer,\n [],\n ),\n );\n }\n const metadataAddress = await getMetadata(mint.publicKey);\n const masterEdition = await getMasterEdition(mint.publicKey);\n\n const [candyMachineCreator, creatorBump] = await getCandyMachineCreator(\n candyMachineAddress,\n );\n\n console.log(remainingAccounts.map(rm => rm.pubkey.toBase58()));\n instructions.push(\n await candyMachine.program.instruction.mintNft(creatorBump, {\n accounts: {\n candyMachine: candyMachineAddress,\n candyMachineCreator,\n payer: payer,\n wallet: candyMachine.state.treasury,\n mint: mint.publicKey,\n metadata: metadataAddress,\n masterEdition,\n mintAuthority: payer,\n updateAuthority: payer,\n tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: anchor.web3.SYSVAR_RENT_PUBKEY,\n clock: anchor.web3.SYSVAR_CLOCK_PUBKEY,\n recentBlockhashes: SYSVAR_SLOT_HASHES_PUBKEY,\n instructionSysvarAccount: anchor.web3.SYSVAR_INSTRUCTIONS_PUBKEY,\n },\n remainingAccounts:\n remainingAccounts.length > 0 ? remainingAccounts : undefined,\n }),\n );\n\n const [collectionPDA] = await getCollectionPDA(candyMachineAddress);\n const collectionPDAAccount =\n await candyMachine.program.provider.connection.getAccountInfo(\n collectionPDA,\n );\n\n if (collectionPDAAccount && candyMachine.state.retainAuthority) {\n try {\n const collectionData =\n (await candyMachine.program.account.collectionPda.fetch(\n collectionPDA,\n )) as CollectionData;\n console.log(collectionData);\n const collectionMint = collectionData.mint;\n const collectionAuthorityRecord = await getCollectionAuthorityRecordPDA(\n collectionMint,\n collectionPDA,\n );\n console.log(collectionMint);\n if (collectionMint) {\n const collectionMetadata = await getMetadata(collectionMint);\n const collectionMasterEdition = await getMasterEdition(collectionMint);\n console.log('Collection PDA: ', collectionPDA.toBase58());\n console.log('Authority: ', candyMachine.state.authority.toBase58());\n instructions.push(\n await candyMachine.program.instruction.setCollectionDuringMint({\n accounts: {\n candyMachine: candyMachineAddress,\n metadata: metadataAddress,\n payer: payer,\n collectionPda: collectionPDA,\n tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,\n instructions: anchor.web3.SYSVAR_INSTRUCTIONS_PUBKEY,\n collectionMint,\n collectionMetadata,\n collectionMasterEdition,\n authority: candyMachine.state.authority,\n collectionAuthorityRecord,\n },\n }),\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n const instructionsMatrix = [instructions, cleanupInstructions];\n const signersMatrix = [signers, []];\n\n try {\n return (\n await sendTransactions(\n candyMachine.program.provider.connection,\n candyMachine.program.provider.wallet,\n instructionsMatrix,\n signersMatrix,\n SequenceType.StopOnFailure,\n 'singleGossip',\n () => {},\n () => false,\n undefined,\n beforeTransactions,\n afterTransactions,\n )\n ).txs.map(t => t.txid);\n } catch (e) {\n console.log(e);\n }\n return [];\n};\n\nexport const shortenAddress = (address: string, chars = 4): string => {\n return `${address.slice(0, chars)}...${address.slice(-chars)}`;\n};\n\nconst sleep = (ms: number): Promise => {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n"],"sourceRoot":""}