mod accesskit_specs;
mod atomics;
mod bool_contracts;
mod char_contracts;
mod clap_specs;
mod collection_contracts;
mod collections;
mod datetime_specs;
mod egui_specs;
mod elicit_spec;
mod float_contracts;
mod geo_specs;
mod http_specs;
mod integer_contracts;
mod integers;
mod network_specs;
mod palette_specs;
mod ratatui_specs;
mod regex_specs;
mod registry;
mod scalars;
mod sqlx_specs;
mod std_extras;
mod string_contracts;
mod strings;
pub mod type_spec_plugin;
mod url_specs;
mod uuid_specs;
mod value_specs;
pub use collections::{HashMapSpec, HashSetSpec, OptionSpec, ResultSpec, VecSpec};
pub use elicit_spec::ElicitSpec;
pub use registry::{TypeSpecInventoryKey, lookup_type_spec, lookup_type_spec_by_id};
use derive_builder::Builder;
use derive_getters::Getters;
use derive_setters::Setters;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Getters, Setters, Builder)]
#[setters(prefix = "with_")]
pub struct SpecEntry {
label: String,
description: String,
#[builder(default)]
expression: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Getters, Setters, Builder)]
#[setters(prefix = "with_")]
pub struct SpecCategory {
name: String,
#[builder(default)]
entries: Vec<SpecEntry>,
}
#[derive(Debug, Clone, PartialEq, Eq, Getters, Setters, Builder)]
#[setters(prefix = "with_")]
pub struct TypeSpec {
type_name: String,
summary: String,
#[builder(default)]
categories: Vec<SpecCategory>,
}