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
14pub use catalog::{CatalogError, RegulatoryStatus, SectorCatalog, SectorDescriptor};
15
16pub use domain::{
17    error::DppError,
18    gtin::{Gln, GlnError, Gtin, GtinError, gs1_check_digit},
19    identity::{AccessTier, PassportCredential, PassportCredentialSubject, SignedCredential},
20    lint::{LintFinding, LintResult, LintSeverity, lint_sector_data},
21    passport::{
22        FacilitySnapshot, ManufacturerInfo, MaterialEntry, Passport, PassportId, PassportView,
23        ProductCategory,
24    },
25    product_identity::ProductIdentity,
26    sector::{
27        AluminiumData, BatteryChemistry, BatteryData, BatteryType, CarbonFootprint,
28        CarbonFootprintClass, ConstructionData, DetergentData, ElectronicsData,
29        EnergyEfficiencyClass, FibreEntry, FurnitureData, LifecycleStage, MaterialComposition,
30        ProductionRoute, RepairCriterion, RepairabilityScore, Sector, SectorData, SteelData,
31        SurfactantEntry, SvhcSubstance, SystemBoundary, TextileData, ToyData, TyreData,
32        UnsoldGoodsDestination, UnsoldGoodsReason, UnsoldGoodsReport, redact_sector_data,
33        validate_fibre_composition, validate_surfactants, validate_svhc_substances,
34    },
35    status::PassportStatus,
36    transfer::{
37        OperatorRole, ResponsibleOperator, TransferChain, TransferError, TransferReason,
38        TransferRecord, TransferStatus,
39    },
40};
41
42pub use domain::field_error::{FieldError, ValidationErrors};
43
44#[cfg(not(target_arch = "wasm32"))]
45pub use domain::validation::{
46    BatchValidationItem, SectorValidator, SectorValidatorRegistry, batch_errors,
47    validate_raw_sector_data, validate_sector_data, validate_sector_data_batch,
48    validate_sector_data_with_registry,
49};
50
51pub use ports::archive::{
52    ArchivePort, ArchiveReceipt, ArchiveStatus, ArchiveVerification, GhostArchive,
53};
54pub use ports::compliance::{
55    ComplianceError, ComplianceErrorKind, ComplianceFinding, ComplianceRegistry, ComplianceResult,
56    ComplianceStatus, ComplianceStrategy, gate_determination,
57};
58pub use ports::registry_sync::{
59    GhostRegistrySync, RegistrationRequest, RegistryIdentifiers, RegistryRecord, RegistryStatus,
60    RegistrySyncPort,
61};
62
63pub use compliance::passthrough_registry::PassthroughRegistry;