;
/// Transaction hash type for a pool.
pub type TxHash =
::Hash;
/// Block hash type for a pool.
pub type BlockHash
= <
::Block as BlockT>::Hash;
/// Transaction type for a pool.
pub type TransactionFor
= <
::Block as BlockT>::Extrinsic;
/// Type of transactions event stream for a pool.
pub type TransactionStatusStreamFor
= TransactionStatusStream, BlockHash>;
/// Transaction type for a local pool.
pub type LocalTransactionFor
= <
::Block as BlockT>::Extrinsic;
/// Typical future type used in transaction pool api.
pub type PoolFuture = std::pin::Pin> + Send>>;
/// In-pool transaction interface.
///
/// The pool is container of transactions that are implementing this trait.
/// See `sp_runtime::ValidTransaction` for details about every field.
pub trait InPoolTransaction {
/// Transaction type.
type Transaction;
/// Transaction hash type.
type Hash;
/// Get the reference to the transaction data.
fn data(&self) -> &Self::Transaction;
/// Get hash of the transaction.
fn hash(&self) -> &Self::Hash;
/// Get priority of the transaction.
fn priority(&self) -> &TransactionPriority;
/// Get longevity of the transaction.
fn longevity(&self) -> &TransactionLongevity;
/// Get transaction dependencies.
fn requires(&self) -> &[TransactionTag];
/// Get tags that transaction provides.
fn provides(&self) -> &[TransactionTag];
/// Return a flag indicating if the transaction should be propagated to other peers.
fn is_propagable(&self) -> bool;
}
/// Transaction pool interface.
pub trait TransactionPool: Send + Sync {
/// Block type.
type Block: BlockT;
/// Transaction hash type.
type Hash: Hash + Eq + Member + Serialize;
/// In-pool transaction type.
type InPoolTransaction: InPoolTransaction<
Transaction = TransactionFor,
Hash = TxHash,
>;
/// Error type.
type Error: From + crate::error::IntoPoolError;
// *** RPC
/// Returns a future that imports a bunch of unverified transactions to the pool.
fn submit_at(
&self,
at: &BlockId,
source: TransactionSource,
xts: Vec>,
) -> PoolFuture, Self::Error>>, Self::Error>;
/// Returns a future that imports one unverified transaction to the pool.
fn submit_one(
&self,
at: &BlockId,
source: TransactionSource,
xt: TransactionFor,
) -> PoolFuture, Self::Error>;
/// Returns a future that import a single transaction and starts to watch their progress in the
/// pool.
fn submit_and_watch(
&self,
at: &BlockId,
source: TransactionSource,
xt: TransactionFor,
) -> PoolFuture>>, Self::Error>;
// *** Block production / Networking
/// Get an iterator for ready transactions ordered by priority.
///
/// Guarantees to return only when transaction pool got updated at `at` block.
/// Guarantees to return immediately when `None` is passed.
fn ready_at(
&self,
at: NumberFor,
) -> Pin<
Box<
dyn Future