dpp/data_contract/conversion/value/v0/mod.rs
1use crate::version::PlatformVersion;
2use crate::ProtocolError;
3use platform_value::Value;
4
5/// `platform_value` deserialization for `DataContract` with an explicit
6/// validation flag.
7///
8/// `from_value(value, full_validation, pv)` is the single entry point: pass
9/// `true` on trust boundaries (SDK ingest, fixture loaders, contract
10/// registration) to run full schema validation, and `false` to reconstruct
11/// already-trusted data (e.g. storage reads) without re-validating it.
12///
13/// For *serialization*, use canonical `ValueConvertible::to_object` /
14/// `platform_value::to_value(&data_contract)` directly — there is no
15/// validation dimension to writing.
16pub trait DataContractValueConversionMethodsV0 {
17 /// Deserialize from a `platform_value::Value`, running full schema
18 /// validation when `full_validation` is `true`.
19 fn from_value(
20 raw_object: Value,
21 full_validation: bool,
22 platform_version: &PlatformVersion,
23 ) -> Result<Self, ProtocolError>
24 where
25 Self: Sized;
26}