acta-maker-sdk 0.8.0

Rust SDK for the Acta options RFQ venue on Solana: maker and vault-operator WebSocket clients, order signing, chain builders
Documentation
use crate::ChainPositionType;
use crate::types::amounts::scaled_quote_amount;

use super::ChainError;

pub(super) fn required_settlement(
    position_type: u8,
    strike: u64,
    quantity: u64,
    quote_decimals: u8,
    underlying_decimals: u8,
) -> Result<u64, ChainError> {
    match ChainPositionType::try_from(position_type) {
        Ok(ChainPositionType::CoveredCall) => {
            scaled_quote_amount(strike, quantity, quote_decimals, underlying_decimals)
                .ok_or(ChainError::SettlementAmountOverflow)
        }
        Ok(ChainPositionType::CashSecuredPut) => Ok(quantity),
        Ok(ChainPositionType::CallSpread | ChainPositionType::PutSpread) | Err(_) => {
            Err(ChainError::InvalidPositionType(position_type))
        }
    }
}

#[cfg(test)]
#[path = "settlement_tests.rs"]
mod tests;