Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions examples/01_create_locked_notarization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ use std::time::{SystemTime, UNIX_EPOCH};
use anyhow::Result;
use examples::get_funded_client;
use notarization::core::NotarizationMethod;
use notarization::core::state::State;
use notarization::core::timelock::TimeLock;
use notarization::core::types::{State, TimeLock};

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
3 changes: 1 addition & 2 deletions examples/02_create_dynamic_notarization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ use std::time::{SystemTime, UNIX_EPOCH};
use anyhow::Result;
use examples::get_funded_client;
use notarization::core::NotarizationMethod;
use notarization::core::state::State;
use notarization::core::timelock::TimeLock;
use notarization::core::types::{State, TimeLock};

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
2 changes: 1 addition & 1 deletion examples/03_update_dynamic_notarization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

use anyhow::Result;
use examples::get_funded_client;
use notarization::core::state::State;
use notarization::core::types::State;

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
3 changes: 1 addition & 2 deletions examples/04_destroy_notarization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ use std::time::{SystemTime, UNIX_EPOCH};

use anyhow::Result;
use examples::get_funded_client;
use notarization::core::state::State;
use notarization::core::timelock::TimeLock;
use notarization::core::types::{State, TimeLock};

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
2 changes: 1 addition & 1 deletion examples/05_update_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

use anyhow::Result;
use examples::get_funded_client;
use notarization::core::state::State;
use notarization::core::types::State;

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
2 changes: 1 addition & 1 deletion examples/06_update_metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

use anyhow::Result;
use examples::get_funded_client;
use notarization::core::state::State;
use notarization::core::types::State;

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
3 changes: 1 addition & 2 deletions examples/07_transfer_dynamic_notarization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ use std::time::{SystemTime, UNIX_EPOCH};
use anyhow::Result;
use examples::get_funded_client;
use iota_sdk::types::base_types::IotaAddress;
use notarization::core::state::State;
use notarization::core::timelock::TimeLock;
use notarization::core::types::{State, TimeLock};

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
3 changes: 1 addition & 2 deletions examples/08_access_read_only_methods.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ use std::time::{SystemTime, UNIX_EPOCH};

use anyhow::Result;
use examples::get_funded_client;
use notarization::core::state::State;
use notarization::core::timelock::TimeLock;
use notarization::core::types::{State, TimeLock};

#[tokio::main]
async fn main() -> Result<()> {
Expand Down
6 changes: 3 additions & 3 deletions notarization-move/Move.lock
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ flavor = "iota"
[env]

[env.localnet]
chain-id = "2e3bf941"
original-published-id = "0x6846c50db5a90464e5768e945990098c98be5ee41a296981a8c440fdf9512aac"
latest-published-id = "0x6846c50db5a90464e5768e945990098c98be5ee41a296981a8c440fdf9512aac"
chain-id = "ecc0606a"
original-published-id = "0xfbddb4631d027b2c4f0b4b90c020713d258ed32bdb342b5397f4da71edb7478a"
latest-published-id = "0xfbddb4631d027b2c4f0b4b90c020713d258ed32bdb342b5397f4da71edb7478a"
published-version = "1"

[env.devnet]
Expand Down
36 changes: 12 additions & 24 deletions notarization-rs/src/client/full_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
//! All transaction methods return a [`TransactionBuilder`] that follows this pattern:
//!
//! ```rust,ignore
//! # use notarization::client::full_client::{NotarizationClient, State};
//! # use notarization::client::full_client::NotarizationClient;
//! # use notarization::core::types::State;
//! # use iota_interaction::types::base_types::ObjectID;
//! # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>) -> Result<(), Box<dyn std::error::Error>> {
//! # let object_id = ObjectID::ZERO;
Expand Down Expand Up @@ -46,10 +47,9 @@
//! ## Example: Complete Notarization Workflow
//!
//! ```rust,ignore
//! # use notarization::client::full_client::NotarizationClient;
//! # use notarization::core::builder::NotarizationBuilder;
//! # use notarization::core::state::State;
//! # use notarization::core::timelock::TimeLock;
//! # use notarization::core::types::{State, TimeLock};
//! # use notarization::client::full_client::NotarizationClient;
//! # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>) -> Result<(), Box<dyn std::error::Error>> {
//! // 1. Create a dynamic notarization
//! let create_result = client
Expand Down Expand Up @@ -90,10 +90,8 @@ use secret_storage::Signer;

use super::read_only::NotarizationClientReadOnly;
use crate::core::builder::{Dynamic, Locked, NotarizationBuilder};
use crate::core::destroy::DestroyNotarization;
use crate::core::metadata::UpdateMetadata;
use crate::core::state::{State, UpdateState};
use crate::core::transfer::TransferNotarization;
use crate::core::transactions::{DestroyNotarization, TransferNotarization, UpdateMetadata, UpdateState};
use crate::core::types::State;
use crate::error::Error;

/// A client for creating and managing notarizations on the IOTA blockchain.
Expand Down Expand Up @@ -168,8 +166,7 @@ impl<S> NotarizationClient<S> {
///
/// ```rust,ignore
/// # use notarization::client::full_client::NotarizationClient;
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::timelock::TimeLock;
/// # use notarization::core::types::TimeLock;
/// # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>) -> Result<(), Box<dyn std::error::Error>> {
/// let result = client
/// .create_locked_notarization()
Expand All @@ -194,8 +191,7 @@ impl<S> NotarizationClient<S> {
///
/// ```rust,ignore
/// # use notarization::client::full_client::NotarizationClient;
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::timelock::TimeLock;
/// # use notarization::core::types::TimeLock;
/// # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>) -> Result<(), Box<dyn std::error::Error>> {
/// let result = client
/// .create_dynamic_notarization()
Expand Down Expand Up @@ -233,8 +229,7 @@ where
///
/// ```rust,ignore
/// # use notarization::client::full_client::NotarizationClient;
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::state::State;
/// # use notarization::core::types::State;
/// # use iota_interaction::types::base_types::ObjectID;
/// # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>, object_id: ObjectID) -> Result<(), Box<dyn std::error::Error>> {
/// client
Expand Down Expand Up @@ -264,9 +259,7 @@ where
/// ## Example
///
/// ```rust,ignore
/// # use notarization::client::full_client::{NotarizationClient, State};
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::timelock::TimeLock;
/// # use notarization::client::full_client::NotarizationClient;
/// # use iota_interaction::types::base_types::ObjectID;
/// # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>, object_id: ObjectID) -> Result<(), Box<dyn std::error::Error>> {
/// client
Expand Down Expand Up @@ -295,9 +288,7 @@ where
/// ## Example
///
/// ```rust,ignore
/// # use notarization::client::full_client::{NotarizationClient, State};
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::timelock::TimeLock;
/// # use notarization::NotarizationClient;
/// # use iota_interaction::types::base_types::ObjectID;
/// # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>, object_id: ObjectID) -> Result<(), Box<dyn std::error::Error>> {
/// client
Expand Down Expand Up @@ -329,10 +320,7 @@ where
/// ## Example
///
/// ```rust,ignore
/// # use notarization::client::full_client::{NotarizationClient};
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::timelock::TimeLock;
/// # use notarization::core::state::State;
/// # use notarization::client::full_client::NotarizationClient;
/// # use iota_interaction::types::base_types::{ObjectID, IotaAddress};
/// # async fn example(client: &NotarizationClient<impl secret_storage::Signer<iota_interaction::IotaKeySignature>>, object_id: ObjectID, recipient: IotaAddress) -> Result<(), Box<dyn std::error::Error>> {
/// client
Expand Down
4 changes: 2 additions & 2 deletions notarization-rs/src/client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ use product_common::network_name::NetworkName;
use crate::error::Error;
use crate::iota_interaction_adapter::IotaClientAdapter;

pub mod full_client;
pub mod read_only;
mod full_client;
mod read_only;

pub use full_client::*;
pub use read_only::*;
Expand Down
3 changes: 1 addition & 2 deletions notarization-rs/src/client/read_only.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ use serde::de::DeserializeOwned;

use super::network_id;
use crate::core::operations::{NotarizationImpl, NotarizationOperations};
use crate::core::state::{Data, State};
use crate::core::timelock::LockMetadata;
use crate::core::types::{Data, LockMetadata, State};
use crate::core::{NotarizationMethod, move_utils};
use crate::error::Error;
use crate::iota_interaction_adapter::IotaClientAdapter;
Expand Down
41 changes: 24 additions & 17 deletions notarization-rs/src/core/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,25 @@
//! ### Creating a Locked Notarization
//!
//! ```rust,ignore
//! use notarization::{NotarizationBuilder, State, TimeLock};
//! use notarization::core::builder::NotarizationBuilder;
//! use notarization::core::types::{State, TimeLock};
//!
//! let builder = NotarizationBuilder::locked()
//! .with_string_state("Legal Document v1.0", Some("PDF hash: abc123"))
//! .with_immutable_description("Employment Contract")
//! .with_string_state("Legal Document v1.0".to_string(), Some("PDF hash: abc123".to_string()))
//! .with_immutable_description("Employment Contract".to_string())
//! .with_delete_at(TimeLock::UnlockAt(1735689600)) // Unix timestamp
//! .finish()?;
//! ```
//!
//! ### Creating a Dynamic Notarization
//!
//! ```rust,ignore
//! use notarization::{NotarizationBuilder, State, TimeLock};
//! use notarization::core::builder::NotarizationBuilder;
//! use notarization::core::types::{State, TimeLock};
//!
//! let builder = NotarizationBuilder::dynamic()
//! .with_string_state("Status: Active", None)
//! .with_immutable_description("Service Status Monitor")
//! .with_string_state("Status: Active".to_string(), None)
//! .with_immutable_description("Service Status Monitor".to_string())
//! .with_transfer_lock(TimeLock::None) // Can be transferred freely
//! .finish();
//! ```
Expand All @@ -44,9 +46,8 @@ use std::marker::PhantomData;
use product_common::transaction::transaction_builder::TransactionBuilder;

use super::NotarizationMethod;
use super::notarization::CreateNotarization;
use crate::core::state::State;
use crate::core::timelock::TimeLock;
use super::transactions::CreateNotarization;
use super::types::{State, TimeLock};
use crate::error::Error;

/// Marker type for locked notarizations.
Expand Down Expand Up @@ -88,9 +89,10 @@ impl NotarizationBuilder<Locked> {
/// ## Example
///
/// ```rust,ignore
/// use notarization::{NotarizationBuilder, TimeLock};
/// use notarization::core::builder::NotarizationBuilder;
/// use notarization::core::types::TimeLock;
///
/// let builder = NotarizationBuilder::locked().with_delete_lock(TimeLock::UnlockAt(1735689600));
/// let builder = NotarizationBuilder::locked().with_delete_at(TimeLock::UnlockAt(1735689600));
/// ```
pub fn locked() -> Self {
Self {
Expand All @@ -113,10 +115,11 @@ impl NotarizationBuilder<Locked> {
/// ## Example
///
/// ```rust,ignore
/// use notarization::core::builder::{NotarizationBuilder, TimeLock};
/// use notarization::core::builder::NotarizationBuilder;
/// use notarization::core::types::TimeLock;
///
/// // Can be destroyed after January 1, 2025
/// let builder = NotarizationBuilder::locked().with_delete_lock(TimeLock::UnlockAt(1735689600));
/// let builder = NotarizationBuilder::locked().with_delete_at(TimeLock::UnlockAt(1735689600));
/// ```
pub fn with_delete_lock(mut self, lock: TimeLock) -> Self {
self.delete_lock = Some(lock);
Expand All @@ -132,7 +135,8 @@ impl NotarizationBuilder<Locked> {
/// ## Example
///
/// ```rust,ignore
/// # use notarization::core::builder::{NotarizationBuilder, TimeLock, State};
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::types::{TimeLock, State};
/// let transaction = NotarizationBuilder::locked()
/// .with_string_state("Document content", None)
/// .with_delete_lock(TimeLock::UnlockAt(1735689600))
Expand Down Expand Up @@ -184,7 +188,8 @@ impl NotarizationBuilder<Dynamic> {
/// ## Example
///
/// ```rust,ignore
/// use notarization::core::builder::{NotarizationBuilder, TimeLock};
/// use notarization::core::builder::NotarizationBuilder;
/// use notarization::core::types::TimeLock;
///
/// // Lock transfers for 30 days
/// let builder = NotarizationBuilder::dynamic().with_transfer_lock(TimeLock::UnlockAt(1735689600));
Expand All @@ -202,7 +207,8 @@ impl NotarizationBuilder<Dynamic> {
/// ## Example
///
/// ```rust,ignore
/// # use notarization::core::builder::{NotarizationBuilder, State};
/// # use notarization::core::builder::NotarizationBuilder;
/// # use notarization::core::types::State;
/// let transaction = NotarizationBuilder::dynamic()
/// .with_string_state("Dynamic content", None)
/// .with_immutable_description("Status Monitor")
Expand All @@ -223,7 +229,8 @@ impl<M> NotarizationBuilder<M> {
/// ## Example
///
/// ```rust,ignore
/// use notarization::core::builder::{NotarizationBuilder, State};
/// use notarization::core::builder::NotarizationBuilder;
/// use notarization::core::types::State;
///
/// let builder = NotarizationBuilder::locked()
/// .with_state(State::from_string("Document content", Some("v1.0")));
Expand Down
9 changes: 2 additions & 7 deletions notarization-rs/src/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,10 @@
use serde::{Deserialize, Serialize};

pub mod builder;
pub mod destroy;
pub mod event;
pub mod metadata;
pub mod move_utils;
pub mod notarization;
pub mod operations;
pub mod state;
pub mod timelock;
pub mod transfer;
pub mod transactions;
pub mod types;

/// Indicates the used Notarization method.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
Expand Down
3 changes: 1 addition & 2 deletions notarization-rs/src/core/operations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ use iota_interaction::{OptionalSync, ident_str};
use product_common::core_client::CoreClientReadOnly;

use super::move_utils;
use crate::core::state::State;
use crate::core::timelock::TimeLock;
use super::types::{State, TimeLock};
use crate::error::Error;

/// Internal implementation of notarization operations.
Expand Down
Loading