sui_adapter_latest/data_store/
mod.rs1pub mod cached_package_store;
5pub mod transaction_package_store;
6
7use move_core_types::identifier::IdentStr;
8use move_vm_runtime::{
9 shared::types::{OriginalId, VersionId},
10 validation::verification::ast::Package as VerifiedPackage,
11};
12use std::{collections::BTreeMap, sync::Arc};
13use sui_types::{base_types::ObjectID, error::SuiResult};
14
15pub trait PackageMetadata {
17 fn version(&self) -> u64;
18 fn version_id(&self) -> ObjectID;
19 fn original_id(&self) -> ObjectID;
20 fn linkage_table(&self) -> BTreeMap<OriginalId, VersionId>;
21}
22
23pub trait PackageStore {
25 type Package: PackageMetadata;
26
27 fn get_package(&self, id: &ObjectID) -> SuiResult<Option<Self::Package>>;
28
29 fn resolve_type_to_defining_id(
30 &self,
31 module_address: ObjectID,
32 module_name: &IdentStr,
33 type_name: &IdentStr,
34 ) -> SuiResult<Option<ObjectID>>;
35}
36
37pub type VerifiedPackageStore<'a> = dyn PackageStore<Package = Arc<VerifiedPackage>> + 'a;
42
43impl PackageMetadata for Arc<VerifiedPackage> {
44 fn version(&self) -> u64 {
45 VerifiedPackage::version(self.as_ref())
46 }
47
48 fn version_id(&self) -> ObjectID {
49 VerifiedPackage::version_id(self.as_ref()).into()
50 }
51
52 fn original_id(&self) -> ObjectID {
53 VerifiedPackage::original_id(self.as_ref()).into()
54 }
55
56 fn linkage_table(&self) -> BTreeMap<OriginalId, VersionId> {
57 VerifiedPackage::linkage_table(self.as_ref()).clone()
58 }
59}