{"version":3,"sources":["wallet/phantom.ts","providers/useWallet.tsx","providers/useCandyMachine.tsx","App.tsx","reportWebVitals.ts","index.tsx","common/config.ts","actions/mintNFT.ts","common/candyMachineIdl.ts"],"names":["DEFAULT_PUBLICKEY","PublicKey","PhantomWalletAdapter","_handleConnect","args","emit","_handleDisconnect","connect","bind","window","solana","isPhantom","this","_provider","isConnected","autoApprove","transactions","a","signAllTransactions","publicKey","transaction","signTransaction","on","listeners","length","Promise","resolve","once","disconnect","EventEmitter","DEFAULT","name","endpoint","ChainId","MainnetBeta","Devnet","find","env","NETWORK","defaultContextValues","connection","Connection","wallet","walletName","undefined","connectWallet","disconnectWallet","WalletContext","createContext","WalletProvider","children","useState","setWallet","setWalletName","network","newWallet","SolanaWalletAdapter","value","MyConnection","Provider","rawTransaction","options","signature","candyMachine","findCandyMachine","CandyMachineContext","CandyMachineProvider","setCandyMachine","provider","anchor","preflightCommitment","anchorProgram","candyMachineIdl","programId","getCandyMachine","config","configUUID","account","fetch","cmp","BuyScreen","useContext","displayRemaining","console","log","data","itemsAvailable","toNumber","itemsRedeemed","showToast","txnId","toast","href","style","color","slice","className","position","autoClose","hideProgressBar","newestOnTop","rtl","pauseOnFocusLoss","draggable","pauseOnHover","connected","onClick","mintNFT","price","App","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById","candyMachineOwner","TOKEN_METADATA_PROGRAM_ID","TOKEN_PROGRAM_ID","SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID","mint","Keypair","generate","getTokenWallet","token","getMetadata","metadata","getMasterEdition","masterEdition","rpc","payer","mintAuthority","updateAuthority","tokenMetadataProgram","tokenProgram","systemProgram","SystemProgram","rent","SYSVAR_RENT_PUBKEY","clock","SYSVAR_CLOCK_PUBKEY","MintLayout","span","getMinimumBalanceForRentExemption","fromPubkey","newAccountPubkey","space","lamports","createAccount","Token","createInitMintInstruction","createAssociatedTokenAccountInstruction","createMintToInstruction","accounts","signers","instructions","mintNft","tx","uuid","findProgramAddress","Buffer","from","toBuffer","associatedTokenAddress","walletAddress","splTokenMintAddress","keys","pubkey","isSigner","isWritable","TransactionInstruction","JSON","parse"],"mappings":"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","file":"static/js/main.fc2c1e27.chunk.js","sourcesContent":["import EventEmitter from \"eventemitter3\";\nimport { PublicKey, Transaction } from \"@solana/web3.js\";\n\nexport const DEFAULT_PUBLICKEY = new PublicKey(0);\n\nexport interface WalletAdapter {\n publicKey: PublicKey | null;\n autoApprove: boolean;\n connected: boolean;\n signTransaction: (transaction: Transaction) => Promise;\n signAllTransactions: (transaction: Transaction[]) => Promise;\n connect: () => any;\n disconnect: () => any;\n // eslint-disable-next-line\n on(event: string, fn: () => void): this;\n}\n\ntype PhantomEvent = \"disconnect\" | \"connect\";\ntype PhantomRequestMethod =\n | \"connect\"\n | \"disconnect\"\n | \"signTransaction\"\n | \"signAllTransactions\";\n\ninterface PhantomProvider {\n publicKey?: PublicKey;\n isConnected?: boolean;\n autoApprove?: boolean;\n signTransaction: (transaction: Transaction) => Promise;\n signAllTransactions: (transactions: Transaction[]) => Promise;\n connect: () => Promise;\n disconnect: () => Promise;\n on: (event: PhantomEvent, handler: (args: any) => void) => void;\n request: (method: PhantomRequestMethod, params: any) => Promise;\n listeners: (event: PhantomEvent) => (() => void)[];\n}\n\nexport class PhantomWalletAdapter\n extends EventEmitter\n implements WalletAdapter\n{\n constructor() {\n super();\n this.connect = this.connect.bind(this);\n }\n\n private get _provider(): PhantomProvider | undefined {\n if ((window as any)?.solana?.isPhantom) {\n return (window as any).solana;\n }\n return undefined;\n }\n\n private _handleConnect = (...args: any) => {\n this.emit(\"connect\", ...args);\n };\n\n private _handleDisconnect = (...args: any) => {\n this.emit(\"disconnect\", ...args);\n };\n\n get connected() {\n return this._provider?.isConnected || false;\n }\n\n get autoApprove() {\n return this._provider?.autoApprove || false;\n }\n\n // eslint-disable-next-line\n async signAllTransactions(\n transactions: Transaction[]\n ): Promise {\n if (!this._provider) {\n return transactions;\n }\n\n return this._provider.signAllTransactions(transactions);\n }\n\n get publicKey() {\n return this._provider?.publicKey || DEFAULT_PUBLICKEY;\n }\n\n // eslint-disable-next-line\n async signTransaction(transaction: Transaction) {\n if (!this._provider) {\n return transaction;\n }\n\n return this._provider.signTransaction(transaction);\n }\n\n async connect() {\n if (!this._provider) {\n return null;\n }\n // Phantom will emit a connect message once the user connects\n // We bind this to our own connecter\n this._provider?.on(\"connect\", this._handleConnect);\n\n if (!this._provider.listeners(\"disconnect\").length) {\n this._provider?.on(\"disconnect\", this._handleDisconnect);\n }\n this._provider?.connect(); // Send request to connect\n return new Promise((resolve) => {\n this.once(\"connect\", resolve);\n });\n }\n\n disconnect() {\n if (this._provider) {\n this._provider.disconnect();\n }\n }\n}\n","import React, {\n ReactElement,\n createContext,\n useContext,\n useState,\n} from \"react\";\nimport { Connection, SendOptions } from \"@solana/web3.js\";\nimport SolanaWalletAdapter from \"@project-serum/sol-wallet-adapter\";\nimport { ENV as ChainId } from \"@solana/spl-token-registry\";\nimport { WalletAdapter, PhantomWalletAdapter } from \"../wallet/phantom\";\nimport { NETWORK } from \"../common/config\";\n\nexport const ENDPOINTS = [\n // {\n // name: \"mainnet\",\n // endpoint: \"https://api.mainnet-beta.solana.com\",\n // ChainId: ChainId.MainnetBeta,\n // },\n {\n name: \"mainnet\",\n endpoint:\n \"https://wispy-shy-sun.solana-mainnet.quiknode.pro/89cfe785b014007e7ee4c5f2ee5bb5572b4735db/\",\n ChainId: ChainId.MainnetBeta,\n },\n {\n name: \"devnet\",\n endpoint: \"https://api.devnet.solana.com\",\n ChainId: ChainId.Devnet,\n },\n];\n\nconst DEFAULT = ENDPOINTS.find((env) => env.name === NETWORK);\n\nexport type WalletContextType = {\n connection: Connection;\n wallet: WalletAdapter | null;\n walletName: string | undefined;\n connectWallet: (walletName?: string) => void;\n disconnectWallet: () => void;\n};\n\nconst defaultContextValues = {\n connection: new Connection(DEFAULT!.endpoint, \"confirmed\"),\n wallet: null,\n walletName: undefined,\n connectWallet: () => {},\n disconnectWallet: () => undefined,\n};\n\nexport const WalletContext =\n createContext(defaultContextValues);\n\ntype WalletProviderPropsType = { children: ReactElement };\n\nexport function WalletProvider({\n children,\n}: WalletProviderPropsType): ReactElement {\n const [wallet, setWallet] = useState(null);\n const [walletName, setWalletName] = useState(undefined);\n const connection = new MyConnection(DEFAULT!.endpoint, \"confirmed\");\n\n function disconnectWallet() {\n wallet?.disconnect();\n setWalletName(undefined);\n setWallet(null);\n }\n\n async function connectWallet(walletName?: string) {\n const network = NETWORK;\n let newWallet: WalletAdapter;\n\n // might want these errors idk\n switch (walletName) {\n case \"phantom\": {\n newWallet = new PhantomWalletAdapter();\n break;\n }\n default: {\n newWallet = new SolanaWalletAdapter(\"https://www.sollet.io\", network);\n }\n }\n await newWallet.connect();\n newWallet.on(\"disconnect\", () => {\n disconnectWallet();\n });\n setWalletName(walletName);\n setWallet(newWallet);\n }\n\n const value = {\n connection,\n wallet,\n walletName,\n connectWallet,\n disconnectWallet,\n };\n\n return (\n {children}\n );\n}\n\nexport const useWallet = (): WalletContextType => useContext(WalletContext);\n\nclass MyConnection extends Connection {\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | number[],\n options?: SendOptions | undefined\n ) {\n const signature = await super.sendRawTransaction(rawTransaction, options);\n return signature;\n }\n}\n","import { Connection } from \"@solana/web3.js\";\nimport React, { createContext, ReactElement, useContext, useState } from \"react\";\nimport { WalletAdapter } from \"../wallet/phantom\";\nimport * as anchor from \"@project-serum/anchor\";\nimport { candyMachineIdl } from \"../common/candyMachineIdl\";\nimport { config, configUUID, programId } from \"../common/config\";\nimport { getCandyMachine } from \"../actions/mintNFT\";\n\n\nexport type CandyMachineContextType = {\n candyMachine: any;\n findCandyMachine: (arg0: Connection, arg1: WalletAdapter) => void;\n};\nconst defaultContextValues = {\n candyMachine: null,\n findCandyMachine: () => {},\n};\n\nexport const CandyMachineContext =\n createContext(defaultContextValues);\n\ntype CandyMachineProviderPropsType = { children: ReactElement };\n\nexport function CandyMachineProvider({\n children,\n}: CandyMachineProviderPropsType): ReactElement {\n const [candyMachine, setCandyMachine] = useState(null);\n\n async function findCandyMachine(\n connection: Connection,\n wallet: WalletAdapter\n ) {\n // @ts-ignore\n const provider = new anchor.Provider(connection, wallet, {\n preflightCommitment: \"processed\",\n });\n const anchorProgram = new anchor.Program(\n candyMachineIdl,\n programId,\n provider\n );\n\n // eslint-disable-next-line\n const [candyMachine, _bump] = await getCandyMachine(config, configUUID);\n const cmp = await anchorProgram.account.candyMachine.fetch(candyMachine);\n setCandyMachine(cmp);\n }\n const value = {\n candyMachine,\n findCandyMachine,\n };\n return (\n \n {children}\n \n );\n}\nexport const useCandyMachine = (): CandyMachineContextType =>\n useContext(CandyMachineContext);\n","import React from \"react\";\nimport \"./App.css\";\nimport { WalletProvider, useWallet } from \"./providers/useWallet\";\nimport { mintNFT } from \"./actions/mintNFT\";\nimport { CandyMachineProvider, useCandyMachine } from \"./providers/useCandyMachine\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.min.css\";\n\nfunction App() {\n return (\n
\n \n \n \n \n \n
\n );\n}\n\nfunction BuyScreen() {\n const { connection, wallet, connectWallet } = useWallet();\n const { candyMachine, findCandyMachine } = useCandyMachine();\n\n let displayRemaining = \"\";\n if (connection && wallet && !candyMachine) {\n findCandyMachine(connection, wallet);\n console.log(candyMachine);\n }\n if (candyMachine) {\n displayRemaining =\n `${\n candyMachine.data.itemsAvailable.toNumber() -\n candyMachine.itemsRedeemed.toNumber()\n }/${candyMachine.data.itemsAvailable.toNumber()}`;\n }\n // console.log(candyMachine);\n // console.log(\"***************\");\n // console.log(\"authority: \",candyMachine.authority.toBase58());\n // console.log(\"startTime: \",new Date(candyMachine.data.goLiveDate.toNumber()*1000));\n // console.log(\"redeemed : \", candyMachine.itemsRedeemed.toNumber());\n // console.log(\"supply : \", candyMachine.data.itemsAvailable.toNumber());\n // console.log(\"price : \", candyMachine.data.price.toNumber()/1000000000);\n \n const showToast = (txnId:string) => {\n toast(\n \n View on Solscan {txnId.slice(0, 5)}...{txnId.slice(txnId.length-5)}\n ,\n {\n className: \"toastFont\",\n }\n );\n };\n\n return (\n
\n \n
\n

Bake Sale

\n
\n {(!wallet || !wallet.connected) && (\n <>\n {\n connectWallet(\"sollet\");\n }}\n >\n Sollet\n
\n {\n connectWallet(\"phantom\");\n }}\n >\n Phantom\n
\n \n )}\n {wallet && wallet.connected && (\n <>\n {\n mintNFT(connection, wallet, showToast, findCandyMachine);\n }}\n >\n Mint ◎\n {(candyMachine && candyMachine.data.price.toNumber() / 1000000000) || \"?\"}\n

\n {displayRemaining || \"?/?\"}\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 './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\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\";\n\nexport const programId = new anchor.web3.PublicKey(\n \"cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ\"\n);\n\nexport const NETWORK = \"mainnet\";\n// export const NETWORK = \"devnet\";\n\nexport const config = new anchor.web3.PublicKey(\n \"9bfgrt6WfPCfneVsDWJdCzdCuFYpeGdBP5973SbwQbk8\"\n);\nexport const configUUID = \"9bfgrt\";\n\nexport const candyMachineOwner = new anchor.web3.PublicKey(\n \"Lum9QdS3MUyGLvLpJgvhHjAZ5nTWpjsxRA2u5Nnkutz\"\n);\n","import {\n TransactionInstruction,\n PublicKey,\n SystemProgram,\n Connection,\n SYSVAR_RENT_PUBKEY,\n} from \"@solana/web3.js\";\nimport { candyMachineIdl } from \"../common/candyMachineIdl\";\nimport { WalletAdapter } from \"../wallet/phantom\";\nimport { MintLayout, Token } from \"@solana/spl-token\";\nimport {\n programId,\n config,\n configUUID,\n candyMachineOwner,\n} from \"../common/config\";\n\nimport * as anchor from \"@project-serum/anchor\";\n\nconst CANDY_MACHINE = \"candy_machine\";\n\nconst TOKEN_METADATA_PROGRAM_ID = new PublicKey(\n \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\"\n);\nconst TOKEN_PROGRAM_ID = new PublicKey(\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n);\nconst SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nexport async function mintNFT(\n connection: Connection,\n wallet: WalletAdapter,\n toast: (a: string) => void,\n findCandyMachine: (arg0: Connection, arg1: WalletAdapter) => void\n) {\n const mint = anchor.web3.Keypair.generate();\n\n const token = await getTokenWallet(wallet.publicKey!, mint.publicKey);\n\n // @ts-ignore\n const provider = new anchor.Provider(connection, wallet, {\n preflightCommitment: \"processed\",\n });\n const anchorProgram = new anchor.Program(\n candyMachineIdl,\n programId,\n provider\n );\n\n // eslint-disable-next-line\n const [candyMachine, _bump] = await getCandyMachine(config, configUUID);\n const cmp = await anchorProgram.account.candyMachine.fetch(candyMachine);\n console.log(cmp);\n const metadata = await getMetadata(mint.publicKey);\n const masterEdition = await getMasterEdition(mint.publicKey);\n const tx = await anchorProgram.rpc.mintNft({\n accounts: {\n config: config,\n candyMachine: candyMachine,\n payer: wallet.publicKey,\n wallet: candyMachineOwner,\n mint: mint.publicKey,\n metadata,\n masterEdition,\n mintAuthority: wallet.publicKey,\n updateAuthority: wallet.publicKey,\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 },\n signers: [mint],\n instructions: [\n anchor.web3.SystemProgram.createAccount({\n fromPubkey: wallet.publicKey!,\n newAccountPubkey: mint.publicKey,\n space: MintLayout.span,\n lamports: await 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 wallet.publicKey!,\n wallet.publicKey\n ),\n createAssociatedTokenAccountInstruction(\n token,\n wallet.publicKey!,\n wallet.publicKey!,\n mint.publicKey\n ),\n Token.createMintToInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n token,\n wallet.publicKey!,\n [],\n 1\n ),\n ],\n });\n console.log(tx);\n toast(tx);\n findCandyMachine(connection, wallet);\n return tx;\n}\n\nexport const getCandyMachine = async (\n config: anchor.web3.PublicKey,\n uuid: string\n) => {\n return await anchor.web3.PublicKey.findProgramAddress(\n [Buffer.from(CANDY_MACHINE), config.toBuffer(), Buffer.from(uuid)],\n programId\n );\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\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 getTokenWallet = async function (wallet: PublicKey, mint: PublicKey) {\n return (\n await PublicKey.findProgramAddress(\n [wallet.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID\n )\n )[0];\n};\n\nexport function createAssociatedTokenAccountInstruction(\n associatedTokenAddress: PublicKey,\n payer: PublicKey,\n walletAddress: PublicKey,\n splTokenMintAddress: 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","export const candyMachineIdl = JSON.parse(`{\n \"version\": \"0.0.0\",\n \"name\": \"nft_candy_machine\",\n \"instructions\": [\n {\n \"name\": \"mintNft\",\n \"accounts\": [\n {\n \"name\": \"config\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"candyMachine\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"wallet\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"metadata\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"mint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"mintAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"updateAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"masterEdition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenMetadataProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clock\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"updateCandyMachine\",\n \"accounts\": [\n {\n \"name\": \"candyMachine\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"price\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"goLiveDate\",\n \"type\": {\n \"option\": \"i64\"\n }\n }\n ]\n },\n {\n \"name\": \"initializeConfig\",\n \"accounts\": [\n {\n \"name\": \"config\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": \"ConfigData\"\n }\n }\n ]\n },\n {\n \"name\": \"addConfigLines\",\n \"accounts\": [\n {\n \"name\": \"config\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"configLines\",\n \"type\": {\n \"vec\": {\n \"defined\": \"ConfigLine\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"initializeCandyMachine\",\n \"accounts\": [\n {\n \"name\": \"candyMachine\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"wallet\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"config\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": \"CandyMachineData\"\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CandyMachine\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"wallet\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenMint\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": \"CandyMachineData\"\n }\n },\n {\n \"name\": \"itemsRedeemed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Config\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": \"ConfigData\"\n }\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"CandyMachineData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"uuid\",\n \"type\": \"string\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"itemsAvailable\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"goLiveDate\",\n \"type\": {\n \"option\": \"i64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"ConfigData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"uuid\",\n \"type\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\"\n },\n {\n \"name\": \"sellerFeeBasisPoints\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"creators\",\n \"type\": {\n \"vec\": {\n \"defined\": \"Creator\"\n }\n }\n },\n {\n \"name\": \"maxSupply\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"isMutable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"retainAuthority\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"maxNumberOfLines\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"ConfigLine\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"Creator\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"address\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"verified\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"share\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ],\n \"errors\": [\n {\n \"code\": 300,\n \"name\": \"IncorrectOwner\",\n \"msg\": \"Account does not have correct owner!\"\n },\n {\n \"code\": 301,\n \"name\": \"Uninitialized\",\n \"msg\": \"Account is not initialized!\"\n },\n {\n \"code\": 302,\n \"name\": \"MintMismatch\",\n \"msg\": \"Mint Mismatch!\"\n },\n {\n \"code\": 303,\n \"name\": \"IndexGreaterThanLength\",\n \"msg\": \"Index greater than length!\"\n },\n {\n \"code\": 304,\n \"name\": \"ConfigMustHaveAtleastOneEntry\",\n \"msg\": \"Config must have atleast one entry!\"\n },\n {\n \"code\": 305,\n \"name\": \"NumericalOverflowError\",\n \"msg\": \"Numerical overflow error!\"\n },\n {\n \"code\": 306,\n \"name\": \"TooManyCreators\",\n \"msg\": \"Can only provide up to 4 creators to candy machine (because candy machine is one)!\"\n },\n {\n \"code\": 307,\n \"name\": \"UuidMustBeExactly6Length\",\n \"msg\": \"Uuid must be exactly of 6 length\"\n },\n {\n \"code\": 308,\n \"name\": \"NotEnoughTokens\",\n \"msg\": \"Not enough tokens to pay for this minting\"\n },\n {\n \"code\": 309,\n \"name\": \"NotEnoughSOL\",\n \"msg\": \"Not enough SOL to pay for this minting\"\n },\n {\n \"code\": 310,\n \"name\": \"TokenTransferFailed\",\n \"msg\": \"Token transfer failed\"\n },\n {\n \"code\": 311,\n \"name\": \"CandyMachineEmpty\",\n \"msg\": \"Candy machine is empty!\"\n },\n {\n \"code\": 312,\n \"name\": \"CandyMachineNotLiveYet\",\n \"msg\": \"Candy machine is not live yet!\"\n },\n {\n \"code\": 313,\n \"name\": \"ConfigLineMismatch\",\n \"msg\": \"Number of config lines must match items available\"\n }\n ]\n}\n`);\n"],"sourceRoot":""}