use crate::{pool::Transaction, scoring::Choice};
pub struct ReplaceTransaction<'a, T> {
pub transaction: &'a Transaction<T>,
pub pooled_by_sender: Option<&'a [Transaction<T>]>,
}
impl<'a, T> ReplaceTransaction<'a, T> {
pub fn new(transaction: &'a Transaction<T>, pooled_by_sender: Option<&'a [Transaction<T>]>) -> Self {
ReplaceTransaction { transaction, pooled_by_sender }
}
}
impl<'a, T> ::std::ops::Deref for ReplaceTransaction<'a, T> {
type Target = Transaction<T>;
fn deref(&self) -> &Self::Target {
&self.transaction
}
}
pub trait ShouldReplace<T> {
fn should_replace(&self, old: &ReplaceTransaction<'_, T>, new: &ReplaceTransaction<'_, T>) -> Choice;
}