// file: crates/ksp-raw-transaction-lib/src/acquisition.rs // version: 1 /// Complete source-neutral RAW transaction acquisition containing one canonical entity and one producer-owned observation. pub struct RawTransactionAcquisition { observation: ksp_store_api::RawTransactionObservation, transaction: ksp_store_api::RawTransaction, } impl crate::RawTransactionAcquisition { /// Returns the producer-owned acquisition observation linked to the canonical transaction. #[must_use] pub const fn observation(&self) -> &ksp_store_api::RawTransactionObservation { return &self.observation; } /// Returns the canonical source-independent RAW transaction. #[must_use] pub const fn transaction(&self) -> &ksp_store_api::RawTransaction { return &self.transaction; } /// Consumes this acquisition into its canonical transaction and observation. #[must_use] pub fn into_parts(self) -> (ksp_store_api::RawTransaction, ksp_store_api::RawTransactionObservation) { return (self.transaction, self.observation); } } impl std::fmt::Debug for crate::RawTransactionAcquisition { fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { return formatter.write_str("RawTransactionAcquisition(..)"); } } /// Assembles one canonical transaction with a producer-owned observation key and safe acquisition provenance. #[must_use] pub fn assemble_raw_transaction_acquisition( transaction: ksp_store_api::RawTransaction, observation_key: ksp_store_api::RawObservationKey, provenance: ksp_store_api::RawAcquisitionProvenance, ) -> crate::RawTransactionAcquisition { let observation = ksp_store_api::RawTransactionObservation::new(observation_key, transaction.reference().clone(), provenance); return crate::RawTransactionAcquisition { observation, transaction }; } #[cfg(test)] #[path = "../unit_tests/acquisition.rs"] mod tests;