@accessprotocol/distributor
Version:
Access Protocol Distributor Library
38 lines (37 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.newClaim = newClaim;
const web3_js_1 = require("@solana/web3.js");
const programId_1 = require("../programId");
const spl_token_1 = require("@solana/spl-token");
const spl_token_2 = require("@solana/spl-token");
const raw_instructions_1 = require("../raw_instructions");
/**
* Creates claim instructions for both unlocked and locked tokens.
* Returns both instructions if both amounts are > 0, otherwise returns the relevant one.
*/
function newClaim(amountUnlocked, amountLocked, proof, distributor, claimant, mint, programId = programId_1.PROGRAM_ID, tokenProgram = spl_token_1.TOKEN_PROGRAM_ID, systemProgram = web3_js_1.SystemProgram.programId) {
// Get claim status PDA
const claimStatus = web3_js_1.PublicKey.findProgramAddressSync([
Buffer.from("ClaimStatus"),
claimant.toBuffer(),
distributor.toBuffer(),
], programId)[0];
// Get distributor's token vault
const from = (0, spl_token_2.getAssociatedTokenAddressSync)(mint, distributor, true);
// Get claimant's token account
const to = (0, spl_token_2.getAssociatedTokenAddressSync)(mint, claimant, true);
return (0, raw_instructions_1.newClaimRaw)({
amountUnlocked,
amountLocked,
proof,
}, {
distributor,
claimStatus,
from,
to,
claimant,
tokenProgram,
systemProgram,
}, programId);
}