Skip to main content

dpp_domain/
lib.rs

1//! `dpp-domain` — EU Digital Product Passport domain types and port traits.
2//!
3//! This crate is the dependency root of the DPP workspace. Every other crate
4//! depends on this one. It depends only on `dpp-rules` (pure regulatory rules).
5//!
6//! No I/O, no async, no HTTP, no database drivers — pure domain logic only.
7
8pub mod catalog;
9pub mod compliance;
10pub mod domain;
11pub mod ports;
12pub mod schemas;
13#[cfg(test)]
14mod test_support;
15
16pub use catalog::{CatalogError, RegulatoryStatus, SectorCatalog, SectorDescriptor};
17
18pub use domain::{
19    error::DppError,
20    gtin::{Gln, GlnError, Gtin, GtinError, gs1_check_digit},
21    identity::{
22        Audience, Disclosure, PASSPORT_FIELD_DISCLOSURE, PassportCredential,
23        PassportCredentialSubject, SignedCredential,
24    },
25    lint::{LintFinding, LintResult, LintSeverity, lint_sector_data},
26    passport::{
27        FacilitySnapshot, ManufacturerInfo, MaterialEntry, Passport, PassportId, PassportView,
28        ProductCategory,
29    },
30    product_identity::ProductIdentity,
31    sector::{
32        AluminiumData, BatteryChemistry, BatteryData, BatteryType, CarbonFootprint,
33        CarbonFootprintClass, CarbonFootprintClassError, ConstructionData, DetergentData,
34        ElectronicsData, EnergyEfficiencyClass, ExpectedLifetime, FibreEntry, FurnitureData,
35        HarmfulEvents, LifecycleStage, MaterialComposition, ProductionRoute, RepairCriterion,
36        RepairabilityScore, Sector, SectorData, StateOfHealth, SteelData, SurfactantEntry,
37        SvhcSubstance, SystemBoundary, TextileData, ToyData, TyreData, UnsoldGoodsDestination,
38        UnsoldGoodsReason, UnsoldGoodsReport, redact_sector_data, validate_fibre_composition,
39        validate_surfactants, validate_svhc_substances,
40    },
41    status::PassportStatus,
42    transfer::{
43        OperatorRole, ResponsibleOperator, TransferChain, TransferError, TransferReason,
44        TransferRecord, TransferStatus,
45    },
46};
47
48pub use domain::field_error::{FieldError, ValidationErrors};
49
50#[cfg(not(target_arch = "wasm32"))]
51pub use domain::validation::{
52    BatchValidationItem, SectorValidator, SectorValidatorRegistry, batch_errors,
53    validate_raw_sector_data, validate_sector_data, validate_sector_data_batch,
54    validate_sector_data_with_registry,
55};
56
57pub use ports::archive::{
58    ArchivePort, ArchiveReceipt, ArchiveStatus, ArchiveVerification, GhostArchive,
59};
60pub use ports::compliance::{
61    ComplianceError, ComplianceErrorKind, ComplianceFinding, ComplianceRegistry, ComplianceResult,
62    ComplianceStatus, ComplianceStrategy, gate_determination,
63};
64pub use ports::registry_sync::{
65    GhostRegistrySync, RegistrationRequest, RegistryIdentifiers, RegistryRecord, RegistryStatus,
66    RegistrySyncPort,
67};
68
69pub use compliance::passthrough_registry::PassthroughRegistry;