valiant_vortex_client 0.2.1

Rust client to interact with Valiant's on-chain Vortex program.
Documentation
use crate::generated::programs::VORTEX_ID;
use solana_program::program_error::ProgramError;
use solana_program::pubkey::Pubkey;

pub fn get_fee_tier_address(
    vortex_config: &Pubkey,
    tick_spacing: u16,
) -> Result<(Pubkey, u8), ProgramError> {
    let seeds = &[
        b"fee_tier",
        vortex_config.as_ref(),
        &tick_spacing.to_le_bytes(),
    ];

    Pubkey::try_find_program_address(seeds, &VORTEX_ID).ok_or(ProgramError::InvalidSeeds)
}

pub fn get_cyclone_fee_tier_address(vortex_config: &Pubkey) -> Result<(Pubkey, u8), ProgramError> {
    let seeds = &[b"cyclone_fee_tier", vortex_config.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_fee_tier_address() {
        let vortex_config =
            Pubkey::from_str("7BRUr84e48Zh6PoFLQxfd8bvMdYQ2CgHXWczDsTqLhy6").unwrap();
        let fee_tier = Pubkey::from_str("EWwLXCo8KSKxxbzpGN6tsYUBN9bURWJ1PUCVQNMGoM22").unwrap();
        let (address, _) = get_fee_tier_address(&vortex_config, 1).unwrap();
        assert_eq!(address, fee_tier);
    }
}