import { BN, Program } from "@project-serum/anchor"; import { PublicKey, Signer } from "@solana/web3.js"; import { PsyStake } from "../../psy_stake"; import * as pdas from "../../pdas"; const getMethodBuilder = async ( program: Program, payer: PublicKey, stakePool: PublicKey, poolId: number, epochToCreate: number ) => { const poolAccounts = await pdas.deriveRewardPoolPdas( program.programId, stakePool, poolId, epochToCreate - 1 ); return await program.methods.createRewardRecord().accounts({ payer, stakePool, rewardPool: poolAccounts.rewardPool, newRewardRecord: poolAccounts.nextRewardRecord, prevRewardRecord: poolAccounts.rewardRecord, rewardTokenAccount: poolAccounts.rewardTokenAccount, allocatedTokenAccount: poolAccounts.allocatedTokenAccount, }); }; export const createRewardRecordInstruction = async ( program: Program, payer: PublicKey, stakePool: PublicKey, poolId: number, currentEpoch: number ) => { return ( await getMethodBuilder(program, payer, stakePool, poolId, currentEpoch) ).instruction(); }; export const createRewardRecordRpc = async ( program: Program, payer: PublicKey, stakePool: PublicKey, poolId: number, currentEpoch: number, signers: Signer[] ) => { return ( await getMethodBuilder(program, payer, stakePool, poolId, currentEpoch) ) .signers(signers) .rpc(); };