Skip to main content

sns_sdk/
register.rs

1use bonfida_utils::InstructionsAccount;
2use solana_program::{instruction::Instruction, pubkey};
3use solana_sdk::pubkey::Pubkey;
4
5pub use constants::*;
6
7#[cfg(not(feature = "devnet"))]
8mod constants {
9    use super::*;
10
11    pub const REGISTER_PROGRAM_ID: Pubkey = pubkey!("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR");
12
13    pub const REFERRERS: [Pubkey; 3] = [
14        pubkey!("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"), // Test wallet
15        pubkey!("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"), // 4Everland
16        pubkey!("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"), // Bandit network
17    ];
18
19    pub const USDC_MINT: Pubkey = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
20    pub const USDT_MINT: Pubkey = pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB");
21    pub const SOL_MINT: Pubkey = pubkey!("So11111111111111111111111111111111111111112");
22    pub const FIDA_MINT: Pubkey = pubkey!("EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp");
23    pub const MSOL_MINT: Pubkey = pubkey!("EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp");
24    pub const BONK_MINT: Pubkey = pubkey!("6dhTynDkYsVM7cbF7TKfC9DWB636TcEM935fq7JzL2ES");
25    pub const BAT_MINT: Pubkey = pubkey!("EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp");
26    pub const PYTH_PROGRAM_ID: Pubkey = pubkey!("FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH");
27    pub const PYTH_MAPPING_ACC: Pubkey = pubkey!("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J");
28    pub const INJ_MINT: Pubkey = pubkey!("6McPRfPV6bY1e9hLxWyG54W9i9Epq75QBvXg2oetBVTB");
29
30    pub const PYTH_PRICE_PRODUCT_ACCOUNTS: [(Pubkey, Pubkey, Pubkey); 8] = [
31        (
32            USDC_MINT,
33            pubkey!("Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD"),
34            pubkey!("8GWTTbNiXdmyZREXbjsZBmCRuzdPrW55dnZGDkTRjWvb"),
35        ),
36        (
37            USDT_MINT,
38            pubkey!("3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL"),
39            pubkey!("Av6XyAMJnyi68FdsKSPYgzfXGjYrrt6jcAMwtvzLCqaM"),
40        ),
41        (
42            SOL_MINT,
43            pubkey!("H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"),
44            pubkey!("ALP8SdU9oARYVLgLR7LrqMNCYBnhtnQz1cj6bwgwQmgj"),
45        ),
46        (
47            FIDA_MINT,
48            pubkey!("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),
49            pubkey!("HyEB4Goiv7QyfFStaBn49JqQzSTV1ybtVikwsMLH1f2M"),
50        ),
51        (
52            MSOL_MINT,
53            pubkey!("E4v1BBgoso9s64TQvmyownAVJbhbEPGyzA3qn4n46qj9"),
54            pubkey!("BS2iAqT67j8hA9Jji4B8UpL3Nfw9kwPfU5s4qeaf1e7r"),
55        ),
56        (
57            BONK_MINT,
58            pubkey!("8ihFLu5FimgTQ1Unh4dVyEHUGodJ5gJQCrQf4KUVB9bN"),
59            pubkey!("FerFD54J6RgmQVCR5oNgpzXmz8BW2eBNhhirb1d5oifo"),
60        ),
61        (
62            BONK_MINT,
63            pubkey!("AbMTYZ82Xfv9PtTQ5e1fJXemXjzqEEFHP3oDLRTae6yz"),
64            pubkey!("8xTEctXKo6Xo3EzNhSNp4TUe8mgfwWFbDUXJhuubvrKx"),
65        ),
66        (
67            INJ_MINT,
68            pubkey!("9EdtbaivHQYA4Nh3XzGR6DwRaoorqXYnmpfsnFhvwuVj"),
69            pubkey!("5Q5kyCVzssrGMd2BniSdVeRwjNWrGGrFhMrgGt4zURyA"),
70        ),
71    ];
72
73    pub const VAULT_OWNER: Pubkey = pubkey!("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi");
74}
75
76#[cfg(feature = "devnet")]
77mod constants {
78    use super::*;
79
80    pub const REGISTER_PROGRAM_ID: Pubkey = pubkey!("snshBoEQ9jx4QoHBpZDQPYdNCtw7RMxJvYrKFEhwaPJ");
81
82    pub const REFERRERS: [Pubkey; 3] = [
83        pubkey!("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"), // Test wallet
84        pubkey!("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"), // 4Everland
85        pubkey!("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"), // Bandit network
86    ];
87
88    pub const USDC_MINT: Pubkey = pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");
89    pub const USDT_MINT: Pubkey = pubkey!("EJwZgeZrdC8TXTQbQBoL6bfuAnFUUy1PVCMB4DYPzVaS");
90    pub const SOL_MINT: Pubkey = pubkey!("So11111111111111111111111111111111111111112");
91    pub const FIDA_MINT: Pubkey = pubkey!("fidaWCioBQjieRrUQDxxS5Uxmq1CLi2VuVRyv4dEBey");
92    pub const INJ_MINT: Pubkey = pubkey!("DL4ivZm3NVHWk9ZvtcqTchxoKArDK4rT3vbDx2gYVr7P");
93    // pub const MSOL_MINT: Pubkey = pubkey!("EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp");
94    pub const PYTH_PROGRAM_ID: Pubkey = pubkey!("gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s");
95    pub const PYTH_MAPPING_ACC: Pubkey = pubkey!("BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2");
96
97    pub const PYTH_PRICE_PRODUCT_ACCOUNTS: [(Pubkey, Pubkey, Pubkey); 5] = [
98        (
99            USDC_MINT,
100            pubkey!("5SSkXsEKQepHHAewytPVwdej4epN1nxgLVM84L4KXgy7"),
101            pubkey!("6NpdXrQEpmDZ3jZKmM2rhdmkd3H6QAk23j2x8bkXcHKA"),
102        ),
103        (
104            USDT_MINT,
105            pubkey!("38xoQ4oeJCBrcVvca2cGk7iV1dAfrmTR1kmhSCJQ8Jto"),
106            pubkey!("C5wDxND9E61RZ1wZhaSTWkoA8udumaHnoQY6BBsiaVpn"),
107        ),
108        (
109            SOL_MINT,
110            pubkey!("J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix"),
111            pubkey!("3Mnn2fX6rQyUsyELYms1sBJyChWofzSNRoqYzvgMVz5E"),
112        ),
113        (
114            FIDA_MINT,
115            pubkey!("7teETxN9Y8VK6uJxsctHEwST75mKLLwPH1jaFdvTQCpD"),
116            pubkey!("5kWV4bhHeZANzg5MWaYCQYEEKHjur5uz1mu5vuLHwiLB"),
117        ),
118        (
119            INJ_MINT,
120            pubkey!("44uRsNnT35kjkscSu59MxRr9CfkLZWf6gny8bWqUbVxE"),
121            pubkey!("7UHB783Nh4avW3Yw9yoktf2KjxipU56KPahA51RnCCYE"),
122        ),
123    ];
124
125    pub const VAULT_OWNER: Pubkey = pubkey!("SNSaTJbEv2iT3CUrCQYa9zpGjbBVWhFCPaSJHkaJX34");
126}
127
128pub enum ProgramInstruction {
129    Create = 13,
130}
131
132pub mod create {
133    use bonfida_utils::{BorshSize, InstructionsAccount};
134    use borsh::{BorshDeserialize, BorshSerialize};
135    use solana_sdk::pubkey::Pubkey;
136
137    #[derive(BorshDeserialize, BorshSerialize, BorshSize, Debug)]
138    /// The required parameters for the `create` instruction
139    pub struct Params {
140        pub name: String,
141        pub space: u32,
142        pub referrer_idx_opt: Option<u16>,
143    }
144
145    #[derive(InstructionsAccount)]
146    /// The required accounts for the `create` instruction
147    pub struct Accounts<'a, T> {
148        /// The naming service program ID
149        pub naming_service_program: &'a T,
150        /// The root domain account       
151        pub root_domain: &'a T,
152        /// The name account
153        #[cons(writable)]
154        pub name: &'a T,
155        /// The reverse look up account   
156        #[cons(writable)]
157        pub reverse_lookup: &'a T,
158        /// The system program account
159        pub system_program: &'a T,
160        /// The central state account
161        pub central_state: &'a T,
162        /// The buyer account     
163        #[cons(writable, signer)]
164        pub buyer: &'a T,
165        /// The buyer token account       
166        #[cons(writable)]
167        pub buyer_token_source: &'a T,
168        /// The Pyth mapping account
169        pub pyth_mapping_acc: &'a T,
170        /// The Pyth product account
171        pub pyth_product_acc: &'a T,
172        /// The Pyth price account
173        pub pyth_price_acc: &'a T,
174        /// The vault account     
175        #[cons(writable)]
176        pub vault: &'a T,
177        /// The SPL token program
178        pub spl_token_program: &'a T,
179        /// The rent sysvar account
180        pub rent_sysvar: &'a T,
181        /// The state auction account
182        pub state: &'a T,
183        /// The *optional* referrer token account to receive a portion of fees.
184        /// The token account owner has to be whitelisted.
185        #[cons(writable)]
186        pub referrer_account_opt: Option<&'a T>,
187    }
188}
189
190pub fn get_register_instruction(
191    program_id: Pubkey,
192    accounts: create::Accounts<Pubkey>,
193    params: create::Params,
194) -> Instruction {
195    accounts.get_instruction(program_id, ProgramInstruction::Create as u8, params)
196}