use iota_client::block::{output::OutputId, payload::tagged_data::TaggedDataPayload};
use serde::{Deserialize, Serialize};
use crate::account::types::address::AccountAddress;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransactionOptions {
#[serde(rename = "remainderValueStrategy", default)]
pub remainder_value_strategy: RemainderValueStrategy,
#[serde(rename = "taggedDataPayload", default)]
pub tagged_data_payload: Option<TaggedDataPayload>,
#[serde(rename = "customInputs", default)]
pub custom_inputs: Option<Vec<OutputId>>,
#[serde(rename = "mandatoryInputs", default)]
pub mandatory_inputs: Option<Vec<OutputId>>,
#[serde(rename = "allowBurning", default)]
pub allow_burning: bool,
pub note: Option<String>,
}
#[allow(clippy::enum_variant_names)]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "strategy", content = "value")]
pub enum RemainderValueStrategy {
ReuseAddress,
ChangeAddress,
CustomAddress(AccountAddress),
}
impl Default for RemainderValueStrategy {
fn default() -> Self {
Self::ReuseAddress
}
}