sns-records 0.3.0

Bindings and program code for the Solana Name Service Records protocol
Documentation
use std::convert::TryFrom;

use {
    bonfida_utils::BorshSize,
    borsh::{BorshDeserialize, BorshSerialize},
};

#[derive(BorshDeserialize, BorshSerialize, BorshSize, Clone, Copy, Debug)]
#[repr(u16)]
pub enum Validation {
    None,
    Solana,
    Ethereum,
    UnverifiedSolana,
    XChain,
}

impl TryFrom<u16> for Validation {
    type Error = crate::error::SnsRecordsError;
    fn try_from(value: u16) -> Result<Self, Self::Error> {
        match value {
            0 => Ok(Validation::None),
            1 => Ok(Validation::Solana),
            2 => Ok(Validation::Ethereum),
            3 => Ok(Validation::UnverifiedSolana),
            4 => Ok(Validation::XChain),
            _ => Err(crate::error::SnsRecordsError::DataTypeMismatch),
        }
    }
}

pub fn get_validation_length(validation: Validation) -> u32 {
    match validation {
        Validation::None => 0,
        Validation::Ethereum => 20,
        Validation::Solana => 32,
        Validation::UnverifiedSolana => 32,
        Validation::XChain => 34,
    }
}