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, stakePoolAuthority: PublicKey, stakePool: PublicKey, stakingTokenMint: PublicKey, uniqueSeed: number, nextEpochStartTime: BN, epochDuration: BN, payer?: PublicKey ) => { const [stakingTokenAccount] = await pdas.deriveStakingTokenAccount( program.programId, stakePool ); let accounts: any = { stakePoolAuthority, stakePool, stakingTokenMint, stakingTokenAccount, }; if (payer) accounts.payer = payer; return await program.methods .createStakePool(uniqueSeed, nextEpochStartTime, epochDuration) .accounts(accounts); }; export const createStakePoolInstruction = async ( program: Program, stakePoolAuthority: PublicKey, stakePool: PublicKey, stakingTokenMint: PublicKey, uniqueSeed: number, nextEpochStartTime: BN, epochDuration: BN, payer?: PublicKey ) => { return ( await getMethodBuilder( program, stakePoolAuthority, stakePool, stakingTokenMint, uniqueSeed, nextEpochStartTime, epochDuration, payer ) ).instruction(); }; export const createStakePoolRpc = async ( program: Program, stakePoolAuthority: PublicKey, stakePool: PublicKey, stakingTokenMint: PublicKey, uniqueSeed: number, nextEpochStartTime: BN, epochDuration: BN, signers: Signer[], payer?: PublicKey ) => { return ( await getMethodBuilder( program, stakePoolAuthority, stakePool, stakingTokenMint, uniqueSeed, nextEpochStartTime, epochDuration, payer ) ) .signers(signers) .rpc(); };