Type alias AtlasStakingIDL
AtlasStakingIDL: {
accounts: [{
name: "registeredStake";
type: {
fields: [{
docs: ["The admin for this [`RegisteredStake`]"];
name: "authority";
type: "publicKey";
}, {
docs: ["Mint address for tokens to be staked"];
name: "stakeMint";
type: "publicKey";
}, {
docs: ["Mint address for tokens which will be given as reward for staking"];
name: "rewardMint";
type: "publicKey";
}, {
docs: ["Current staking period"];
name: "currentPeriod";
type: "u16";
}, {
docs: ["Rate at which reward tokens will be distributed - Tokens in base units per day per REWARD_MULTIPLIER_BASE tokens staked", "Example - reward_multiplier = 228_938", "User will receive 228_938 reward_mint base units per day for every 1_000 stake_mint base units they have staked"];
name: "rewardMultiplier";
type: "u64";
}, {
docs: ["Amount of time, in seconds, the user must wait before withdrawing their staked tokens"];
name: "cooldownPeriod";
type: "u64";
}, {
docs: ["Bump seeds for [`RegisteredStake`] account"];
name: "bump";
type: "u8";
}];
kind: "struct";
};
}, {
name: "stakingAccount";
type: {
fields: [{
name: "owner";
type: "publicKey";
}, {
name: "registeredStake";
type: "publicKey";
}, {
name: "stakeMint";
type: "publicKey";
}, {
name: "totalStake";
type: "u64";
}, {
name: "activeStake";
type: "u64";
}, {
name: "pendingRewards";
type: "u64";
}, {
name: "paidRewards";
type: "u64";
}, {
name: "currentPeriod";
type: "u16";
}, {
name: "stakedAtTs";
type: "i64";
}, {
name: "lastPendingRewardCalcTs";
type: "i64";
}, {
name: "lastHarvestTs";
type: "i64";
}, {
name: "unstakedTs";
type: "i64";
}, {
name: "bump";
type: "u8";
}];
kind: "struct";
};
}, {
name: "stakingVars";
type: {
fields: [{
docs: ["The authority for the Staking Program"];
name: "authority";
type: "publicKey";
}, {
docs: ["Bump seed for [StakingVars] account"];
name: "bump";
type: "u8";
}];
kind: "struct";
};
}];
errors: [{
code: 6000;
msg: "Invalid Token Mint";
name: "InvalidMint";
}, {
code: 6001;
msg: "Account now owned by user";
name: "InvalidOwner";
}, {
code: 6002;
msg: "Insufficient token balance";
name: "InsufficientFunds";
}, {
code: 6003;
msg: "Invalid authority for this account";
name: "InvalidAuthority";
}, {
code: 6004;
msg: "Invalid deposit quantity";
name: "InvalidDepositQty";
}, {
code: 6005;
msg: "Numerical overflow error";
name: "NumericalOverflowError";
}, {
code: 6006;
msg: "Cannot stake while account is on cooldown";
name: "StakeOnCooldown";
}, {
code: 6007;
msg: "Invalid escrow authority";
name: "InvalidEscrowAuth";
}, {
code: 6008;
msg: "Cannot withdraw before cooldown period has elapsed";
name: "WithdrawOnCooldown";
}, {
code: 6009;
msg: "Staking account must be in the same period as the Registered Stake";
name: "InvalidPeriod";
}, {
code: 6010;
msg: "Staking account is not on cooldown";
name: "NotOnCooldown";
}];
instructions: [{
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}];
args: [];
name: "cancelUnstake";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["The solana system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "createStakingAccount";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being awarded"];
isMut: false;
isSigner: false;
name: "rewardMint";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["The user's `RewardMint` token account"];
isMut: true;
isSigner: false;
name: "userRewardAccount";
}, {
docs: ["The `RewardPda` associated with the [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "rewardAta";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}, {
docs: ["The rent sysvar"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The associated token program"];
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "harvest";
}, {
accounts: [{
isMut: true;
isSigner: true;
name: "updateAuthorityAccount";
}, {
isMut: true;
isSigner: false;
name: "stakingVarsAccount";
}, {
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "initializeStaking";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["The [StakingVars] account"];
isMut: false;
isSigner: false;
name: "stakingVarsAccount";
}, {
docs: ["The mint account for the token being staked"];
isMut: false;
isSigner: false;
name: "stakeMint";
}, {
docs: ["The mint account for the token being awarded"];
isMut: false;
isSigner: false;
name: "rewardMint";
}, {
docs: ["A [RegisteredStake] account"];
isMut: true;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An reward mint vault owned by the program"];
isMut: true;
isSigner: false;
name: "rewardAta";
}, {
docs: ["The solana rent sysvar"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The solana system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}, {
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The solana token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}];
args: [{
name: "rewardMultiplier";
type: "u64";
}, {
name: "cooldownPeriod";
type: "u64";
}];
name: "registerStake";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["A [StakingAccount] for the given user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}];
args: [{
name: "updatedStakingPeriod";
type: "u16";
}];
name: "settle";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being staked"];
isMut: false;
isSigner: false;
name: "stakeMint";
}, {
docs: ["The user's `StakeMint` token account"];
isMut: true;
isSigner: false;
name: "tokenSource";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["A PDA token escrow account associated with the user and [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "tokenEscrow";
}, {
docs: ["The rent system var"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}, {
docs: ["The associated token program"];
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The solana system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [{
name: "stakeAmount";
type: "u64";
}];
name: "stakeTokens";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being awarded"];
isMut: false;
isSigner: false;
name: "rewardMint";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["The user's `RewardMint` token account"];
isMut: true;
isSigner: false;
name: "userRewardAccount";
}, {
docs: ["The `RewardPda` associated with the [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "rewardAta";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}, {
docs: ["The rent sysvar"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The associated token program"];
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "unstakeTokens";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["A [RegisteredStake] account"];
isMut: true;
isSigner: false;
name: "registeredStake";
}];
args: [{
name: "cooldownPeriod";
type: "u64";
}];
name: "updateCooldownPeriod";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["A [RegisteredStake] account"];
isMut: true;
isSigner: false;
name: "registeredStake";
}];
args: [{
name: "rewardMultiplier";
type: "u64";
}, {
name: "newStakingPeriod";
type: "u16";
}];
name: "updateRewardMultiplier";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being staked"];
isMut: false;
isSigner: false;
name: "stakeMint";
}, {
docs: ["The user's `StakeMint` token account"];
isMut: true;
isSigner: false;
name: "tokenSource";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["A PDA token escrow account associated with the user and [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "tokenEscrow";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}];
args: [];
name: "withdrawTokens";
}];
name: "atlas_staking";
version: "0.1.0";
}
Type declaration
-
accounts: [{
name: "registeredStake";
type: {
fields: [{
docs: ["The admin for this [`RegisteredStake`]"];
name: "authority";
type: "publicKey";
}, {
docs: ["Mint address for tokens to be staked"];
name: "stakeMint";
type: "publicKey";
}, {
docs: ["Mint address for tokens which will be given as reward for staking"];
name: "rewardMint";
type: "publicKey";
}, {
docs: ["Current staking period"];
name: "currentPeriod";
type: "u16";
}, {
docs: ["Rate at which reward tokens will be distributed - Tokens in base units per day per REWARD_MULTIPLIER_BASE tokens staked", "Example - reward_multiplier = 228_938", "User will receive 228_938 reward_mint base units per day for every 1_000 stake_mint base units they have staked"];
name: "rewardMultiplier";
type: "u64";
}, {
docs: ["Amount of time, in seconds, the user must wait before withdrawing their staked tokens"];
name: "cooldownPeriod";
type: "u64";
}, {
docs: ["Bump seeds for [`RegisteredStake`] account"];
name: "bump";
type: "u8";
}];
kind: "struct";
};
}, {
name: "stakingAccount";
type: {
fields: [{
name: "owner";
type: "publicKey";
}, {
name: "registeredStake";
type: "publicKey";
}, {
name: "stakeMint";
type: "publicKey";
}, {
name: "totalStake";
type: "u64";
}, {
name: "activeStake";
type: "u64";
}, {
name: "pendingRewards";
type: "u64";
}, {
name: "paidRewards";
type: "u64";
}, {
name: "currentPeriod";
type: "u16";
}, {
name: "stakedAtTs";
type: "i64";
}, {
name: "lastPendingRewardCalcTs";
type: "i64";
}, {
name: "lastHarvestTs";
type: "i64";
}, {
name: "unstakedTs";
type: "i64";
}, {
name: "bump";
type: "u8";
}];
kind: "struct";
};
}, {
name: "stakingVars";
type: {
fields: [{
docs: ["The authority for the Staking Program"];
name: "authority";
type: "publicKey";
}, {
docs: ["Bump seed for [StakingVars] account"];
name: "bump";
type: "u8";
}];
kind: "struct";
};
}]
-
errors: [{
code: 6000;
msg: "Invalid Token Mint";
name: "InvalidMint";
}, {
code: 6001;
msg: "Account now owned by user";
name: "InvalidOwner";
}, {
code: 6002;
msg: "Insufficient token balance";
name: "InsufficientFunds";
}, {
code: 6003;
msg: "Invalid authority for this account";
name: "InvalidAuthority";
}, {
code: 6004;
msg: "Invalid deposit quantity";
name: "InvalidDepositQty";
}, {
code: 6005;
msg: "Numerical overflow error";
name: "NumericalOverflowError";
}, {
code: 6006;
msg: "Cannot stake while account is on cooldown";
name: "StakeOnCooldown";
}, {
code: 6007;
msg: "Invalid escrow authority";
name: "InvalidEscrowAuth";
}, {
code: 6008;
msg: "Cannot withdraw before cooldown period has elapsed";
name: "WithdrawOnCooldown";
}, {
code: 6009;
msg: "Staking account must be in the same period as the Registered Stake";
name: "InvalidPeriod";
}, {
code: 6010;
msg: "Staking account is not on cooldown";
name: "NotOnCooldown";
}]
-
instructions: [{
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}];
args: [];
name: "cancelUnstake";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["The solana system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "createStakingAccount";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being awarded"];
isMut: false;
isSigner: false;
name: "rewardMint";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["The user's `RewardMint` token account"];
isMut: true;
isSigner: false;
name: "userRewardAccount";
}, {
docs: ["The `RewardPda` associated with the [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "rewardAta";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}, {
docs: ["The rent sysvar"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The associated token program"];
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "harvest";
}, {
accounts: [{
isMut: true;
isSigner: true;
name: "updateAuthorityAccount";
}, {
isMut: true;
isSigner: false;
name: "stakingVarsAccount";
}, {
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "initializeStaking";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["The [StakingVars] account"];
isMut: false;
isSigner: false;
name: "stakingVarsAccount";
}, {
docs: ["The mint account for the token being staked"];
isMut: false;
isSigner: false;
name: "stakeMint";
}, {
docs: ["The mint account for the token being awarded"];
isMut: false;
isSigner: false;
name: "rewardMint";
}, {
docs: ["A [RegisteredStake] account"];
isMut: true;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An reward mint vault owned by the program"];
isMut: true;
isSigner: false;
name: "rewardAta";
}, {
docs: ["The solana rent sysvar"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The solana system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}, {
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The solana token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}];
args: [{
name: "rewardMultiplier";
type: "u64";
}, {
name: "cooldownPeriod";
type: "u64";
}];
name: "registerStake";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["A [StakingAccount] for the given user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}];
args: [{
name: "updatedStakingPeriod";
type: "u16";
}];
name: "settle";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being staked"];
isMut: false;
isSigner: false;
name: "stakeMint";
}, {
docs: ["The user's `StakeMint` token account"];
isMut: true;
isSigner: false;
name: "tokenSource";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["A PDA token escrow account associated with the user and [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "tokenEscrow";
}, {
docs: ["The rent system var"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}, {
docs: ["The associated token program"];
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The solana system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [{
name: "stakeAmount";
type: "u64";
}];
name: "stakeTokens";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being awarded"];
isMut: false;
isSigner: false;
name: "rewardMint";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["The user's `RewardMint` token account"];
isMut: true;
isSigner: false;
name: "userRewardAccount";
}, {
docs: ["The `RewardPda` associated with the [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "rewardAta";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}, {
docs: ["The rent sysvar"];
isMut: false;
isSigner: false;
name: "rent";
}, {
docs: ["The associated token program"];
isMut: false;
isSigner: false;
name: "associatedTokenProgram";
}, {
docs: ["The system program"];
isMut: false;
isSigner: false;
name: "systemProgram";
}];
args: [];
name: "unstakeTokens";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["A [RegisteredStake] account"];
isMut: true;
isSigner: false;
name: "registeredStake";
}];
args: [{
name: "cooldownPeriod";
type: "u64";
}];
name: "updateCooldownPeriod";
}, {
accounts: [{
docs: ["The authority on the [RegisteredStake] account"];
isMut: true;
isSigner: true;
name: "authority";
}, {
docs: ["A [RegisteredStake] account"];
isMut: true;
isSigner: false;
name: "registeredStake";
}];
args: [{
name: "rewardMultiplier";
type: "u64";
}, {
name: "newStakingPeriod";
type: "u16";
}];
name: "updateRewardMultiplier";
}, {
accounts: [{
docs: ["The user calling this instruction"];
isMut: true;
isSigner: true;
name: "user";
}, {
docs: ["The mint account for the token being staked"];
isMut: false;
isSigner: false;
name: "stakeMint";
}, {
docs: ["The user's `StakeMint` token account"];
isMut: true;
isSigner: false;
name: "tokenSource";
}, {
docs: ["A [RegisteredStake] account"];
isMut: false;
isSigner: false;
name: "registeredStake";
}, {
docs: ["An initialized [StakingAccount] owned by the user"];
isMut: true;
isSigner: false;
name: "stakingAccount";
}, {
docs: ["A PDA token escrow account associated with the user and [RegisteredStake]"];
isMut: true;
isSigner: false;
name: "tokenEscrow";
}, {
docs: ["The token program"];
isMut: false;
isSigner: false;
name: "tokenProgram";
}];
args: [];
name: "withdrawTokens";
}]
-
name: "atlas_staking"
-
version: "0.1.0"