use std::fmt;
use vapory_types::{U256, H256, H160 as Address};
use types::transaction;
#[derive(Debug, Clone)]
pub struct AccountDetails {
pub nonce: U256,
pub balance: U256,
pub is_local: bool,
}
#[derive(Debug, PartialEq)]
pub enum TransactionType {
Regular,
Service,
}
pub trait Client: fmt::Debug + Sync {
fn transaction_already_included(&self, hash: &H256) -> bool;
fn verify_transaction_basic(&self, t: &transaction::UnverifiedTransaction)
-> Result<(), transaction::Error>;
fn verify_transaction(&self, tx: transaction::UnverifiedTransaction)
-> Result<transaction::SignedTransaction, transaction::Error>;
fn required_gas(&self, tx: &transaction::Transaction) -> U256;
fn account_details(&self, address: &Address) -> AccountDetails;
fn transaction_type(&self, tx: &transaction::SignedTransaction) -> TransactionType;
fn decode_transaction(&self, transaction: &[u8])
-> Result<transaction::UnverifiedTransaction, transaction::Error>;
}
pub trait NonceClient: fmt::Debug + Sync {
fn account_nonce(&self, address: &Address) -> U256;
}