use crate::effects::MapEffectDB;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, JsonSchema)]
#[serde(remote = "bitcoin::Network")]
pub enum NetworkDef {
Bitcoin,
Testnet,
Signet,
Regtest,
}
#[derive(Serialize, Deserialize, JsonSchema, Clone, Debug)]
pub struct CreateArgs<S> {
pub arguments: S,
pub context: ContextualArguments,
}
#[derive(Serialize, Deserialize, JsonSchema, Clone, Debug)]
pub struct ContextualArguments {
#[serde(with = "NetworkDef")]
pub network: bitcoin::Network,
#[serde(with = "bitcoin::util::amount::serde::as_sat")]
#[schemars(with = "u64")]
pub amount: bitcoin::util::amount::Amount,
#[serde(skip_serializing_if = "MapEffectDB::skip_serializing", default)]
pub effects: MapEffectDB,
}