{ "version": "0.7.0", "name": "spl_stake_pool", "instructions": [ { "name": "initialize", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "manager", "isMut": false, "isSigner": true }, { "name": "staker", "isMut": false, "isSigner": false }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "validatorList", "isMut": true, "isSigner": false }, { "name": "reserveStake", "isMut": false, "isSigner": false }, { "name": "poolMint", "isMut": true, "isSigner": false }, { "name": "managerPoolAccount", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "fee", "type": { "defined": "Fee" } }, { "name": "withdrawalFee", "type": { "defined": "Fee" } }, { "name": "depositFee", "type": { "defined": "Fee" } }, { "name": "referralFee", "type": "u8" }, { "name": "maxValidators", "type": "u32" } ] }, { "name": "addValidatorToPool", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "staker", "isMut": false, "isSigner": true }, { "name": "funder", "isMut": true, "isSigner": true }, { "name": "stakePoolWithdraw", "isMut": false, "isSigner": false }, { "name": "validatorList", "isMut": true, "isSigner": false }, { "name": "stake", "isMut": true, "isSigner": false }, { "name": "validator", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "sysvarStakeHistory", "isMut": false, "isSigner": false }, { "name": "stakeConfig", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "removeValidatorFromPool", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "staker", "isMut": false, "isSigner": true }, { "name": "stakePoolWithdraw", "isMut": false, "isSigner": false }, { "name": "newStakeAuthority", "isMut": false, "isSigner": false }, { "name": "validatorList", "isMut": true, "isSigner": false }, { "name": "stakeAccount", "isMut": true, "isSigner": false }, { "name": "transientStakeAccount", "isMut": false, "isSigner": false }, { "name": "destinationStakeAccount", "isMut": true, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "decreaseValidatorStake", "accounts": [ { "name": "stakePool", "isMut": false, "isSigner": false }, { "name": "staker", "isMut": false, "isSigner": true }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "validatorList", "isMut": true, "isSigner": false }, { "name": "validatorStake", "isMut": true, "isSigner": false }, { "name": "transientStake", "isMut": true, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "lamports", "type": "u64" }, { "name": "transientStakeSeed", "type": "u64" } ] }, { "name": "increaseValidatorStake", "accounts": [ { "name": "stakePool", "isMut": false, "isSigner": false }, { "name": "staker", "isMut": false, "isSigner": true }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "validatorList", "isMut": true, "isSigner": false }, { "name": "reserveStake", "isMut": true, "isSigner": false }, { "name": "transientStake", "isMut": true, "isSigner": false }, { "name": "validatorStake", "isMut": false, "isSigner": false }, { "name": "validator", "isMut": false, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false }, { "name": "sysvarStakeHistory", "isMut": false, "isSigner": false }, { "name": "stakeConfig", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "lamports", "type": "u64" }, { "name": "transientStakeSeed", "type": "u64" } ] }, { "name": "setPreferredValidator", "accounts": [ { "name": "stakePoolAddress", "isMut": true, "isSigner": false }, { "name": "staker", "isMut": false, "isSigner": true }, { "name": "validatorListAddress", "isMut": false, "isSigner": false } ], "args": [ { "name": "validatorType", "type": { "defined": "PreferredValidatorType" } }, { "name": "validatorVoteAddress", "type": { "option": "publicKey" } } ] }, { "name": "updateValidatorListBalance", "accounts": [ { "name": "stakePool", "isMut": false, "isSigner": false }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "validatorListAddress", "isMut": true, "isSigner": false }, { "name": "reserveStake", "isMut": true, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "sysvarStakeHistory", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "startIndex", "type": "u32" }, { "name": "noMerge", "type": "bool" } ] }, { "name": "updateStakePoolBalance", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "withdrawAuthority", "isMut": false, "isSigner": false }, { "name": "validatorListStorage", "isMut": true, "isSigner": false }, { "name": "reserveStake", "isMut": false, "isSigner": false }, { "name": "managerFeeAccount", "isMut": true, "isSigner": false }, { "name": "stakePoolMint", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "cleanupRemovedValidatorEntries", "accounts": [ { "name": "stakePool", "isMut": false, "isSigner": false }, { "name": "validatorListStorage", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "depositStake", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "validatorListStorage", "isMut": true, "isSigner": false }, { "name": "stakePoolDepositAuthority", "isMut": false, "isSigner": false }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "depositStakeAddress", "isMut": true, "isSigner": false }, { "name": "validatorStakeAccount", "isMut": true, "isSigner": false }, { "name": "reserveStakeAccount", "isMut": true, "isSigner": false }, { "name": "poolTokensTo", "isMut": true, "isSigner": false }, { "name": "managerFeeAccount", "isMut": true, "isSigner": false }, { "name": "referrerPoolTokensAccount", "isMut": true, "isSigner": false }, { "name": "poolMint", "isMut": true, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "sysvarStakeHistory", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "withdrawStake", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "validatorListStorage", "isMut": true, "isSigner": false }, { "name": "stakePoolWithdraw", "isMut": false, "isSigner": false }, { "name": "stakeToSplit", "isMut": true, "isSigner": false }, { "name": "stakeToReceive", "isMut": true, "isSigner": false }, { "name": "userStakeAuthority", "isMut": false, "isSigner": false }, { "name": "userTransferAuthority", "isMut": false, "isSigner": true }, { "name": "userPoolTokenAccount", "isMut": true, "isSigner": false }, { "name": "managerFeeAccount", "isMut": true, "isSigner": false }, { "name": "poolMint", "isMut": true, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "arg", "type": "u64" } ] }, { "name": "setManager", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "manager", "isMut": false, "isSigner": true }, { "name": "newManager", "isMut": false, "isSigner": true }, { "name": "newFeeReceiver", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "setFee", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "manager", "isMut": false, "isSigner": true } ], "args": [ { "name": "fee", "type": { "defined": "FeeType" } } ] }, { "name": "setStaker", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "setStakerAuthority", "isMut": false, "isSigner": true }, { "name": "newStaker", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "depositSol", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "reserveStakeAccount", "isMut": true, "isSigner": false }, { "name": "lamportsFrom", "isMut": true, "isSigner": true }, { "name": "poolTokensTo", "isMut": true, "isSigner": false }, { "name": "managerFeeAccount", "isMut": true, "isSigner": false }, { "name": "referrerPoolTokensAccount", "isMut": true, "isSigner": false }, { "name": "poolMint", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "arg", "type": "u64" } ] }, { "name": "setFundingAuthority", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "manager", "isMut": false, "isSigner": true } ], "args": [ { "name": "arg", "type": { "defined": "FundingType" } } ] }, { "name": "withdrawSol", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "userTransferAuthority", "isMut": false, "isSigner": true }, { "name": "poolTokensFrom", "isMut": true, "isSigner": false }, { "name": "reserveStakeAccount", "isMut": true, "isSigner": false }, { "name": "lamportsTo", "isMut": true, "isSigner": false }, { "name": "managerFeeAccount", "isMut": true, "isSigner": false }, { "name": "poolMint", "isMut": true, "isSigner": false }, { "name": "clock", "isMut": false, "isSigner": false }, { "name": "sysvarStakeHistory", "isMut": false, "isSigner": false }, { "name": "stakeProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "arg", "type": "u64" } ] }, { "name": "createTokenMetadata", "accounts": [ { "name": "stakePool", "isMut": false, "isSigner": false }, { "name": "manager", "isMut": false, "isSigner": true }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "poolMint", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "tokenMetadata", "isMut": true, "isSigner": false }, { "name": "mplTokenMetadata", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [ { "name": "name", "type": "string" }, { "name": "symbol", "type": "string" }, { "name": "uri", "type": "string" } ] }, { "name": "updateTokenMetadata", "accounts": [ { "name": "stakePool", "isMut": false, "isSigner": false }, { "name": "manager", "isMut": false, "isSigner": true }, { "name": "stakePoolWithdrawAuthority", "isMut": false, "isSigner": false }, { "name": "tokenMetadata", "isMut": true, "isSigner": false }, { "name": "mplTokenMetadata", "isMut": false, "isSigner": false } ], "args": [ { "name": "name", "type": "string" }, { "name": "symbol", "type": "string" }, { "name": "uri", "type": "string" } ] } ], "accounts": [ { "name": "StakePool", "type": { "kind": "struct", "fields": [ { "name": "accountType", "type": { "defined": "AccountType" } }, { "name": "manager", "type": "publicKey" }, { "name": "staker", "type": "publicKey" }, { "name": "stakeDepositAuthority", "type": "publicKey" }, { "name": "stakeWithdrawBumpSeed", "type": "u8" }, { "name": "validatorList", "type": "publicKey" }, { "name": "reserveStake", "type": "publicKey" }, { "name": "poolMint", "type": "publicKey" }, { "name": "managerFeeAccount", "type": "publicKey" }, { "name": "tokenProgramId", "type": "publicKey" }, { "name": "totalLamports", "type": "u64" }, { "name": "poolTokenSupply", "type": "u64" }, { "name": "lastUpdateEpoch", "type": "u64" }, { "name": "lockup", "type": { "defined": "Lockup" } }, { "name": "epochFee", "type": { "defined": "Fee" } }, { "name": "nextEpochFee", "type": { "option": { "defined": "Fee" } } }, { "name": "preferredDepositValidatorVoteAddress", "type": { "option": "publicKey" } }, { "name": "preferredWithdrawValidatorVoteAddress", "type": { "option": "publicKey" } }, { "name": "stakeDepositFee", "type": { "defined": "Fee" } }, { "name": "stakeWithdrawalFee", "type": { "defined": "Fee" } }, { "name": "nextStakeWithdrawalFee", "type": { "option": { "defined": "Fee" } } }, { "name": "stakeReferralFee", "type": "u8" }, { "name": "solDepositAuthority", "type": { "option": "publicKey" } }, { "name": "solDepositFee", "type": { "defined": "Fee" } }, { "name": "solReferralFee", "type": "u8" }, { "name": "solWithdrawAuthority", "type": { "option": "publicKey" } }, { "name": "solWithdrawalFee", "type": { "defined": "Fee" } }, { "name": "nextSolWithdrawalFee", "type": { "option": { "defined": "Fee" } } }, { "name": "lastEpochPoolTokenSupply", "type": "u64" }, { "name": "lastEpochTotalLamports", "type": "u64" } ] } }, { "name": "ValidatorStakeInfo", "type": { "kind": "struct", "fields": [ { "name": "activeStakeLamports", "type": "u64" }, { "name": "transientStakeLamports", "type": "u64" }, { "name": "lastUpdateEpoch", "type": "u64" }, { "name": "transientSeedSuffixStart", "type": "u64" }, { "name": "transientSeedSuffixEnd", "type": "u64" }, { "name": "status", "type": { "defined": "StakeStatus" } }, { "name": "voteAccountAddress", "type": "publicKey" } ] } }, { "name": "ValidatorList", "type": { "kind": "struct", "fields": [ { "name": "header", "type": { "defined": "ValidatorListHeader" } }, { "name": "validators", "type": { "vec": { "defined": "ValidatorStakeInfo" } } } ] } } ], "types": [ { "name": "Fee", "type": { "kind": "struct", "fields": [ { "name": "denominator", "type": "u64" }, { "name": "numerator", "type": "u64" } ] } }, { "name": "ValidatorListHeader", "type": { "kind": "struct", "fields": [ { "name": "accountType", "type": { "defined": "AccountType" } }, { "name": "maxValidators", "type": "u32" } ] } }, { "name": "AccountType", "type": { "kind": "enum", "variants": [ { "name": "Uninitialized" }, { "name": "StakePool" }, { "name": "ValidatorList" } ] } }, { "name": "StakeStatus", "type": { "kind": "enum", "variants": [ { "name": "Active" }, { "name": "DeactivatingTransient" }, { "name": "ReadyForRemoval" } ] } }, { "name": "PreferredValidatorType", "type": { "kind": "enum", "variants": [ { "name": "Deposit" }, { "name": "Withdraw" } ] } }, { "name": "FeeType", "type": { "kind": "enum", "variants": [ { "name": "SolReferral", "fields": [ "u8" ] }, { "name": "StakeReferral", "fields": [ "u8" ] }, { "name": "Epoch", "fields": [ { "defined": "Fee" } ] }, { "name": "StakeWithdrawal", "fields": [ { "defined": "Fee" } ] }, { "name": "SolDeposit", "fields": [ { "defined": "Fee" } ] }, { "name": "StakeDeposit", "fields": [ { "defined": "Fee" } ] }, { "name": "SolWithdrawal", "fields": [ { "defined": "Fee" } ] } ] } }, { "name": "FundingType", "type": { "kind": "enum", "variants": [ { "name": "StakeDeposit" }, { "name": "SolDeposit" }, { "name": "SolWithdraw" } ] } } ], "errors": [ { "code": 0, "name": "AlreadyInUse", "msg": "AlreadyInUse" }, { "code": 1, "name": "InvalidProgramAddress", "msg": "InvalidProgramAddress" }, { "code": 2, "name": "InvalidState", "msg": "InvalidState" }, { "code": 3, "name": "CalculationFailure", "msg": "CalculationFailure" }, { "code": 4, "name": "FeeTooHigh", "msg": "FeeTooHigh" }, { "code": 5, "name": "WrongAccountMint", "msg": "WrongAccountMint" }, { "code": 6, "name": "WrongManager", "msg": "WrongManager" }, { "code": 7, "name": "SignatureMissing", "msg": "SignatureMissing" }, { "code": 8, "name": "InvalidValidatorStakeList", "msg": "InvalidValidatorStakeList" }, { "code": 9, "name": "InvalidFeeAccount", "msg": "InvalidFeeAccount" }, { "code": 10, "name": "WrongPoolMint", "msg": "WrongPoolMint" }, { "code": 11, "name": "WrongStakeState", "msg": "WrongStakeState" }, { "code": 12, "name": "UserStakeNotActive", "msg": "UserStakeNotActive" }, { "code": 13, "name": "ValidatorAlreadyAdded", "msg": "ValidatorAlreadyAdded" }, { "code": 14, "name": "ValidatorNotFound", "msg": "ValidatorNotFound" }, { "code": 15, "name": "InvalidStakeAccountAddress", "msg": "InvalidStakeAccountAddress" }, { "code": 16, "name": "StakeListOutOfDate", "msg": "StakeListOutOfDate" }, { "code": 17, "name": "StakeListAndPoolOutOfDate", "msg": "StakeListAndPoolOutOfDate" }, { "code": 18, "name": "UnknownValidatorStakeAccount", "msg": "UnknownValidatorStakeAccount" }, { "code": 19, "name": "WrongMintingAuthority", "msg": "WrongMintingAuthority" }, { "code": 20, "name": "UnexpectedValidatorListAccountSize", "msg": "UnexpectedValidatorListAccountSize" }, { "code": 21, "name": "WrongStaker", "msg": "WrongStaker" }, { "code": 22, "name": "NonZeroPoolTokenSupply", "msg": "NonZeroPoolTokenSupply" }, { "code": 23, "name": "StakeLamportsNotEqualToMinimum", "msg": "StakeLamportsNotEqualToMinimum" }, { "code": 24, "name": "IncorrectDepositVoteAddress", "msg": "IncorrectDepositVoteAddress" }, { "code": 25, "name": "IncorrectWithdrawVoteAddress", "msg": "IncorrectWithdrawVoteAddress" }, { "code": 26, "name": "InvalidMintFreezeAuthority", "msg": "InvalidMintFreezeAuthority" }, { "code": 27, "name": "FeeIncreaseTooHigh", "msg": "FeeIncreaseTooHigh" }, { "code": 28, "name": "WithdrawalTooSmall", "msg": "WithdrawalTooSmall" }, { "code": 29, "name": "DepositTooSmall", "msg": "DepositTooSmall" }, { "code": 30, "name": "InvalidStakeDepositAuthority", "msg": "InvalidStakeDepositAuthority" }, { "code": 31, "name": "InvalidSolDepositAuthority", "msg": "InvalidSolDepositAuthority" }, { "code": 32, "name": "InvalidPreferredValidator", "msg": "InvalidPreferredValidator" }, { "code": 33, "name": "TransientAccountInUse", "msg": "TransientAccountInUse" }, { "code": 34, "name": "InvalidSolWithdrawAuthority", "msg": "InvalidSolWithdrawAuthority" }, { "code": 35, "name": "SolWithdrawalTooLarge", "msg": "SolWithdrawalTooLarge" }, { "code": 36, "name": "InvalidMetadataAccount", "msg": "InvalidMetadataAccount" } ] }