use crate::error::AppError;
use crate::model::requests::{CloseCostsRequest, EditCostsRequest, OpenCostsRequest};
use crate::model::responses::{
CostsHistoryResponse, DurableMediumResponse, IndicativeCostsResponse,
};
use async_trait::async_trait;
#[async_trait]
pub trait CostsService: Send + Sync {
async fn get_indicative_costs_open(
&self,
request: &OpenCostsRequest,
) -> Result<IndicativeCostsResponse, AppError>;
async fn get_indicative_costs_close(
&self,
request: &CloseCostsRequest,
) -> Result<IndicativeCostsResponse, AppError>;
async fn get_indicative_costs_edit(
&self,
request: &EditCostsRequest,
) -> Result<IndicativeCostsResponse, AppError>;
async fn get_costs_history(
&self,
from: &str,
to: &str,
) -> Result<CostsHistoryResponse, AppError>;
async fn get_durable_medium(
&self,
quote_reference: &str,
) -> Result<DurableMediumResponse, AppError>;
}