use serde::{Deserialize, Serialize};
use crate::edge::Edge;
use crate::node::{CorpusScope, Node, NodeId};
use crate::reference::{Embed, FieldBinding, LocalBinding, Reference, TraitImpl};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct FileFacts {
pub file: String,
pub content_hash: String,
pub has_syntax_errors: bool,
pub nodes: Vec<Node>,
pub contains: Vec<Edge>,
pub references: Vec<Reference>,
pub locals: Vec<LocalBinding>,
pub fields: Vec<FieldBinding>,
pub embeds: Vec<Embed>,
pub trait_impls: Vec<TraitImpl>,
pub scopes: Vec<(NodeId, CorpusScope)>,
pub body_terms: Vec<(NodeId, Vec<String>)>,
}