1pub mod converter;
45pub mod country;
46pub mod enrichment;
47pub mod error;
48pub mod generation;
49pub mod ghs_codes;
50pub mod language;
51pub mod normalize;
52pub mod schema;
53
54pub use converter::{
55 AnthropicBackend, AnyBackend, ConvertConfig, ConversionReport, LlmBackend, LlmConfig,
56 OpenAiCompatBackend, build_any_backend,
57 convert_bytes_to_json, convert_bytes_to_json_with_report,
58 convert_from_json, convert_from_template,
59 convert_pdf_to_json_vision, convert_to_json, convert_to_json_with_report,
60 convert_url_to_json,
61 extract_sds_from_pdf_vision, fill_template, openai_compat_url,
62 prune_empty_fields,
63};
64pub use converter::extractor::{
65 detect_format_str, detect_language_from_file, detect_language_from_url,
66 extract_text, extract_text_from_url, extract_text_limited,
67};
68pub use converter::validator::{validate, validate_typed, Finding};
69pub use enrichment::{
70 enrich_composition, lookup_cas, lookup_cas_detailed, CasInfo, CasResolution, CasWarning,
71 ChemicalIdentityCandidate,
72};
73pub use error::SdsError;
74pub use generation::{
75 build_generation_artifacts, build_generation_report, build_product_level_unresolved,
76 compute_evidence_summary, compute_release_status, draft_sections_from_resolved_input,
77 evaluate_release_gate, generate_from_detailed_lookups, generate_from_normalized_input,
78 generate_from_resolved_input, generate_section_1_and_3, generate_with_detailed_enrichment,
79 generate_with_enrichment,
80 render_review_report, serialize_generation_report, serialize_official_sds,
81 validate_product_input, ComponentInput,
82 ConcentrationRange, ConfidenceLevel, EvidenceApplicability, EvidenceLevel, EvidenceSource,
83 EvidenceSummary, ExplosiveLimitsEvidence, FieldPolicy, FieldProvenance, FieldStatus,
84 GenerationArtifactError, GenerationArtifacts, GenerationReport, GenerationResult,
85 MeasuredPropertiesInput, MeasuredValueEvidence, MeasurementConditions,
86 NotApplicableReason, ProductInput, RegulatoryImpact, ReleaseGateResult, ReleaseStatus,
87 REPORT_SCHEMA_VERSION, RequiredInput, SafetyImpact, SectionDraftResult, SupplierInput,
88 TestResultEvidence, UnresolvedField, UnresolvedReason,
89};
90pub use ghs_codes::{h_code_description, is_valid_h_code, is_valid_p_code, p_code_description};
91pub use country::SourceCountry;
92pub use language::{detect_language, Language};
93pub use normalize::{
94 CalculatedIdentityProperties, ChemicalNormalizationResult, ChemicalNormalizer,
95 NormalizationIssue, NormalizationStatus, UnavailableNormalizer,
96};
97#[cfg(feature = "chematic-normalization")]
98pub use normalize::ChematicNormalizer;
99pub use schema::SdsRoot;