pub mod ipld {
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(packed, C)]
pub struct IpldOpen {
pub codec: u64,
pub id: u32,
pub size: u32,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(packed, C)]
pub struct IpldStat {
pub codec: u64,
pub size: u32,
}
}
pub mod send {
use crate::sys::BlockId;
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(packed, C)]
pub struct Send {
pub exit_code: u32,
pub return_id: BlockId,
pub return_codec: u64,
pub return_size: u32,
}
}
pub mod crypto {
use crate::{ActorID, ChainEpoch};
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(packed, C)]
pub struct VerifyConsensusFault {
pub epoch: ChainEpoch,
pub target: ActorID,
pub fault: u32,
}
}
pub mod vm {
use bitflags::bitflags;
use crate::sys::TokenAmount;
use crate::{ActorID, MethodNum};
bitflags! {
#[derive(Default, Copy, Clone, Eq, PartialEq, Debug)]
#[repr(transparent)]
pub struct ContextFlags: u64 {
const READ_ONLY = 0b00000001;
}
}
impl ContextFlags {
pub fn read_only(self) -> bool {
self.intersects(Self::READ_ONLY)
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(packed, C)]
pub struct MessageContext {
pub origin: ActorID,
pub nonce: u64,
pub caller: ActorID,
pub receiver: ActorID,
pub method_number: MethodNum,
pub value_received: TokenAmount,
pub gas_premium: TokenAmount,
pub flags: ContextFlags,
}
}
pub mod network {
use crate::clock::ChainEpoch;
use crate::sys::TokenAmount;
use crate::version::NetworkVersion;
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(packed, C)]
pub struct NetworkContext {
pub epoch: ChainEpoch,
pub timestamp: u64,
pub base_fee: TokenAmount,
pub chain_id: u64,
pub network_version: NetworkVersion,
}
}