use async_trait::async_trait;
use wx_rust_common::bean::CommonUploadData;
use wx_rust_common::error::WxErrorException;
use crate::bean::MaAuthQueryIdentityTreeResult;
use crate::bean::MaAuthQueryResult;
use crate::bean::MaAuthResubmitParam;
use crate::bean::MaAuthSubmitParam;
use crate::bean::MaAuthSubmitResult;
use crate::bean::MaAuthUploadResult;
#[async_trait]
pub trait WxOpenMaAuthService: Send + Sync {
async fn submit(
&self,
param: &MaAuthSubmitParam,
) -> Result<MaAuthSubmitResult, WxErrorException>;
async fn query(&self, task_id: &str) -> Result<MaAuthQueryResult, WxErrorException>;
async fn upload(&self, data: &CommonUploadData)
-> Result<MaAuthUploadResult, WxErrorException>;
async fn resubmit(
&self,
param: &MaAuthResubmitParam,
) -> Result<MaAuthSubmitResult, WxErrorException>;
async fn query_identity_tree(&self) -> Result<MaAuthQueryIdentityTreeResult, WxErrorException>;
}