use std::collections::{BTreeMap, BTreeSet};
use flate2::read::ZlibDecoder;
use serde::{Deserialize, Serialize};
use cadmpeg_ir::document::CadIr;
use cadmpeg_ir::hash::sha256_hex;
use cadmpeg_ir::unknown::UnknownRecord;
use cadmpeg_ir::AnnotationBuilder;
use crate::container::Container;
use crate::decode::Scan;
use crate::parasolid::{Stream, StreamKind};
mod attach;
pub(crate) mod catalogue;
mod display_jt;
mod features;
mod model;
mod om;
mod parasolid;
mod segments;
mod substrate;
pub(crate) mod vector;
pub(crate) use model::NativeModel;
pub(crate) use om::expression_parameter_names;
pub(crate) use segments::segment_body_lineage_statuses;
pub(crate) use substrate::{paired_delta_streams, topology_streams, ParsedStreams};
pub(crate) fn attach_annotations(
ir: &mut CadIr,
model: &NativeModel,
scan: &Scan,
annotations: &mut AnnotationBuilder,
unknowns: &mut Vec<UnknownRecord>,
) -> Result<(), cadmpeg_ir::NativeConvertError> {
attach::attach(ir, model, scan, annotations, unknowns)
}