use async_trait::async_trait;
use request::{
data_booking::DataBookingRequest, data_inventory::InventoryRequest, data_rate::DataRateRequest, data_rp::DataRpRequest, data_validate::DataValidateRequest, incr_id::IncrIdRequest, incr_inv::IncrInvRequest, incr_rate::IncrRateRequest, incr_state::IncrStateRequest, static_city::StaticCityRequest, static_grade::StaticGradeRequest, static_info::StaticInfoRequest, static_list::StaticListRequest
};
use types::*;
mod network;
mod types;
pub mod elong;
pub mod request;
pub mod response;
#[async_trait]
pub trait Elong {
async fn get_static_city(&self, req: StaticCityRequest) -> RECityResp;
async fn get_static_list(&self, req: StaticListRequest) -> REListResp;
async fn get_static_info(&self, req: StaticInfoRequest) -> REInfoResp;
async fn get_static_grade(&self,req: StaticGradeRequest) -> REGradeResp;
async fn get_data_rp(&self, req: DataRpRequest) -> REDataRpResp;
async fn get_incr_id(&self, req: IncrIdRequest) -> REIncrIdResp;
async fn get_incr_sharding_id(&self, req: IncrIdRequest) -> REIncrIdResp;
async fn get_incr_state(&self, req: IncrStateRequest) -> REIncrStateResp;
async fn get_incr_sharding_state(&self, req: IncrStateRequest) -> REIncrStateResp;
async fn get_inventory(&self, req: InventoryRequest) -> REInvResp;
async fn get_incr_inv(&self, req: IncrInvRequest) -> REIncrInvResp;
async fn get_incr_sharding_inv(&self, req: IncrInvRequest) -> REIncrInvResp;
async fn get_data_rate(&self, req: DataRateRequest) -> RERateResp;
async fn get_incr_rate(&self, req: IncrRateRequest) -> REIncrRateResp;
async fn get_incr_sharding_rate(&self, req: IncrRateRequest) -> REIncrRateResp;
async fn data_validate(&self, req: DataValidateRequest) -> REDataValidateResp;
async fn data_booking(&self, req: DataBookingRequest) -> REDataBookingResp;
}