use crate::generated::programs::VORTEX_ID;
use solana_program::program_error::ProgramError;
use solana_program::pubkey::Pubkey;
pub fn get_cyclone_address(
vortex_config: &Pubkey,
token_mint_a: &Pubkey,
token_mint_b: &Pubkey,
) -> Result<(Pubkey, u8), ProgramError> {
let seeds = &[
b"cyclone",
vortex_config.as_ref(),
token_mint_a.as_ref(),
token_mint_b.as_ref(),
];
Pubkey::try_find_program_address(seeds, &VORTEX_ID).ok_or(ProgramError::InvalidSeeds)
}
#[cfg(test)]
mod tests {
use super::*;
use std::str::FromStr;
#[test]
fn test_get_cyclone_address() {
let vortex_config =
Pubkey::from_str("7BRUr84e48Zh6PoFLQxfd8bvMdYQ2CgHXWczDsTqLhy6").unwrap();
let token_mint_a = Pubkey::from_str("So11111111111111111111111111111111111111112").unwrap();
let token_mint_b =
Pubkey::from_str("2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo").unwrap();
let vortex = Pubkey::from_str("ELuLdwepeWyqhCgcLfz3xnMuJdSG3sdfBLoUx7QCN4GU").unwrap();
let (address, _) =
get_cyclone_address(&vortex_config, &token_mint_a, &token_mint_b).unwrap();
assert_eq!(address, vortex);
}
}