chia-sdk-types 0.23.0

Standard Chia types for things such as puzzle info and conditions.
Documentation
use chia_protocol::Bytes32;
use clvm_traits::{FromClvm, ToClvm};
use clvm_utils::TreeHash;
use hex_literal::hex;

use crate::Mod;

#[derive(Debug, Clone, Copy, PartialEq, Eq, ToClvm, FromClvm)]
#[clvm(curry)]
pub struct OptionContractArgs<I> {
    pub mod_hash: Bytes32,
    pub underlying_coin_id: Bytes32,
    pub underlying_delegated_puzzle_hash: Bytes32,
    pub inner_puzzle: I,
}

impl<I> OptionContractArgs<I> {
    pub fn new(
        underlying_coin_id: Bytes32,
        underlying_delegated_puzzle_hash: Bytes32,
        inner_puzzle: I,
    ) -> Self {
        Self {
            mod_hash: OPTION_CONTRACT_PUZZLE_HASH.into(),
            underlying_coin_id,
            underlying_delegated_puzzle_hash,
            inner_puzzle,
        }
    }
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, ToClvm, FromClvm)]
#[clvm(solution)]
pub struct OptionContractSolution<I> {
    pub inner_solution: I,
}

impl<I> OptionContractSolution<I> {
    pub fn new(inner_solution: I) -> Self {
        Self { inner_solution }
    }
}

impl<I> Mod for OptionContractArgs<I> {
    const MOD_REVEAL: &[u8] = &OPTION_CONTRACT_PUZZLE;
    const MOD_HASH: TreeHash = OPTION_CONTRACT_PUZZLE_HASH;
}

pub const OPTION_CONTRACT_PUZZLE: [u8; 862] = hex!(
    "
    ff02ffff01ff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04
    ffff02ff2fff5f80ffff01ff80ff8080808080808080ffff04ffff01ffffff33
    42ff02ff02ffff03ff05ffff01ff0bff72ffff02ff16ffff04ff02ffff04ff09
    ffff04ffff02ff1cffff04ff02ffff04ff0dff80808080ff808080808080ffff
    016280ff0180ffffffffa04bf5122f344554c53bde2ebb8cd2b7e3d1600ad631
    c385a5d7cce23c7785459aa09dcf97a184f32623d11a73124ceb99a5709b0837
    21e878a16d78f596718ba7b2ffa102a12871fee210fb8619291eaea194581cbd
    2531e4b23759d225f6806923f63222a102a8d5dd63fba471ebcb1f3e8f7c1e18
    79b7152a6e7298a91ce119a63400ade7c5ff0bff52ffff02ff16ffff04ff02ff
    ff04ff05ffff04ffff02ff1cffff04ff02ffff04ff07ff80808080ff80808080
    8080ffff0bff14ffff0bff14ff62ff0580ffff0bff14ff0bff428080ff02ffff
    03ff2fffff01ff02ffff03ffff09ff818fff1080ffff01ff02ffff03ffff09ff
    8202cfffff01818f80ffff01ff04ff4fffff02ff1effff04ff02ffff04ff05ff
    ff04ff0bffff04ff17ffff04ff6fffff04ffff0101ffff04ff81bfff80808080
    808080808080ffff01ff04ffff04ff10ffff04ffff02ff1affff04ff02ffff04
    ff05ffff04ffff0bffff0101ff0580ffff04ffff0bffff0101ff0b80ffff04ff
    ff0bffff0101ff1780ffff04ff82014fff8080808080808080ff8201cf8080ff
    ff02ff1effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff6fffff04
    ff5fffff04ff81bfff8080808080808080808080ff0180ffff01ff02ffff03ff
    ff02ffff03ffff09ff818fff1880ffff01ff02ffff03ffff22ffff09ff82014f
    ffff011780ffff09ff8205cfff0b8080ffff01ff0101ff8080ff0180ff8080ff
    0180ffff01ff02ffff03ffff09ff8202cfff1780ffff01ff04ff4fffff02ff1e
    ffff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff6fffff04ff5fffff
    01ff01808080808080808080ffff01ff088080ff0180ffff01ff04ff4fffff02
    ff1effff04ff02ffff04ff05ffff04ff0bffff04ff17ffff04ff6fffff04ff5f
    ffff04ff81bfff8080808080808080808080ff018080ff0180ffff01ff02ffff
    03ffff09ff5fff81bf80ff80ffff01ff088080ff018080ff0180ff018080
    "
);

pub const OPTION_CONTRACT_PUZZLE_HASH: TreeHash = TreeHash::new(hex!(
    "5a084d1786fc0fe43c30bc5fc0233cc1a791cfde3a25580a9ca4883878f0ba63"
));