UNPKG

@boxfish-studio/candymachine-client-sdk

Version:
155 lines (125 loc) 4.73 kB
<h1 align="center">Candymachine Client SDK</h1> <p align="center">A full-featured Solana Metaplex Candy Machine V2 client-side library in Typescript</p> > **Disclaimer:** The SDK is currently a pre-alpha version ## About The Candymachine Client SDK offers all functionalities of the former Metaplex Candy Machine CLI but on a standalone pure Typescript client-side library that can run on any browser. > **IMPORTANT:** This SDK is only compatible with the Candy Machine V2. The Candy Machine V1 or V3 are not compatible. ### Features - Create a Candy Machine V2 with multiple and configurable settings: - Captcha enabled/disabled. - Mutability on the NFTs. - Price, number of NFTs. - Authority. - NFTs hosted on Arweave. - Time and date to start the minting. - Update any Candy Machine V2 in which you are the authority and have the cache file. - Explore any Candy Machine V2, view the minted NFTs, remaining NFTs to mint... - Mint a NFT from the Candy Machine V2. - Available on Solana's Mainnet and Devnet networks. - Fully compatible with React and NextJS. ### Built with - Typescript - Metaplex - Anchor from Serum - Solana web3.js <br/> ## Installation ``` $ npm i @boxfish-studio/candymachine-client-sdk $ yarn add @boxfish-studio/candymachine-client-sdk $ pnpm add @boxfish-studio/candymachine-client-sdk ``` <br/> ## How to use ### Upload your first Candy Machine v2 1. Import `uploadV2, loadCandyProgramV2, StorageType, verifyAssets` functions and enums: ```ts import { uploadV2, loadCandyProgramV2, StorageType, verifyAssets } from '@boxfish-studio/candymachine-client-sdk' async function createCandyMachineV2() { let candyMachine: string = '' const config: ICandyMachineConfig = { price: 1, number: 200, gatekeeper: null, solTreasuryAccount: ******************, // where the NFTs initial sale SOL will go to splTokenAccount: null, splToken: null, goLiveDate: "21 Jul 2023 16:00:00 GMT", endSettings: null, whitelistMintSettings: null, hiddenSettings: null, storage: StorageType.Arweave, ipfsInfuraProjectId: null, ipfsInfuraSecret: null, nftStorageKey: null, awsS3Bucket: null, noRetainAuthority: false, noMutable: false, arweaveJwk: null, batchSize: null, pinataGateway: null, pinataJwt: null, uuid: null, } // files being all the assets uploaded to the page: [0.json, 0.png, 1.json, 1.png....] const { supportedFiles, elemCount } = verifyAssets(files, config.storage, config.number) const provider = new AnchorProvider(connection, anchorWallet, { preflightCommitment: 'recent', }) const anchorProgram = await loadCandyProgramV2(provider) const { storage, nftStorageKey, ipfsInfuraProjectId, number, ipfsInfuraSecret, pinataJwt, pinataGateway, arweaveJwk, awsS3Bucket, retainAuthority, mutable, batchSize, price, splToken, treasuryWallet, gatekeeper, endSettings, hiddenSettings, whitelistMintSettings, goLiveDate, uuid, } = await getCandyMachineV2Config(publicKey, config, anchorProgram) try { const _candyMachine = await uploadV2({ files: supportedFiles, cacheName: 'example', env: "devnet", totalNFTs: elemCount, gatekeeper, storage, retainAuthority, mutable, batchSize, price, treasuryWallet, anchorProgram, walletKeyPair: anchorWallet, // from react solana wallet package endSettings, hiddenSettings, whitelistMintSettings, goLiveDate, rateLimit: null, }) if (typeof _candyMachine === 'string') candyMachine = _candyMachine console.log("Candy machine v2 successfully created!") } catch (err) { console.error("Error during candy machine v2 upload.") } } ``` ## Acknowledgements This SDK has been built thanks to Metaplex's Candy Machine CLI. ## License [Apache 2.0](./LICENSE) &copy; [Boxfish Studio] [Boxfish Studio]: https://boxfish.studio