@blockassetlabs/blaze
Version:
Blockasset Blaze
128 lines • 5.1 kB
JavaScript
import { AnchorProvider, Program } from '@project-serum/anchor';
import { TOKEN_PROGRAM_ID } from '@solana/spl-token';
import { SystemProgram, SYSVAR_RECENT_BLOCKHASHES_PUBKEY } from '@solana/web3.js';
import { BLAZE_ADDRESS, BLAZE_IDL } from './constants';
export const initIdentifierInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.initIdentifier()
.accounts({
identifier: params.identifierId,
payer: wallet.publicKey,
systemProgram: SystemProgram.programId
})
.transaction();
};
export const initBlazeInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.initBlaze({
prizeMint: params.prizeMint,
tokenMint: params.tokenMint || null,
tokenAccount: params.tokenAccount || null,
treasury: params.treasury || null,
entrantFee: params.entrantFee,
maxEntrants: params.maxEntrants,
start: params.start,
end: params.end,
maxEntrantsPerWalletRate: params.maxEntrantsPerWalletRate || null,
category: params.category || null,
burnRate: params.burnRate || null
})
.accounts({
blaze: params.blazeId,
identifier: params.identifierId,
project: params.projectId,
projectWallet: params.projectWallet,
blazePrizeMintTokenAccount: params.blazePrizeMintTokenAccount,
authority: wallet.publicKey,
authorityPrizeMintTokenAccount: params.userPrizeMintTokenAccount,
entrants: params.entrants,
systemProgram: SystemProgram.programId,
tokenProgram: TOKEN_PROGRAM_ID
})
.transaction();
};
export const updateBlazeInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.updateBlaze({
tokenMint: params.tokenMint || null,
tokenAccount: params.tokenAccount || null,
treasury: params.treasury || null,
entrantFee: params.entrantFee,
start: params.start,
end: params.end,
maxEntrantsPerWalletRate: params.maxEntrantsPerWalletRate || null,
category: params.category || null,
burnRate: params.burnRate || null
})
.accounts({
blaze: params.blazeId,
project: params.projectId,
authority: wallet.publicKey
})
.transaction();
};
export const closeBlazeInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.closeBlaze()
.accounts({
blaze: params.blazeId,
project: params.projectId,
blazePrizeMintTokenAccount: params.blazePrizeMintTokenAccount,
authorityPrizeMintTokenAccount: params.userPrizeMintTokenAccount,
entrants: params.entrants,
authority: wallet.publicKey,
tokenProgram: TOKEN_PROGRAM_ID
})
.transaction();
};
export const redeemEntrantsInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.redeemEntrants(params.quantity)
.accounts({
blaze: params.blazeId,
entrants: params.entrants,
signer: wallet.publicKey,
systemProgram: SystemProgram.programId,
tokenProgram: TOKEN_PROGRAM_ID
})
.remainingAccounts(params.remainingAccountsForRedeem)
.transaction();
};
export const resolveBlazeInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.resolveBlaze()
.accounts({
blaze: params.blazeId,
entrants: params.entrants,
recentBlockhashes: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,
tokenProgram: TOKEN_PROGRAM_ID
})
.transaction();
};
export const claimPrizeInstruction = (connection, wallet, params) => {
const provider = new AnchorProvider(connection, wallet, {});
const blazeProgram = new Program(BLAZE_IDL, BLAZE_ADDRESS, provider);
return blazeProgram.methods
.claimPrize()
.accounts({
blaze: params.blazeId,
blazePrizeMintTokenAccount: params.blazePrizeMintTokenAccount,
winnerPrizeMintTokenAccount: params.winnerPrizeMintTokenAccount,
winner: wallet.publicKey,
tokenProgram: TOKEN_PROGRAM_ID
})
.transaction();
};
//# sourceMappingURL=instruction.js.map