ig_client/application/interfaces/
order.rs1use crate::error::AppError;
2use crate::model::requests::{
3 ClosePositionRequest, CreateOrderRequest, CreateWorkingOrderRequest, UpdatePositionRequest,
4};
5use crate::model::responses::{
6 ClosePositionResponse, CreateOrderResponse, CreateWorkingOrderResponse,
7 OrderConfirmationResponse, UpdatePositionResponse,
8};
9
10use async_trait::async_trait;
11
12#[async_trait]
13pub trait OrderService: Send + Sync {
19 async fn create_order(
21 &self,
22
23 order: &CreateOrderRequest,
24 ) -> Result<CreateOrderResponse, AppError>;
25
26 async fn get_order_confirmation(
28 &self,
29
30 deal_reference: &str,
31 ) -> Result<OrderConfirmationResponse, AppError>;
32
33 async fn update_position(
35 &self,
36
37 deal_id: &str,
38 update: &UpdatePositionRequest,
39 ) -> Result<UpdatePositionResponse, AppError>;
40
41 async fn close_position(
43 &self,
44
45 close_request: &ClosePositionRequest,
46 ) -> Result<ClosePositionResponse, AppError>;
47
48 async fn create_working_order(
50 &self,
51
52 order: &CreateWorkingOrderRequest,
53 ) -> Result<CreateWorkingOrderResponse, AppError>;
54}