use crate::error::{
CollisionReason,
Error,
};
use fuel_core_types::{
fuel_tx::TxId,
services::txpool::PoolTransaction,
};
use std::collections::HashMap;
use crate::storage::StorageData;
pub mod basic;
pub type Collisions<StorageIndex> = HashMap<StorageIndex, Vec<CollisionReason>>;
pub trait CollisionManager {
type StorageIndex;
fn find_collisions(
&self,
transaction: &PoolTransaction,
) -> Result<Collisions<Self::StorageIndex>, Error>;
fn get_coins_spenders(&self, tx_creator_id: &TxId) -> Vec<Self::StorageIndex>;
fn on_stored_transaction(
&mut self,
transaction_id: Self::StorageIndex,
store_entry: &StorageData,
);
fn on_removed_transaction(&mut self, transaction: &PoolTransaction);
}