chik-sdk-driver 0.25.0

Driver code for interacting with standard puzzles on the Chik blockchain.
Documentation
use chik_protocol::Bytes32;
use klvm_traits::{FromKlvm, ToKlvm};

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, ToKlvm, FromKlvm)]
#[klvm(list)]
pub struct OptionMetadata {
    pub expiration_seconds: u64,
    pub strike_type: OptionType,
}

impl OptionMetadata {
    pub fn new(expiration_seconds: u64, strike_type: OptionType) -> Self {
        Self {
            expiration_seconds,
            strike_type,
        }
    }
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, ToKlvm, FromKlvm)]
#[klvm(list)]
#[repr(u8)]
pub enum OptionType {
    Xck {
        amount: u64,
    },
    Cat {
        asset_id: Bytes32,
        amount: u64,
    },
    RevocableCat {
        asset_id: Bytes32,
        hidden_puzzle_hash: Bytes32,
        amount: u64,
    },
    Nft {
        launcher_id: Bytes32,
        settlement_puzzle_hash: Bytes32,
        amount: u64,
    },
}

impl OptionType {
    pub fn amount(&self) -> u64 {
        match self {
            OptionType::Xck { amount }
            | OptionType::Cat { amount, .. }
            | OptionType::RevocableCat { amount, .. }
            | OptionType::Nft { amount, .. } => *amount,
        }
    }

    pub fn is_hinted(&self) -> bool {
        matches!(
            self,
            OptionType::Cat { .. } | OptionType::RevocableCat { .. } | OptionType::Nft { .. }
        )
    }
}