1use solana_pubkey::Pubkey;
2
3#[allow(unused_imports)]
4use crate::constants::{CPI_AUTHORITY_PDA_SEED, RENT_SPONSOR_SEED};
5#[macro_export]
6macro_rules! find_cpi_signer_macro {
7 ($program_id:expr) => {
8 Pubkey::find_program_address([CPI_AUTHORITY_PDA_SEED].as_slice(), $program_id)
9 };
10}
11
12pub fn get_light_cpi_signer_seeds(program_id: &Pubkey) -> ([Vec<u8>; 2], Pubkey) {
13 let seeds = &[CPI_AUTHORITY_PDA_SEED];
14
15 let (pda, bump) = solana_pubkey::Pubkey::find_program_address(seeds, program_id);
16
17 let signer_seeds_bump = bump;
18
19 let signer_seeds: [Vec<u8>; 2] = [CPI_AUTHORITY_PDA_SEED.to_vec(), vec![signer_seeds_bump]];
20 (signer_seeds, pda)
21}
22
23pub fn derive_rent_sponsor_pda(program_id: &Pubkey, version: u16) -> (Pubkey, u8) {
27 let version_bytes = version.to_le_bytes();
28 let seeds = &[RENT_SPONSOR_SEED, &version_bytes[..]];
29 Pubkey::find_program_address(seeds, program_id)
30}