//! Support types for updating the pool.
use crate::{identifier::TransactionId, pool::state::SubPool};
use alloy_primitives::TxHash;
/// A change of the transaction's location
///
/// NOTE: this guarantees that `current` and `destination` differ.
#[derive(Debug)]
pub(crate) struct PoolUpdate {
/// Internal tx id.
pub(crate) id: TransactionId,
/// Hash of the transaction.
pub(crate) hash: TxHash,
/// Where the transaction is currently held.
pub(crate) current: SubPool,
/// Where to move the transaction to.
pub(crate) destination: Destination,
}
/// Where to move an existing transaction.
#[derive(Debug)]
pub(crate) enum Destination {
/// Discard the transaction.
Discard,
/// Move transaction to pool
Pool(SubPool),
}