#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FieldKind {
    Plain,
    Nested {
        struct_name: &'static str,
    },
    Volatile,
    ReactiveMap {
        key_type: &'static str,
        value_type: &'static str,
    },
    Lookup {
        target_key: &'static str,
        mutable: bool,
    },
    LookupNode {
        target_prefix: &'static str,
        struct_name: &'static str,
    },
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct FieldExportMeta {
    pub name: &'static str,
    pub ts_type: &'static str,
    pub full_ts_type: &'static str,
    pub kind: FieldKind,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SchemaExportEntry {
    pub prefix: Option<&'static str>,
    pub struct_name: &'static str,
    pub fields: &'static [FieldExportMeta],
}

inventory::collect!(SchemaExportEntry);
