use serde::{Deserialize, Serialize};
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McGetPublicKeyReq {
#[serde(default)]
pub identity_key: bool,
#[serde(default, alias = "protocolID")]
pub protocol_id: Option<serde_json::Value>,
#[serde(default, alias = "keyID")]
pub key_id: Option<String>,
#[serde(default)]
pub counterparty: Option<String>,
#[serde(default)]
pub for_self: Option<bool>,
}
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct McGetPublicKeyRes {
pub public_key: String,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateSignatureReq {
#[serde(default)]
pub data: Option<Vec<u8>>,
#[serde(default)]
pub hash_to_directly_sign: Option<Vec<u8>>,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
pub counterparty: String,
}
#[derive(Serialize)]
pub struct McCreateSignatureRes {
pub signature: Vec<u8>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateActionReq {
pub description: String,
#[serde(default)]
pub inputs: Option<Vec<McCreateActionInput>>,
#[serde(default, rename = "inputBEEF")]
pub input_beef: Option<Vec<u8>>,
#[serde(default)]
pub outputs: Option<Vec<McCreateActionOutput>>,
#[serde(default)]
pub lock_time: Option<u32>,
#[serde(default)]
pub options: Option<McCreateActionOptions>,
#[serde(default)]
pub labels: Option<Vec<String>>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateActionInput {
pub outpoint: String,
#[serde(default)]
pub unlocking_script: Option<String>,
#[serde(default)]
pub unlocking_script_length: Option<u32>,
#[serde(default)]
pub input_description: Option<String>,
#[serde(default)]
pub sequence_number: Option<u32>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateActionOutput {
pub locking_script: String,
pub satoshis: u64,
pub output_description: String,
#[serde(default)]
pub basket: Option<String>,
#[serde(default)]
pub custom_instructions: Option<String>,
#[serde(default)]
pub tags: Option<Vec<String>>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateActionOptions {
#[serde(default)]
pub accept_delayed_broadcast: Option<bool>,
#[serde(default)]
pub randomize_outputs: Option<bool>,
#[serde(default)]
pub sign_and_process: Option<bool>,
#[serde(default)]
pub no_send: Option<bool>,
#[serde(default)]
pub trust_self: Option<String>,
}
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateActionRes {
#[serde(skip_serializing_if = "Option::is_none")]
pub txid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tx: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub send_with_results: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub signable_transaction: Option<McSignableTransaction>,
#[serde(skip_serializing_if = "Option::is_none")]
pub no_send_change: Option<serde_json::Value>,
}
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct McSignableTransaction {
pub tx: Vec<u8>,
pub reference: String,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McInternalizeActionReq {
pub tx: Vec<u8>,
pub outputs: Vec<McInternalizeOutput>,
pub description: String,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McInternalizeOutput {
pub output_index: u32,
pub protocol: String,
#[serde(default)]
pub payment_remittance: Option<McWalletPayment>,
#[serde(default)]
pub insertion_remittance: Option<McBasketInsertion>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McBasketInsertion {
pub basket: String,
#[serde(default)]
pub custom_instructions: Option<String>,
#[serde(default)]
pub tags: Option<Vec<String>>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McWalletPayment {
pub derivation_prefix: String,
pub derivation_suffix: String,
pub sender_identity_key: String,
}
#[derive(Serialize)]
pub struct McInternalizeActionRes {
pub accepted: bool,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McVerifySignatureReq {
#[serde(default)]
pub data: Option<Vec<u8>>,
pub signature: Vec<u8>,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
#[serde(default)]
pub counterparty: Option<String>,
#[serde(default)]
pub for_self: Option<bool>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McEncryptReq {
pub plaintext: Vec<u8>,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
#[serde(default)]
pub counterparty: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McDecryptReq {
pub ciphertext: Vec<u8>,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
#[serde(default)]
pub counterparty: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McCreateHmacReq {
pub data: Vec<u8>,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
#[serde(default)]
pub counterparty: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McVerifyHmacReq {
pub data: Vec<u8>,
pub hmac: Vec<u8>,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
#[serde(default)]
pub counterparty: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McRevealCounterpartyKeyLinkageReq {
pub counterparty: String,
pub verifier: String,
#[serde(default)]
pub privileged: Option<bool>,
#[serde(default)]
pub privileged_reason: Option<String>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McRevealSpecificKeyLinkageReq {
pub counterparty: String,
pub verifier: String,
#[serde(alias = "protocolID")]
pub protocol_id: serde_json::Value,
#[serde(alias = "keyID")]
pub key_id: String,
#[serde(default)]
pub privileged: Option<bool>,
#[serde(default)]
pub privileged_reason: Option<String>,
}