use crate::streaming::event_parser::common::EventType;
use crate::streaming::event_parser::common::SwapData;
use solana_sdk::signature::Signature;
use std::fmt::Debug;
pub trait UnifiedEvent: Debug + Send + Sync {
fn event_type(&self) -> EventType;
fn signature(&self) -> &Signature;
fn slot(&self) -> u64;
fn recv_us(&self) -> i64;
fn handle_us(&self) -> i64;
fn set_handle_us(&mut self, handle_us: i64);
fn as_any(&self) -> &dyn std::any::Any;
fn as_any_mut(&mut self) -> &mut dyn std::any::Any;
fn clone_boxed(&self) -> Box<dyn UnifiedEvent>;
fn merge(&mut self, _other: &dyn UnifiedEvent) {
}
fn set_swap_data(&mut self, swap_data: SwapData);
fn swap_data_is_parsed(&self) -> bool;
fn outer_index(&self) -> i64;
fn inner_index(&self) -> Option<i64>;
fn transaction_index(&self) -> Option<u64>;
}
impl Clone for Box<dyn UnifiedEvent> {
fn clone(&self) -> Self {
self.clone_boxed()
}
}