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"), pubkey!("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"), pubkey!("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"), ];
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"), pubkey!("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"), pubkey!("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"), ];
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 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 pub struct Params {
140 pub name: String,
141 pub space: u32,
142 pub referrer_idx_opt: Option<u16>,
143 }
144
145 #[derive(InstructionsAccount)]
146 pub struct Accounts<'a, T> {
148 pub naming_service_program: &'a T,
150 pub root_domain: &'a T,
152 #[cons(writable)]
154 pub name: &'a T,
155 #[cons(writable)]
157 pub reverse_lookup: &'a T,
158 pub system_program: &'a T,
160 pub central_state: &'a T,
162 #[cons(writable, signer)]
164 pub buyer: &'a T,
165 #[cons(writable)]
167 pub buyer_token_source: &'a T,
168 pub pyth_mapping_acc: &'a T,
170 pub pyth_product_acc: &'a T,
172 pub pyth_price_acc: &'a T,
174 #[cons(writable)]
176 pub vault: &'a T,
177 pub spl_token_program: &'a T,
179 pub rent_sysvar: &'a T,
181 pub state: &'a T,
183 #[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}