Package Exports
- @boxfish-studio/candymachine-client-sdk
- @boxfish-studio/candymachine-client-sdk/dist/index.js
- @boxfish-studio/candymachine-client-sdk/dist/index.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@boxfish-studio/candymachine-client-sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Candymachine Client SDK
A full-featured Solana Metaplex Candy Machine V2 client-side library in Typescript
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
Installation
$ npm i @boxfish-studio/candymachine-client-sdk
$ yarn add @boxfish-studio/candymachine-client-sdk
$ pnpm add @boxfish-studio/candymachine-client-sdk
How to use
Upload your first Candy Machine v2
- Import
uploadV2, loadCandyProgramV2, StorageType, verifyAssets
functions and enums:
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.