pub struct AuditTrailBuilder {
pub admin: Option<IotaAddress>,
pub initial_record: Option<InitialRecord>,
pub locking_config: LockingConfig,
pub trail_metadata: Option<ImmutableMetadata>,
pub updatable_metadata: Option<String>,
pub record_tags: HashSet<String>,
}Expand description
Builder for creating an audit trail.
The builder collects the full create-time configuration before it is normalized into the Move create
call. Any tag list configured here becomes the trail-owned registry that later role-tag and record-tag
checks refer to.
Creation has three additional on-chain effects worth noting:
- The trail object is published as a shared object.
- A reserved
Adminrole is seeded with the permissions returned byPermissionSet::admin_permissions, and an initial-admin capability is minted and transferred to the configured admin address. - When
Self::with_initial_recordis set, that record is stored as sequence number0. Its tag (if any) must already appear in the configured record tags; otherwise the on-chain create call aborts withERecordTagNotDefined. - An
AuditTrailCreatedevent is emitted.
Fields§
§admin: Option<IotaAddress>Initial admin address that should receive the initial admin capability.
initial_record: Option<InitialRecord>Optional initial record created together with the trail.
locking_config: LockingConfigLocking rules to apply at creation time.
trail_metadata: Option<ImmutableMetadata>Immutable metadata stored once at creation time.
updatable_metadata: Option<String>Mutable metadata stored on the trail object.
Canonical list of record tags owned by the trail.
Implementations§
Source§impl AuditTrailBuilder
impl AuditTrailBuilder
Sourcepub fn with_initial_record(self, initial_record: InitialRecord) -> Self
pub fn with_initial_record(self, initial_record: InitialRecord) -> Self
Sets the full initial record input used during trail creation.
When present, the initial record is created as sequence number 0.
Sourcepub fn with_initial_record_parts(
self,
data: impl Into<Data>,
metadata: Option<String>,
tag: Option<String>,
) -> Self
pub fn with_initial_record_parts( self, data: impl Into<Data>, metadata: Option<String>, tag: Option<String>, ) -> Self
Convenience helper for constructing the initial record inline.
Sourcepub fn with_locking_config(self, config: LockingConfig) -> Self
pub fn with_locking_config(self, config: LockingConfig) -> Self
Sets the locking configuration for the trail.
This replaces the entire create-time locking configuration.
Sourcepub fn with_trail_metadata(self, metadata: ImmutableMetadata) -> Self
pub fn with_trail_metadata(self, metadata: ImmutableMetadata) -> Self
Sets immutable metadata for the trail.
Immutable metadata is stored once during creation and cannot be updated later.
Sourcepub fn with_trail_metadata_parts(
self,
name: impl Into<String>,
description: Option<String>,
) -> Self
pub fn with_trail_metadata_parts( self, name: impl Into<String>, description: Option<String>, ) -> Self
Sets immutable metadata by parts.
Sourcepub fn with_updatable_metadata(self, metadata: impl Into<String>) -> Self
pub fn with_updatable_metadata(self, metadata: impl Into<String>) -> Self
Sets updatable metadata for the trail.
This seeds the mutable metadata field that later update_metadata calls can replace or clear.
Sets the canonical list of tags that may be used on records in this trail.
The list is deduplicated into the trail-owned tag registry during creation.
Sourcepub fn with_admin(self, admin: IotaAddress) -> Self
pub fn with_admin(self, admin: IotaAddress) -> Self
Sets the admin address that receives the initial-admin capability.
Sourcepub fn finish(self) -> Result<TransactionBuilder<CreateTrail>, Error>
pub fn finish(self) -> Result<TransactionBuilder<CreateTrail>, Error>
Finalizes the builder and creates the trail-creation transaction builder.
Validates the configured LockingConfig before returning the transaction. Currently this rejects:
LockingWindow::CountBasedwithcount == 0(mirrors the MoveECountWindowMustBePositiveabort).TimeLock::UntilDestroyedused asdelete_trail_lock(mirrors the MoveEUntilDestroyedNotSupportedForDeleteTrailabort).write_lockmay still beUntilDestroyed.
§Errors
Returns Error::InvalidArgument when the locking configuration is invalid.
Trait Implementations§
Source§impl Clone for AuditTrailBuilder
impl Clone for AuditTrailBuilder
Source§fn clone(&self) -> AuditTrailBuilder
fn clone(&self) -> AuditTrailBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AuditTrailBuilder
impl Debug for AuditTrailBuilder
Source§impl Default for AuditTrailBuilder
impl Default for AuditTrailBuilder
Source§fn default() -> AuditTrailBuilder
fn default() -> AuditTrailBuilder
Auto Trait Implementations§
impl Freeze for AuditTrailBuilder
impl RefUnwindSafe for AuditTrailBuilder
impl Send for AuditTrailBuilder
impl Sync for AuditTrailBuilder
impl Unpin for AuditTrailBuilder
impl UnsafeUnpin for AuditTrailBuilder
impl UnwindSafe for AuditTrailBuilder
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a Request§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.