use serde::{Deserialize, Serialize};
use super::{
Documentation, Expression, Mutability, NodeID, OverrideSpecifier, StorageLocation,
TypeDescriptions, TypeName, Visibility,
};
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct VariableDeclaration {
pub id: NodeID,
pub src: String,
pub name: String,
#[serde(default)]
pub name_location: Option<String>,
#[serde(default)]
pub type_name: Option<TypeName>,
#[serde(default)]
pub constant: Option<bool>,
#[serde(default)]
pub mutability: Option<Mutability>,
#[serde(default)]
pub state_variable: Option<bool>,
#[serde(default)]
pub storage_location: Option<StorageLocation>,
#[serde(default)]
pub visibility: Option<Visibility>,
#[serde(default)]
pub value: Option<Expression>,
#[serde(default)]
pub indexed: Option<bool>,
#[serde(default)]
pub scope: Option<NodeID>,
#[serde(default)]
pub type_descriptions: TypeDescriptions,
#[serde(default)]
pub overrides: Option<OverrideSpecifier>,
#[serde(default)]
pub function_selector: Option<String>,
#[serde(default)]
pub base_functions: Option<Vec<NodeID>>,
#[serde(default)]
pub documentation: Option<Documentation>,
}