use crate::{FullBlock, FullBlockBody, FullBlockHeader, FullReceipt, FullSignedTx};
use core::fmt;
pub trait NodePrimitives:
Send + Sync + Unpin + Clone + Default + fmt::Debug + PartialEq + Eq + 'static
{
type Block: FullBlock<Header = Self::BlockHeader, Body = Self::BlockBody>;
type BlockHeader: FullBlockHeader;
type BlockBody: FullBlockBody<Transaction = Self::SignedTx, OmmerHeader = Self::BlockHeader>;
type SignedTx: FullSignedTx;
type Receipt: FullReceipt;
}
pub type HeaderTy<N> = <N as NodePrimitives>::BlockHeader;
pub type BodyTy<N> = <N as NodePrimitives>::BlockBody;
pub type BlockTy<N> = <N as NodePrimitives>::Block;
pub type ReceiptTy<N> = <N as NodePrimitives>::Receipt;
pub type TxTy<N> = <N as NodePrimitives>::SignedTx;