devol-accounts-kit 0.3.4

SDK for interacting with the DeVol Network option trading platform on the Solana blockchain
Documentation
use serde::{Deserialize, Serialize};

pub const CLIENT_POOL_MAX_BASKET_LENGTH: usize = 4;

#[derive(Copy, Clone, PartialOrd, PartialEq, Debug, Serialize, Deserialize)]
#[repr(C)]
pub struct BasketData {
    pub strike: [u8; CLIENT_POOL_MAX_BASKET_LENGTH],
    pub pc: [u8; CLIENT_POOL_MAX_BASKET_LENGTH],
    pub amount: [u8; CLIENT_POOL_MAX_BASKET_LENGTH],
}

impl Default for BasketData {
    fn default() -> Self {
        Self {
            strike: [0; CLIENT_POOL_MAX_BASKET_LENGTH],
            pc: [0; CLIENT_POOL_MAX_BASKET_LENGTH],
            amount: [0; CLIENT_POOL_MAX_BASKET_LENGTH],
        }
    }
}

impl BasketData {
    #[inline(always)]
    pub fn get_strike(&self) -> u32 { u32::from_ne_bytes(self.strike) }
    #[inline(always)]
    pub fn set_strike(&mut self, value: u32) { self.strike = value.to_ne_bytes() }
    #[inline(always)]
    pub fn get_pc(&self) -> u32 { u32::from_ne_bytes(self.pc) }
    #[inline(always)]
    pub fn set_pc(&mut self, value: u32) { self.pc = value.to_ne_bytes() }
    #[inline(always)]
    pub fn get_amount(&self) -> i32 { i32::from_ne_bytes(self.amount) }
    #[inline(always)]
    pub fn set_amount(&mut self, value: i32) { self.amount = value.to_ne_bytes() }
}