use async_trait::async_trait;
use paralock_core::protocol::{
AcceptRequest, AdaptorPreSignatureRequest, AdaptorProposal, AdaptorProposalAccepted, EvmChain, Quote, Swap,
SwapMode,
};
use crate::Result;
#[async_trait]
pub trait MakerApi: Send + Sync {
async fn quote(&self, zec_amount_zat: u64, chain: EvmChain, mode: SwapMode) -> Result<Quote>;
async fn quote_exact_out(&self, usd_amount: u128, chain: EvmChain, mode: SwapMode) -> Result<Quote>;
async fn accept(&self, request: &AcceptRequest) -> Result<Swap>;
async fn get_swap(&self, id: &str) -> Result<Option<Swap>>;
async fn propose_adaptor(&self, proposal: &AdaptorProposal) -> Result<AdaptorProposalAccepted>;
async fn adaptor_pre_signature(&self, swap_id: &str, request: &AdaptorPreSignatureRequest) -> Result<Swap>;
}