use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct GleamConfig {
pub app_name: Option<String>,
#[serde(default)]
pub nif_module: Option<String>,
#[serde(default)]
pub features: Option<Vec<String>>,
#[serde(default)]
pub serde_rename_all: Option<String>,
#[serde(default)]
pub rename_fields: HashMap<String, String>,
#[serde(default)]
pub exclude_functions: Vec<String>,
#[serde(default)]
pub exclude_types: Vec<String>,
#[serde(default)]
pub run_wrapper: Option<String>,
#[serde(default)]
pub extra_lint_paths: Vec<String>,
#[serde(default)]
pub element_constructors: Vec<GleamElementConstructor>,
#[serde(default)]
pub json_object_wrapper: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct GleamElementConstructor {
pub element_type: String,
pub constructor: String,
pub fields: Vec<GleamElementField>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct GleamElementField {
pub gleam_field: String,
pub kind: String,
#[serde(default)]
pub json_field: Option<String>,
#[serde(default)]
pub default: Option<String>,
#[serde(default)]
pub value: Option<String>,
}