Skip to main content

tengu_api/state/
mod.rs

1mod config;
2mod game;
3mod dojo;
4mod shogun;
5mod barracks;
6mod forge;
7mod tasks;
8mod treasury;
9mod referral;
10mod scenes;
11
12pub use config::*;
13pub use game::*;
14pub use dojo::*;
15pub use shogun::*;
16pub use barracks::*;
17pub use forge::*;
18pub use tasks::*;
19pub use treasury::*;
20pub use referral::*;
21pub use scenes::*;
22
23use crate::consts::*;
24use solana_program::pubkey::Pubkey;
25
26#[repr(u8)]
27#[derive(Clone, Copy, Debug, Eq, PartialEq, num_enum::IntoPrimitive, num_enum::TryFromPrimitive)]
28pub enum DojosAccount {
29    Config = 0,
30    Game = 8,
31    Dojo = 1,
32    Shogun = 2,
33    Barracks = 3,
34    Forge = 4,
35    Treasury = 5,
36    Referral = 6,
37    Scenes = 7,
38    ShogunAccount = 9,
39    Tasks = 10,
40}
41
42/// Config PDA.
43pub fn config_pda(program_id: &Pubkey) -> (Pubkey, u8) {
44    Pubkey::find_program_address(&[CONFIG], program_id)
45}
46
47/// Game PDA (total_spirit_power, total_shards_burned).
48pub fn game_pda(program_id: &Pubkey) -> (Pubkey, u8) {
49    Pubkey::find_program_address(&[GAME], program_id)
50}
51
52/// Dojo PDA.
53pub fn dojo_pda(program_id: &Pubkey, owner: &Pubkey) -> (Pubkey, u8) {
54    Pubkey::find_program_address(&[DOJO, owner.as_ref()], program_id)
55}
56
57/// Shogun account PDA (one per dojo).
58pub fn shogun_account_pda(program_id: &Pubkey, dojo: &Pubkey) -> (Pubkey, u8) {
59    Pubkey::find_program_address(&[SHOGUN, dojo.as_ref()], program_id)
60}
61
62/// Barracks PDA.
63pub fn barracks_pda(program_id: &Pubkey, dojo: &Pubkey) -> (Pubkey, u8) {
64    Pubkey::find_program_address(&[BARRACKS, dojo.as_ref()], program_id)
65}
66
67/// Forge PDA.
68pub fn forge_pda(program_id: &Pubkey, dojo: &Pubkey) -> (Pubkey, u8) {
69    Pubkey::find_program_address(&[FORGE, dojo.as_ref()], program_id)
70}
71
72/// Tasks PDA (one per dojo).
73pub fn tasks_pda(program_id: &Pubkey, dojo: &Pubkey) -> (Pubkey, u8) {
74    Pubkey::find_program_address(&[TASKS, dojo.as_ref()], program_id)
75}
76
77/// Treasury PDA.
78pub fn treasury_pda(program_id: &Pubkey) -> (Pubkey, u8) {
79    Pubkey::find_program_address(&[TREASURY], program_id)
80}
81
82/// Referral PDA (keyed by referrer dojo).
83pub fn referral_pda(program_id: &Pubkey, referrer_dojo: &Pubkey) -> (Pubkey, u8) {
84    Pubkey::find_program_address(&[REFERRAL, referrer_dojo.as_ref()], program_id)
85}
86
87/// Scenes PDA (keyed by dojo).
88pub fn scenes_pda(program_id: &Pubkey, dojo: &Pubkey) -> (Pubkey, u8) {
89    Pubkey::find_program_address(&[SCENES, dojo.as_ref()], program_id)
90}