use std::collections::HashMap;
use serde::Deserialize;
pub use endpoint_libs::model::{EndpointSchema, EnumVariant, Field, Service, Type};
#[derive(Debug, Deserialize)]
pub struct Services {
#[serde(default)]
pub enums: Vec<Type>,
pub services: Vec<Service>,
#[serde(default)]
pub structs: Vec<Type>,
}
#[derive(Debug, Clone)]
pub struct EndpointMetadata {
pub service_name: String,
pub method_id: u32,
pub params: Vec<ParameterMetadata>,
pub is_stream: bool,
}
#[derive(Debug, Clone)]
pub struct ParameterMetadata {
pub name: String,
pub ty: Type,
}
#[derive(Debug, Deserialize)]
pub struct Config {
#[serde(flatten)]
pub endpoints: HashMap<String, EndpointData>,
}
#[derive(Debug, Deserialize)]
pub struct EndpointData {
pub name: String,
#[serde(default)]
pub params: HashMap<String, ParamValue>,
}
#[derive(Debug, Deserialize)]
#[serde(untagged)]
pub enum ParamValue {
String(String),
Number(i64),
Bool(bool),
Object(HashMap<String, ParamValue>),
Array(Vec<ParamValue>),
}