use std::collections::HashMap;
use tycho_common::{models::Chain, Bytes};
use crate::encoding::{
errors::EncodingError,
models::{EncodingContext, Swap},
};
pub trait SwapEncoder: Sync + Send {
fn new(
executor_address: Bytes,
chain: Chain,
config: Option<HashMap<String, String>>,
) -> Result<Self, EncodingError>
where
Self: Sized;
fn encode_swap(
&self,
swap: &Swap,
encoding_context: &EncodingContext,
) -> Result<Vec<u8>, EncodingError>;
fn executor_address(&self) -> &Bytes;
fn clone_box(&self) -> Box<dyn SwapEncoder>;
}
impl Clone for Box<dyn SwapEncoder> {
fn clone(&self) -> Box<dyn SwapEncoder> {
self.clone_box()
}
}