light_compressible/
registry_instructions.rs1#[cfg(feature = "anchor")]
8use anchor_lang::prelude::Pubkey;
9#[cfg(not(feature = "anchor"))]
10use solana_pubkey::Pubkey;
11
12use crate::{rent::RentConfig, AnchorDeserialize, AnchorSerialize};
13
14pub const CREATE_CONFIG_COUNTER_DISCRIMINATOR: [u8; 8] = [221, 9, 219, 187, 215, 138, 209, 87];
16
17pub const CREATE_COMPRESSIBLE_CONFIG_DISCRIMINATOR: [u8; 8] = [13, 182, 188, 82, 224, 82, 11, 174];
19
20#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)]
24pub struct CreateConfigCounter {}
25
26impl CreateConfigCounter {
27 pub const fn discriminator() -> [u8; 8] {
29 CREATE_CONFIG_COUNTER_DISCRIMINATOR
30 }
31
32 pub fn data(&self) -> Vec<u8> {
34 let mut data = Self::discriminator().to_vec();
35 data.extend_from_slice(&borsh::to_vec(self).unwrap());
36 data
37 }
38}
39
40#[derive(AnchorSerialize, AnchorDeserialize, Debug, Clone)]
44pub struct CreateCompressibleConfig {
45 pub rent_config: RentConfig,
46 pub update_authority: Pubkey,
47 pub withdrawal_authority: Pubkey,
48 pub active: bool,
49}
50
51impl CreateCompressibleConfig {
52 pub const fn discriminator() -> [u8; 8] {
54 CREATE_COMPRESSIBLE_CONFIG_DISCRIMINATOR
55 }
56
57 pub fn data(&self) -> Vec<u8> {
59 let mut data = Self::discriminator().to_vec();
60 data.extend_from_slice(&AnchorSerialize::try_to_vec(self).unwrap());
61 data
62 }
63}
64
65#[derive(Debug, Clone)]
67pub struct CreateCompressibleConfigAccounts {
68 pub fee_payer: Pubkey,
69 pub authority: Pubkey,
70 pub protocol_config_pda: Pubkey,
71 pub config_counter: Pubkey,
72 pub compressible_config: Pubkey,
73 pub system_program: Pubkey,
74}
75
76pub mod utils {
78 use solana_pubkey::Pubkey;
79
80 pub const LIGHT_REGISTRY_ID: Pubkey =
82 solana_pubkey::pubkey!("Lighton6oQpVkeewmo2mcPTQQp7kYHr4fWpAgJyEmDX");
83
84 pub const PROTOCOL_CONFIG_PDA_SEED: &[u8] = b"protocol_config";
86
87 pub fn get_protocol_config_pda_address() -> (Pubkey, u8) {
89 Pubkey::find_program_address(&[PROTOCOL_CONFIG_PDA_SEED], &LIGHT_REGISTRY_ID)
90 }
91}