use std::sync::Arc;
use super::{
analysis::{ItemAnalysis, PropertyChange, ResolvedMapping},
operation::{ItemOp, MappingUidSource, PropertyOp},
ordering::DeletionBarrier,
status::MappingUid,
};
pub trait Mode: Send + Sync {
fn decide_item_action(
&self,
analysis: ItemAnalysis,
mapping: &Arc<ResolvedMapping>,
mapping_uid_source: MappingUidSource,
on_complete: Option<&DeletionBarrier>,
) -> Option<ItemOp>;
fn decide_property_action(
&self,
change: PropertyChange,
mapping: &Arc<ResolvedMapping>,
mapping_uid: MappingUid,
on_complete: Option<&DeletionBarrier>,
) -> Option<PropertyOp>;
}