triad_protocol/state/
stake.rs

1use anchor_lang::prelude::*;
2
3#[account]
4pub struct StakeV2 {
5    pub bump: u8,
6    pub authority: Pubkey,
7    pub init_ts: i64,
8    pub withdraw_ts: i64,
9    pub claimed_ts: i64,
10    pub name: String,
11    pub mint: Pubkey,
12    pub boost: bool,
13    pub stake_vault: Pubkey,
14    pub claimed: u64,
15    pub available: u64,
16    pub amount: u64,
17}
18
19#[account]
20pub struct StakeVault {
21    pub bump: u8,
22    pub authority: Pubkey,
23    pub init_ts: i64,
24    pub end_ts: i64,
25    pub amount: u64,
26    pub amount_paid: u64,
27    pub token_decimals: u8,
28    pub nft_staked: u64,
29    pub slots: u64,
30    pub is_locked: bool,
31    pub name: String,
32    pub collection: String,
33    pub token_mint: Pubkey,
34    pub week: u8,
35    pub token_staked: u64,
36    pub sum_all_users: f64,
37    pub padding: [u8; 32],
38}
39
40#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
41pub struct StakeNFTArgs {
42    pub name: String,
43    pub stake_vault: String,
44}
45
46#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
47pub struct StakeTokenArgs {
48    pub stake_vault: String,
49    pub name: String,
50    pub amount: u64,
51}
52
53#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
54pub struct InitializeStakeVaultArgs {
55    pub name: String,
56    pub slots: u64,
57    pub collection: String,
58    pub amount: u64,
59}
60
61#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
62pub struct UpdateStakeVaultStatusArgs {
63    pub is_locked: bool,
64    pub init_ts: i64,
65    pub slots: u64,
66}
67
68#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
69pub struct DepositStakeRewardsArgs {
70    pub amount: u64,
71    pub stake_vault: String,
72}
73
74impl StakeVault {
75    pub const PREFIX_SEED: &'static [u8] = b"stake_vault";
76
77    pub const SPACE: usize = 8 + std::mem::size_of::<Self>();
78}
79
80impl StakeV2 {
81    pub const PREFIX_SEED: &'static [u8] = b"stake";
82
83    pub const SPACE: usize = 8 + std::mem::size_of::<Self>();
84}