ton_lib 0.0.38

A collection of types and utilities for interacting with the TON network
use crate::emulators::emul_bc_config::EmulBCConfig;
use std::fmt::{Display, Formatter};
use ton_lib_core::cell::TonHash;

#[derive(Debug, Clone)]
pub struct TXEmulOrdArgs {
    pub in_msg_boc: Vec<u8>,
    pub emul_args: TXEmulArgs,
}

pub struct TXEmulTickTockArgs {
    pub is_tock: bool,
    pub emul_args: TXEmulArgs,
}

#[derive(Debug, Clone)]
pub struct TXEmulArgs {
    pub shard_account_boc: Vec<u8>,
    pub bc_config: EmulBCConfig,
    pub rand_seed: TonHash,
    pub utime: u32,
    pub lt: u64,
    pub ignore_chksig: bool,
    pub prev_blocks_boc: Option<Vec<u8>>,
    pub libs_boc: Option<Vec<u8>>,
}

impl Display for TXEmulArgs {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        let shard_acc_str = hex::encode(&self.shard_account_boc);

        let prev_blocks_str = match &self.prev_blocks_boc {
            None => "None",
            Some(boc) => &hex::encode(boc),
        };

        let libs_str = match &self.libs_boc {
            None => "None",
            Some(boc) => &hex::encode(boc),
        };

        f.write_fmt(format_args!(
            "shard_account_boc: {}, bc_config: {}, rand_seed: {}, utime: {}, lt: {}, ignore_chksig: {}, prev_blocks_boc: {}, libs_boc: {}",
            shard_acc_str, self.bc_config.to_string_lossy(), self.rand_seed, self.utime, self.lt, self.ignore_chksig, prev_blocks_str, libs_str
        ))
    }
}

impl Display for TXEmulOrdArgs {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("in_msg_boc : {}, emul_args: {}", hex::encode(&self.in_msg_boc), &self.emul_args))
    }
}

impl Display for TXEmulTickTockArgs {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("is_tock: {}, emul_args: {}", self.is_tock, &self.emul_args))
    }
}