extern crate serde;
pub mod chain_message;
pub mod message_receipt;
pub mod signed_message;
pub mod unsigned_message;
pub use chain_message::ChainMessage;
pub use message_receipt::MessageReceipt;
pub use signed_message::SignedMessage;
pub use unsigned_message::UnsignedMessage;
use address::Address;
use vm::{MethodNum, Serialized, TokenAmount};
pub trait Message {
fn from(&self) -> &Address;
fn to(&self) -> &Address;
fn sequence(&self) -> u64;
fn value(&self) -> &TokenAmount;
fn method_num(&self) -> MethodNum;
fn params(&self) -> &Serialized;
fn set_gas_limit(&mut self, amount: i64);
fn set_sequence(&mut self, sequence: u64);
fn gas_limit(&self) -> i64;
fn required_funds(&self) -> TokenAmount;
fn gas_fee_cap(&self) -> &TokenAmount;
fn gas_premium(&self) -> &TokenAmount;
fn set_gas_fee_cap(&mut self, cap: TokenAmount);
fn set_gas_premium(&mut self, prem: TokenAmount);
}