export declare 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 declare const IDL: PsyStake; //# sourceMappingURL=psy_stake.d.ts.map