export type PsyStake = { version: "0.1.0"; name: "psy_stake"; instructions: [ { name: "createStakePool"; accounts: [ { name: "stakePoolAuthority"; isMut: false; isSigner: true; }, { name: "payer"; isMut: true; isSigner: true; }, { name: "stakePool"; isMut: true; isSigner: false; }, { name: "stakingTokenMint"; isMut: false; isSigner: false; }, { name: "stakingTokenAccount"; isMut: true; isSigner: false; }, { name: "rent"; isMut: false; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }, { name: "systemProgram"; isMut: false; isSigner: false; } ]; args: [ { name: "uniqueSeed"; type: "u16"; }, { name: "nextEpochStartTime"; type: "i64"; }, { name: "epochDuration"; type: "i64"; } ]; }, { name: "createRewardPool"; accounts: [ { name: "stakePoolAuthority"; isMut: false; isSigner: true; }, { name: "payer"; isMut: true; isSigner: true; }, { name: "rewardPoolAuthority"; isMut: false; isSigner: false; }, { name: "stakePool"; isMut: true; isSigner: false; }, { name: "rewardPool"; isMut: true; isSigner: false; }, { name: "rewardRecord"; isMut: true; isSigner: false; }, { name: "rewardTokenMint"; isMut: false; isSigner: false; }, { name: "rewardTokenAccount"; isMut: true; isSigner: false; }, { name: "allocatedTokenAccount"; isMut: true; isSigner: false; }, { name: "rent"; isMut: false; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }, { name: "systemProgram"; isMut: false; isSigner: false; } ]; args: [ { name: "startingEpoch"; type: "u16"; }, { name: "distributionType"; type: { defined: "DistributionType"; }; }, { name: "rewardPerEpoch"; type: "u64"; }, { name: "epochRewardDecimals"; type: "u8"; } ]; }, { name: "updateRewardPool"; accounts: [ { name: "rewardPoolAuthority"; isMut: false; isSigner: true; }, { name: "stakePool"; isMut: true; isSigner: false; }, { name: "rewardPool"; isMut: true; isSigner: false; } ]; args: [ { name: "distributionType"; type: { defined: "DistributionType"; }; }, { name: "rewardPerEpoch"; type: "u64"; }, { name: "isActive"; type: "bool"; } ]; }, { name: "createStakingRecord"; accounts: [ { name: "recordOwner"; isMut: true; isSigner: true; }, { name: "stakePool"; isMut: false; isSigner: false; }, { name: "stakingRecord"; isMut: true; isSigner: false; }, { name: "systemProgram"; isMut: false; isSigner: false; } ]; args: []; }, { name: "stakeToken"; accounts: [ { name: "recordOwner"; isMut: false; isSigner: true; }, { name: "stakePool"; isMut: true; isSigner: false; }, { name: "stakingRecord"; isMut: true; isSigner: false; }, { name: "ownerTokenAccount"; isMut: true; isSigner: false; }, { name: "stakingTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; } ]; args: [ { name: "amount"; type: "u64"; }, { name: "lockupPeriod"; type: "u8"; } ]; }, { name: "unstakeToken"; accounts: [ { name: "recordOwner"; isMut: false; isSigner: true; }, { name: "stakePool"; isMut: true; isSigner: false; }, { name: "stakingRecord"; isMut: true; isSigner: false; }, { name: "ownerTokenAccount"; isMut: true; isSigner: false; }, { name: "stakingTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; } ]; args: [ { name: "amount"; type: "u64"; } ]; }, { name: "claimReward"; accounts: [ { name: "recordOwner"; isMut: false; isSigner: true; }, { name: "stakePool"; isMut: false; isSigner: false; }, { name: "stakingRecord"; isMut: true; isSigner: false; }, { name: "rewardPool"; isMut: false; isSigner: false; }, { name: "startRewardRecord"; isMut: false; isSigner: false; }, { name: "endRewardRecord"; isMut: true; isSigner: false; }, { name: "ownerTokenAccount"; isMut: true; isSigner: false; }, { name: "allocatedTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; } ]; args: []; }, { name: "createRewardRecord"; accounts: [ { name: "payer"; isMut: true; isSigner: true; }, { name: "stakePool"; isMut: false; isSigner: false; }, { name: "rewardPool"; isMut: false; isSigner: false; }, { name: "newRewardRecord"; isMut: true; isSigner: false; }, { name: "prevRewardRecord"; isMut: false; isSigner: false; }, { name: "rewardTokenAccount"; isMut: true; isSigner: false; }, { name: "allocatedTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }, { name: "systemProgram"; isMut: false; isSigner: false; } ]; args: []; }, { name: "updateRewardRecord"; accounts: [ { name: "stakePool"; isMut: false; isSigner: false; }, { name: "rewardPool"; isMut: false; isSigner: false; }, { name: "curRewardRecord"; isMut: true; isSigner: false; }, { name: "prevRewardRecord"; isMut: false; isSigner: false; }, { name: "rewardTokenAccount"; isMut: true; isSigner: false; }, { name: "allocatedTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; } ]; args: []; }, { name: "updateStakePoolEpoch"; accounts: [ { name: "stakePool"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; }, { name: "systemProgram"; isMut: false; isSigner: false; } ]; args: []; }, { name: "stakeByVault"; accounts: [ { name: "vaultAccount"; isMut: false; isSigner: true; }, { name: "stakingTokenMint"; isMut: false; isSigner: false; }, { name: "stakePool"; isMut: true; isSigner: false; }, { name: "stakingRecord"; isMut: true; isSigner: false; }, { name: "ownerTokenAccount"; isMut: true; isSigner: false; }, { name: "stakingTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; } ]; args: [ { name: "amount"; type: "u64"; }, { name: "lockupPeriod"; type: "u8"; } ]; }, { name: "claimRewardByVault"; accounts: [ { name: "vaultAccount"; isMut: false; isSigner: true; }, { name: "stakingTokenMint"; isMut: false; isSigner: false; }, { name: "stakePool"; isMut: false; isSigner: false; }, { name: "stakingRecord"; isMut: true; isSigner: false; }, { name: "rewardPool"; isMut: false; isSigner: false; }, { name: "startRewardRecord"; isMut: false; isSigner: false; }, { name: "endRewardRecord"; isMut: true; isSigner: false; }, { name: "allocatedTokenAccount"; isMut: true; isSigner: false; }, { name: "ownerTokenAccount"; isMut: true; isSigner: false; }, { name: "tokenProgram"; isMut: false; isSigner: false; } ]; args: []; } ]; accounts: [ { name: "StakePool"; type: { kind: "struct"; fields: [ { name: "stakePoolAuthority"; type: "publicKey"; }, { name: "stakingTokenMint"; type: "publicKey"; }, { name: "stakingTokenAccount"; type: "publicKey"; }, { name: "rewardPoolCount"; type: "u8"; }, { name: "currentEpoch"; type: "u16"; }, { name: "epochDuration"; type: "i64"; }, { name: "nextEpochStartTime"; type: "i64"; }, { name: "inactiveEpochVec"; type: { vec: "u16"; }; }, { name: "startingEpochVec"; type: { vec: "u16"; }; }, { name: "totalRewardUnits"; type: "u64"; }, { name: "stakePoolBump"; type: "u8"; }, { name: "stakingTokenAccountBump"; type: "u8"; }, { name: "uniqueSeed"; type: "u16"; } ]; }; }, { name: "RewardPool"; type: { kind: "struct"; fields: [ { name: "stakePool"; type: "publicKey"; }, { name: "rewardPoolAuthority"; type: "publicKey"; }, { name: "poolId"; type: "u8"; }, { name: "rewardTokenMint"; type: "publicKey"; }, { name: "rewardTokenAccount"; type: "publicKey"; }, { name: "allocatedTokenAccount"; type: "publicKey"; }, { name: "distributionType"; type: { defined: "DistributionType"; }; }, { name: "constantRewardPerEpoch"; type: "u64"; }, { name: "percentageRewardMbpsPerEpoch"; type: "u64"; }, { name: "startingEpoch"; type: "u16"; }, { name: "isActive"; type: "bool"; }, { name: "epochRewardDecimals"; type: "u8"; }, { name: "rewardPoolBump"; type: "u8"; }, { name: "rewardTokenAccountBump"; type: "u8"; }, { name: "allocatedTokenAccountBump"; type: "u8"; } ]; }; }, { name: "StakingRecord"; type: { kind: "struct"; fields: [ { name: "stakePool"; type: "publicKey"; }, { name: "recordOwner"; type: "publicKey"; }, { name: "stakedAmount"; type: "u64"; }, { name: "rewardUnits"; type: "u64"; }, { name: "lockUpExpiry"; type: "i64"; }, { name: "lastEpochClaimedVec"; type: { vec: "u16"; }; }, { name: "recordBump"; type: "u8"; } ]; }; }, { name: "RewardRecord"; type: { kind: "struct"; fields: [ { name: "stakePool"; type: "publicKey"; }, { name: "rewardPool"; type: "publicKey"; }, { name: "epoch"; type: "u16"; }, { name: "lastUpdated"; type: "i64"; }, { name: "epochEndTimestamp"; type: "i64"; }, { name: "cummulativeReward"; type: "u64"; }, { name: "epochReward"; type: "u64"; }, { name: "totalRewardAllocated"; type: "u64"; }, { name: "recordBump"; type: "u8"; }, { name: "isUpdatable"; type: "bool"; } ]; }; } ]; types: [ { name: "DistributionType"; type: { kind: "enum"; variants: [ { name: "Constant"; }, { name: "Percentage"; } ]; }; } ]; errors: [ { code: 6000; name: "InvalidStartTime"; msg: "Start time of next epoch must be in the future."; }, { code: 6001; name: "MinEpochDuration"; msg: "Epoch duration must be at least 4 hours."; }, { code: 6002; name: "InvalidStartingEpoch"; msg: "Starting epoch of RewardPool cannot be in the past."; }, { code: 6003; name: "InvalidPreviousRecord"; msg: "Previous record must be from one epoch before current record."; }, { code: 6004; name: "InvalidDistributionType"; msg: "Distribution type is not supported."; }, { code: 6005; name: "InvalidPercentage"; msg: "Percentage chosen is invalid."; }, { code: 6006; name: "RewardPoolsLimit"; msg: "Max. no. of RewardPool per stake pool has been reached."; }, { code: 6007; name: "RewardPoolInactive"; msg: "RewardPool is no longer active."; }, { code: 6008; name: "RewardRecordEpochConstraint"; msg: "RewardRecord cannot be created for future epochs."; }, { code: 6009; name: "LastUpdateMoreRecent"; msg: "RewardRecord cannot be updated as last update was more recent to epoch end."; }, { code: 6010; name: "EpochHasNotEnded"; msg: "The current epoch has not ended."; }, { code: 6011; name: "InsufficientAmount"; msg: "Insufficient amount for staking or unstaking."; }, { code: 6012; name: "InvalidLockupPeriod"; msg: "Invalid lockup period selected."; }, { code: 6013; name: "LockupPeriodTooShort"; msg: "Selected lockup period is too short."; }, { code: 6014; name: "LockupHasNotExpire"; msg: "Lockup period has not expire."; }, { code: 6015; name: "UnclaimedRewardPool"; msg: "Some RewardPool is unclaimed."; }, { code: 6016; name: "EndRecordMustBeSameOrNewer"; msg: "End RewardRecord must be from the same or later epoch than start RewardRecord."; }, { code: 6017; name: "NoRewardsAvailable"; msg: "No rewards available for claiming."; }, { code: 6018; name: "InvalidStartRewardRecord"; msg: "Start RewardRecord should be from the last epoch claimed."; }, { code: 6019; name: "RewardAlreadyClaimed"; msg: "Reward has already been claimed."; }, { code: 6020; name: "RewardPoolHasNotStarted"; msg: "Cannot change a RewardPool to inactive before it starts."; }, { code: 6021; name: "OwnerTokenAccountInvalid"; msg: "Owner token account is invalid."; }, { code: 6022; name: "RewardRecordCannotBeUpdated"; msg: "RewardRecord is not updatable."; }, { code: 6023; name: "InvalidSigner"; msg: "Signer of transaction must be an authorized vault account."; }, { code: 6024; name: "DecimalsLimit"; msg: "Limit of decimals allowed has been exceeded."; } ]; metadata: { address: "pSystkitWgLkzprdAvraP8DSBiXwee715wiSXGJe8yr"; }; }; export const IDL: PsyStake = { version: "0.1.0", name: "psy_stake", instructions: [ { name: "createStakePool", accounts: [ { name: "stakePoolAuthority", isMut: false, isSigner: true, }, { name: "payer", isMut: true, isSigner: true, }, { name: "stakePool", isMut: true, isSigner: false, }, { name: "stakingTokenMint", isMut: false, isSigner: false, }, { name: "stakingTokenAccount", isMut: true, isSigner: false, }, { name: "rent", isMut: false, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, { name: "systemProgram", isMut: false, isSigner: false, }, ], args: [ { name: "uniqueSeed", type: "u16", }, { name: "nextEpochStartTime", type: "i64", }, { name: "epochDuration", type: "i64", }, ], }, { name: "createRewardPool", accounts: [ { name: "stakePoolAuthority", isMut: false, isSigner: true, }, { name: "payer", isMut: true, isSigner: true, }, { name: "rewardPoolAuthority", isMut: false, isSigner: false, }, { name: "stakePool", isMut: true, isSigner: false, }, { name: "rewardPool", isMut: true, isSigner: false, }, { name: "rewardRecord", isMut: true, isSigner: false, }, { name: "rewardTokenMint", isMut: false, isSigner: false, }, { name: "rewardTokenAccount", isMut: true, isSigner: false, }, { name: "allocatedTokenAccount", isMut: true, isSigner: false, }, { name: "rent", isMut: false, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, { name: "systemProgram", isMut: false, isSigner: false, }, ], args: [ { name: "startingEpoch", type: "u16", }, { name: "distributionType", type: { defined: "DistributionType", }, }, { name: "rewardPerEpoch", type: "u64", }, { name: "epochRewardDecimals", type: "u8", }, ], }, { name: "updateRewardPool", accounts: [ { name: "rewardPoolAuthority", isMut: false, isSigner: true, }, { name: "stakePool", isMut: true, isSigner: false, }, { name: "rewardPool", isMut: true, isSigner: false, }, ], args: [ { name: "distributionType", type: { defined: "DistributionType", }, }, { name: "rewardPerEpoch", type: "u64", }, { name: "isActive", type: "bool", }, ], }, { name: "createStakingRecord", accounts: [ { name: "recordOwner", isMut: true, isSigner: true, }, { name: "stakePool", isMut: false, isSigner: false, }, { name: "stakingRecord", isMut: true, isSigner: false, }, { name: "systemProgram", isMut: false, isSigner: false, }, ], args: [], }, { name: "stakeToken", accounts: [ { name: "recordOwner", isMut: false, isSigner: true, }, { name: "stakePool", isMut: true, isSigner: false, }, { name: "stakingRecord", isMut: true, isSigner: false, }, { name: "ownerTokenAccount", isMut: true, isSigner: false, }, { name: "stakingTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, ], args: [ { name: "amount", type: "u64", }, { name: "lockupPeriod", type: "u8", }, ], }, { name: "unstakeToken", accounts: [ { name: "recordOwner", isMut: false, isSigner: true, }, { name: "stakePool", isMut: true, isSigner: false, }, { name: "stakingRecord", isMut: true, isSigner: false, }, { name: "ownerTokenAccount", isMut: true, isSigner: false, }, { name: "stakingTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, ], args: [ { name: "amount", type: "u64", }, ], }, { name: "claimReward", accounts: [ { name: "recordOwner", isMut: false, isSigner: true, }, { name: "stakePool", isMut: false, isSigner: false, }, { name: "stakingRecord", isMut: true, isSigner: false, }, { name: "rewardPool", isMut: false, isSigner: false, }, { name: "startRewardRecord", isMut: false, isSigner: false, }, { name: "endRewardRecord", isMut: true, isSigner: false, }, { name: "ownerTokenAccount", isMut: true, isSigner: false, }, { name: "allocatedTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, ], args: [], }, { name: "createRewardRecord", accounts: [ { name: "payer", isMut: true, isSigner: true, }, { name: "stakePool", isMut: false, isSigner: false, }, { name: "rewardPool", isMut: false, isSigner: false, }, { name: "newRewardRecord", isMut: true, isSigner: false, }, { name: "prevRewardRecord", isMut: false, isSigner: false, }, { name: "rewardTokenAccount", isMut: true, isSigner: false, }, { name: "allocatedTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, { name: "systemProgram", isMut: false, isSigner: false, }, ], args: [], }, { name: "updateRewardRecord", accounts: [ { name: "stakePool", isMut: false, isSigner: false, }, { name: "rewardPool", isMut: false, isSigner: false, }, { name: "curRewardRecord", isMut: true, isSigner: false, }, { name: "prevRewardRecord", isMut: false, isSigner: false, }, { name: "rewardTokenAccount", isMut: true, isSigner: false, }, { name: "allocatedTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, ], args: [], }, { name: "updateStakePoolEpoch", accounts: [ { name: "stakePool", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, { name: "systemProgram", isMut: false, isSigner: false, }, ], args: [], }, { name: "stakeByVault", accounts: [ { name: "vaultAccount", isMut: false, isSigner: true, }, { name: "stakingTokenMint", isMut: false, isSigner: false, }, { name: "stakePool", isMut: true, isSigner: false, }, { name: "stakingRecord", isMut: true, isSigner: false, }, { name: "ownerTokenAccount", isMut: true, isSigner: false, }, { name: "stakingTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, ], args: [ { name: "amount", type: "u64", }, { name: "lockupPeriod", type: "u8", }, ], }, { name: "claimRewardByVault", accounts: [ { name: "vaultAccount", isMut: false, isSigner: true, }, { name: "stakingTokenMint", isMut: false, isSigner: false, }, { name: "stakePool", isMut: false, isSigner: false, }, { name: "stakingRecord", isMut: true, isSigner: false, }, { name: "rewardPool", isMut: false, isSigner: false, }, { name: "startRewardRecord", isMut: false, isSigner: false, }, { name: "endRewardRecord", isMut: true, isSigner: false, }, { name: "allocatedTokenAccount", isMut: true, isSigner: false, }, { name: "ownerTokenAccount", isMut: true, isSigner: false, }, { name: "tokenProgram", isMut: false, isSigner: false, }, ], args: [], }, ], accounts: [ { name: "StakePool", type: { kind: "struct", fields: [ { name: "stakePoolAuthority", type: "publicKey", }, { name: "stakingTokenMint", type: "publicKey", }, { name: "stakingTokenAccount", type: "publicKey", }, { name: "rewardPoolCount", type: "u8", }, { name: "currentEpoch", type: "u16", }, { name: "epochDuration", type: "i64", }, { name: "nextEpochStartTime", type: "i64", }, { name: "inactiveEpochVec", type: { vec: "u16", }, }, { name: "startingEpochVec", type: { vec: "u16", }, }, { name: "totalRewardUnits", type: "u64", }, { name: "stakePoolBump", type: "u8", }, { name: "stakingTokenAccountBump", type: "u8", }, { name: "uniqueSeed", type: "u16", }, ], }, }, { name: "RewardPool", type: { kind: "struct", fields: [ { name: "stakePool", type: "publicKey", }, { name: "rewardPoolAuthority", type: "publicKey", }, { name: "poolId", type: "u8", }, { name: "rewardTokenMint", type: "publicKey", }, { name: "rewardTokenAccount", type: "publicKey", }, { name: "allocatedTokenAccount", type: "publicKey", }, { name: "distributionType", type: { defined: "DistributionType", }, }, { name: "constantRewardPerEpoch", type: "u64", }, { name: "percentageRewardMbpsPerEpoch", type: "u64", }, { name: "startingEpoch", type: "u16", }, { name: "isActive", type: "bool", }, { name: "epochRewardDecimals", type: "u8", }, { name: "rewardPoolBump", type: "u8", }, { name: "rewardTokenAccountBump", type: "u8", }, { name: "allocatedTokenAccountBump", type: "u8", }, ], }, }, { name: "StakingRecord", type: { kind: "struct", fields: [ { name: "stakePool", type: "publicKey", }, { name: "recordOwner", type: "publicKey", }, { name: "stakedAmount", type: "u64", }, { name: "rewardUnits", type: "u64", }, { name: "lockUpExpiry", type: "i64", }, { name: "lastEpochClaimedVec", type: { vec: "u16", }, }, { name: "recordBump", type: "u8", }, ], }, }, { name: "RewardRecord", type: { kind: "struct", fields: [ { name: "stakePool", type: "publicKey", }, { name: "rewardPool", type: "publicKey", }, { name: "epoch", type: "u16", }, { name: "lastUpdated", type: "i64", }, { name: "epochEndTimestamp", type: "i64", }, { name: "cummulativeReward", type: "u64", }, { name: "epochReward", type: "u64", }, { name: "totalRewardAllocated", type: "u64", }, { name: "recordBump", type: "u8", }, { name: "isUpdatable", type: "bool", }, ], }, }, ], types: [ { name: "DistributionType", type: { kind: "enum", variants: [ { name: "Constant", }, { name: "Percentage", }, ], }, }, ], errors: [ { code: 6000, name: "InvalidStartTime", msg: "Start time of next epoch must be in the future.", }, { code: 6001, name: "MinEpochDuration", msg: "Epoch duration must be at least 4 hours.", }, { code: 6002, name: "InvalidStartingEpoch", msg: "Starting epoch of RewardPool cannot be in the past.", }, { code: 6003, name: "InvalidPreviousRecord", msg: "Previous record must be from one epoch before current record.", }, { code: 6004, name: "InvalidDistributionType", msg: "Distribution type is not supported.", }, { code: 6005, name: "InvalidPercentage", msg: "Percentage chosen is invalid.", }, { code: 6006, name: "RewardPoolsLimit", msg: "Max. no. of RewardPool per stake pool has been reached.", }, { code: 6007, name: "RewardPoolInactive", msg: "RewardPool is no longer active.", }, { code: 6008, name: "RewardRecordEpochConstraint", msg: "RewardRecord cannot be created for future epochs.", }, { code: 6009, name: "LastUpdateMoreRecent", msg: "RewardRecord cannot be updated as last update was more recent to epoch end.", }, { code: 6010, name: "EpochHasNotEnded", msg: "The current epoch has not ended.", }, { code: 6011, name: "InsufficientAmount", msg: "Insufficient amount for staking or unstaking.", }, { code: 6012, name: "InvalidLockupPeriod", msg: "Invalid lockup period selected.", }, { code: 6013, name: "LockupPeriodTooShort", msg: "Selected lockup period is too short.", }, { code: 6014, name: "LockupHasNotExpire", msg: "Lockup period has not expire.", }, { code: 6015, name: "UnclaimedRewardPool", msg: "Some RewardPool is unclaimed.", }, { code: 6016, name: "EndRecordMustBeSameOrNewer", msg: "End RewardRecord must be from the same or later epoch than start RewardRecord.", }, { code: 6017, name: "NoRewardsAvailable", msg: "No rewards available for claiming.", }, { code: 6018, name: "InvalidStartRewardRecord", msg: "Start RewardRecord should be from the last epoch claimed.", }, { code: 6019, name: "RewardAlreadyClaimed", msg: "Reward has already been claimed.", }, { code: 6020, name: "RewardPoolHasNotStarted", msg: "Cannot change a RewardPool to inactive before it starts.", }, { code: 6021, name: "OwnerTokenAccountInvalid", msg: "Owner token account is invalid.", }, { code: 6022, name: "RewardRecordCannotBeUpdated", msg: "RewardRecord is not updatable.", }, { code: 6023, name: "InvalidSigner", msg: "Signer of transaction must be an authorized vault account.", }, { code: 6024, name: "DecimalsLimit", msg: "Limit of decimals allowed has been exceeded.", }, ], metadata: { address: "pSystkitWgLkzprdAvraP8DSBiXwee715wiSXGJe8yr", }, };