Skip to main content

sui_json_rpc_types/
sui_object.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use std::fmt;
5use std::fmt::{Display, Formatter};
6
7use schemars::JsonSchema;
8use serde::Deserialize;
9use serde::Serialize;
10
11use sui_types::base_types::{ObjectDigest, ObjectID, ObjectRef, SequenceNumber};
12
13#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema, Eq, PartialEq, Ord, PartialOrd)]
14#[serde(rename_all = "camelCase", rename = "ObjectRef")]
15pub struct SuiObjectRef {
16    /// Hex code as string representing the object id
17    pub object_id: ObjectID,
18    /// Object version.
19    pub version: SequenceNumber,
20    /// Base64 string representing the object digest
21    pub digest: ObjectDigest,
22}
23
24impl SuiObjectRef {
25    pub fn to_object_ref(&self) -> ObjectRef {
26        (self.object_id, self.version, self.digest)
27    }
28}
29
30impl Display for SuiObjectRef {
31    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
32        write!(
33            f,
34            "Object ID: {}, version: {}, digest: {}",
35            self.object_id, self.version, self.digest
36        )
37    }
38}
39
40impl From<ObjectRef> for SuiObjectRef {
41    fn from(oref: ObjectRef) -> Self {
42        Self {
43            object_id: oref.0,
44            version: oref.1,
45            digest: oref.2,
46        }
47    }
48}