use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct MoveModuleABI {
pub address: String,
pub name: String,
#[serde(default)]
pub exposed_functions: Vec<MoveFunction>,
#[serde(default)]
pub structs: Vec<MoveStructDef>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct MoveFunction {
pub name: String,
#[serde(default)]
pub visibility: String,
#[serde(default)]
pub is_entry: bool,
#[serde(default)]
pub is_view: bool,
#[serde(default)]
pub generic_type_params: Vec<MoveFunctionGenericTypeParam>,
#[serde(default)]
pub params: Vec<String>,
#[serde(default, rename = "return")]
pub returns: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct MoveFunctionGenericTypeParam {
#[serde(default)]
pub constraints: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct MoveStructDef {
pub name: String,
#[serde(default)]
pub is_native: bool,
#[serde(default)]
pub abilities: Vec<String>,
#[serde(default)]
pub generic_type_params: Vec<MoveStructGenericTypeParam>,
#[serde(default)]
pub fields: Vec<MoveStructField>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct MoveStructGenericTypeParam {
#[serde(default)]
pub constraints: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct MoveStructField {
pub name: String,
#[serde(rename = "type")]
pub typ: String,
}