use serde::{Deserialize, Serialize};
use super::types::{Hex, dec};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", try_from = "serde_json::Value")]
pub struct AcceptRequest {
pub quote_id: String,
pub redeem_script: Hex,
pub funding_txid: String,
pub funding_vout: u32,
pub taker_evm_address: Hex,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub funding_expiry_height: Option<u32>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", try_from = "serde_json::Value")]
pub struct AdaptorProposal {
pub quote_id: String,
pub taker_zcash_pubkey: Hex,
pub adaptor_point: Hex,
pub funding_txid: String,
pub funding_vout: u32,
#[serde(with = "dec")]
pub amount_zat: u64,
pub refund_height: u32,
pub refund_address: String,
pub taker_evm_recipient: Hex,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub funding_expiry_height: Option<u32>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", try_from = "serde_json::Value")]
pub struct AdaptorProposalAccepted {
pub swap_id: String,
pub maker_refund_signature: Hex,
pub claim_to: String,
pub branch_id: u32,
pub signer: Hex,
pub signer_pubkey: Hex,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AdaptorPreSignatureRequest {
pub taker_pre_signature: String,
}
macro_rules! json_methods {
($($t:ty),*) => {$(
impl $t {
pub fn to_json(&self) -> Result<String, serde_json::Error> {
serde_json::to_string(self)
}
}
)*};
}
json_methods!(AcceptRequest, AdaptorProposal, AdaptorProposalAccepted, AdaptorPreSignatureRequest);