parasol-finance-sdk v1.7.0
Installation
npm i @parasol-finance/parasol-finance-sdk
Example Usages
Initialize program wrappers
const { connection } = useConnection();
const { publicKey, sendTransaction } = useWallet();
// initialize provider
const provider = new AnchorProvider(connection, useWallet() as any, {
preflightCommitment: "confirmed",
});
// NFT store config
const config: NftStoreConfig = {
paymentMint: new PublicKey(process.env.NEXT_PUBLIC_PAYMENT_MINT),
collectionMint: new PublicKey(process.env.NEXT_PUBLIC_COLLECTION_MINT),
}
// initialize program wrappers
const nftStore = await new NftStore(provider, config).build();
const nftKinds = await Promise.all(
[0,1,2,3].map((tier) => new NftKind(provider, tier).build())
);
const projectKinds = await Promise.all(
[0,1,2].map((tier) => new ProjectKind(provider, tier).build())
);
const user = await new User(provider, nftStore).build();
const migrator = new Migrator(provider, user, nftKinds);
// get current supply / max supply of nftKind
const nftKindT1Data = await nftKinds[0].data();
console.log(nftKindT1Data.currentSupply, "/", nftKindT1Data.maxSupply);
Mint a new NFT
try {
// random keypair for new NFT mint
const mintKeypair = Keypair.generate();
// purchase for tier 1
const tx = await user.purchase(mintKeypair.publicKey, nftKinds[0]);
// sign transaction
let signature = await sendTransaction(tx, connection, { signers: [mintKeypair] });
// confirm transaction
await connection.confirmTransaction(signature, "confirmed");
} catch (err) {
// handle custom program error code
}
Upgrade an old NFT
try {
// random keypair for new NFT mint
const mintKeypair = Keypair.generate();
// upgrade selected old NFT in the whitelist, mint a new NFT
const tx = await migrator.upgrade(nftMint, mintKeypair.publicKey);
// sign transaction
let signature = await sendTransaction(tx, connection, { signers: [mintKeypair] });
// confirm transaction
await connection.confirmTransaction(signature, "confirmed");
} catch (err) {
// handle custom program error code
}
Create a new Project
try {
// random keypair for new Project
// it doesn't require to use Keypair to read project on-chain metadata
// it's only needed to create a new project
const projectKeypair = Keypair.generate();
const project = await new Project(provider, store, projectKeypair.publicKey).build();
const tx = await project.create(args, user);
// sign transaction
let signature = await sendTransaction(tx, connection, { signers: [projectKeypair] });
// confirm transaction
await connection.confirmTransaction(signature, "confirmed");
} catch (err) {
// handle custom program error code
}
APIs
NFT Kind
- data()
User
- purchase(nftMint, nftKind)
- redeem(nftMint)
- getParticipateReceipts(nftMint)
- getNFTList()
Migrator
- upgrade(nftMint, mint)
- getNFTList()
- getParticipateAmount(nftMint, project, salePrice, rewardDecimals)
- getAssociatedTokenAccountFor(mint)
Project
- data()
- create(args, user)
- update(args, user)
- participate(args, user)
- getParticipateAmount(nftMint, project, salePrice, rewardDecimals)
Addresses
Devnet
- PSOL Mint: HK3Q8SJYiV1kLo3b6vfwLnL45nhunnt4kSBVQNa3Z28J
- Collection NFT: NxD1rrjyfV8yksm5RE6hX3qqY7TAbV1E5Vxxe4qvrMR
Mainnet
- PSOL Mint: Hmatmu1ktLbobSvim94mfpZmjL5iiyoM1zidtXJRAdLZ
- Collection NFT: Fp5Qz3BgRAWQQ1E67LHNrn8nxFyUyJUzYHf95QXAGwY3
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago