1#![cfg_attr(doc_cfg, feature(doc_cfg))]
101mod address;
105#[cfg(feature = "serde")]
106#[cfg_attr(doc_cfg, doc(cfg(feature = "serde")))]
107pub mod bcs;
108mod bitmap;
109mod checkpoint;
110mod crypto;
111mod digest;
112mod effects;
113mod events;
114mod execution_status;
115pub mod framework;
116mod gas;
117#[cfg(feature = "hash")]
118#[cfg_attr(doc_cfg, doc(cfg(feature = "hash")))]
119pub mod hash;
120#[cfg(feature = "unstable")]
121#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
122pub mod merkle;
123mod object;
124#[cfg(feature = "unstable")]
125#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
126pub mod proof;
127mod transaction;
128mod type_tag;
129mod u256;
130
131pub use address::Address;
132pub use address::AddressParseError;
133pub use bitmap::Bitmap;
134pub use checkpoint::CheckpointCommitment;
135pub use checkpoint::CheckpointContents;
136pub use checkpoint::CheckpointData;
137pub use checkpoint::CheckpointSequenceNumber;
138pub use checkpoint::CheckpointSummary;
139pub use checkpoint::CheckpointTimestamp;
140pub use checkpoint::CheckpointTransaction;
141pub use checkpoint::CheckpointTransactionInfo;
142pub use checkpoint::EndOfEpochData;
143pub use checkpoint::EpochId;
144pub use checkpoint::ProtocolVersion;
145pub use checkpoint::SignedCheckpointSummary;
146pub use checkpoint::StakeUnit;
147pub use crypto::Bls12381PublicKey;
148pub use crypto::Bls12381Signature;
149pub use crypto::Bn254FieldElement;
150pub use crypto::CircomG1;
151pub use crypto::CircomG2;
152pub use crypto::Ed25519PublicKey;
153pub use crypto::Ed25519Signature;
154pub use crypto::Intent;
155pub use crypto::IntentAppId;
156pub use crypto::IntentScope;
157pub use crypto::IntentVersion;
158pub use crypto::InvalidZkLoginAuthenticatorError;
159pub use crypto::Jwk;
160pub use crypto::JwkId;
161pub use crypto::MultisigAggregatedSignature;
162pub use crypto::MultisigCommittee;
163pub use crypto::MultisigMember;
164pub use crypto::MultisigMemberPublicKey;
165pub use crypto::MultisigMemberSignature;
166pub use crypto::PasskeyAuthenticator;
167pub use crypto::PasskeyPublicKey;
168pub use crypto::Secp256k1PublicKey;
169pub use crypto::Secp256k1Signature;
170pub use crypto::Secp256r1PublicKey;
171pub use crypto::Secp256r1Signature;
172pub use crypto::SignatureScheme;
173pub use crypto::SimpleSignature;
174pub use crypto::UserSignature;
175pub use crypto::ValidatorAggregatedSignature;
176pub use crypto::ValidatorCommittee;
177pub use crypto::ValidatorCommitteeMember;
178pub use crypto::ValidatorSignature;
179pub use crypto::ZkLoginAuthenticator;
180pub use crypto::ZkLoginClaim;
181pub use crypto::ZkLoginInputs;
182pub use crypto::ZkLoginProof;
183pub use crypto::ZkLoginPublicIdentifier;
184pub use digest::Digest;
185pub use digest::DigestParseError;
186pub use digest::SigningDigest;
187pub use effects::AccumulatorOperation;
188pub use effects::AccumulatorValue;
189pub use effects::AccumulatorWrite;
190pub use effects::ChangedObject;
191pub use effects::IdOperation;
192pub use effects::ModifiedAtVersion;
193pub use effects::ObjectChange;
194pub use effects::ObjectIn;
195pub use effects::ObjectOut;
196pub use effects::ObjectReferenceWithOwner;
197pub use effects::TransactionEffects;
198pub use effects::TransactionEffectsV1;
199pub use effects::TransactionEffectsV2;
200pub use effects::UnchangedConsensusKind;
201pub use effects::UnchangedConsensusObject;
202pub use events::BalanceChange;
203pub use events::Event;
204pub use events::TransactionEvents;
205pub use execution_status::CommandArgumentError;
206pub use execution_status::ExecutionError;
207pub use execution_status::ExecutionStatus;
208pub use execution_status::MoveLocation;
209pub use execution_status::PackageUpgradeError;
210pub use execution_status::TypeArgumentError;
211pub use gas::GasCostSummary;
212pub use object::GenesisObject;
213pub use object::MovePackage;
214pub use object::MoveStruct;
215pub use object::Object;
216pub use object::ObjectData;
217pub use object::ObjectReference;
218pub use object::ObjectType;
219pub use object::Owner;
220pub use object::TypeOrigin;
221pub use object::UpgradeInfo;
222pub use object::Version;
223pub use transaction::ActiveJwk;
224pub use transaction::Argument;
225pub use transaction::AuthenticatorStateExpire;
226pub use transaction::AuthenticatorStateUpdate;
227pub use transaction::CanceledTransaction;
228pub use transaction::CanceledTransactionV2;
229pub use transaction::ChangeEpoch;
230pub use transaction::Command;
231pub use transaction::ConsensusCommitPrologue;
232pub use transaction::ConsensusCommitPrologueV2;
233pub use transaction::ConsensusCommitPrologueV3;
234pub use transaction::ConsensusCommitPrologueV4;
235pub use transaction::ConsensusDeterminedVersionAssignments;
236pub use transaction::EndOfEpochTransactionKind;
237pub use transaction::ExecutionTimeObservationKey;
238pub use transaction::ExecutionTimeObservations;
239pub use transaction::FundsWithdrawal;
240pub use transaction::GasPayment;
241pub use transaction::GenesisTransaction;
242pub use transaction::Input;
243pub use transaction::MakeMoveVector;
244pub use transaction::MergeCoins;
245pub use transaction::MoveCall;
246pub use transaction::Mutability;
247pub use transaction::ProgrammableTransaction;
248pub use transaction::Publish;
249pub use transaction::RandomnessStateUpdate;
250pub use transaction::SharedInput;
251pub use transaction::SignedTransaction;
252pub use transaction::SplitCoins;
253pub use transaction::SystemPackage;
254pub use transaction::Transaction;
255pub use transaction::TransactionExpiration;
256pub use transaction::TransactionKind;
257pub use transaction::TransferObjects;
258pub use transaction::Upgrade;
259pub use transaction::ValidatorExecutionTimeObservation;
260pub use transaction::VersionAssignment;
261pub use transaction::VersionAssignmentV2;
262pub use transaction::WithdrawFrom;
263pub use type_tag::Identifier;
264pub use type_tag::StructTag;
265pub use type_tag::TypeParseError;
266pub use type_tag::TypeTag;
267pub use u256::U256;
268pub use u256::U256ParseError;
269
270#[cfg(feature = "serde")]
271#[cfg_attr(doc_cfg, doc(cfg(feature = "serde")))]
272pub(crate) use transaction::SignedTransactionWithIntentMessage;
273
274#[cfg(test)]
275mod serialization_proptests;
276
277#[derive(Clone, Debug, PartialEq, Eq)]
278pub struct PersonalMessage<'a>(pub std::borrow::Cow<'a, [u8]>);
279
280#[cfg(feature = "serde")]
281mod _serde {
282 use base64ct::Base64;
283 use base64ct::Encoding;
284 use serde::Deserialize;
285 use serde::Deserializer;
286 use serde::Serialize;
287 use serde::Serializer;
288 use serde_with::DeserializeAs;
289 use serde_with::SerializeAs;
290 use std::borrow::Cow;
291
292 pub(crate) type ReadableBase64Encoded =
293 ::serde_with::As<::serde_with::IfIsHumanReadable<Base64Encoded, ::serde_with::Bytes>>;
294
295 pub(crate) struct Base64Encoded;
296
297 impl<T: AsRef<[u8]>> SerializeAs<T> for Base64Encoded {
298 fn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error>
299 where
300 S: Serializer,
301 {
302 let bytes = source.as_ref();
303 let b64 = Base64::encode_string(bytes);
304 b64.serialize(serializer)
305 }
306 }
307
308 impl<'de, T: TryFrom<Vec<u8>>> DeserializeAs<'de, T> for Base64Encoded {
309 fn deserialize_as<D>(deserializer: D) -> Result<T, D::Error>
310 where
311 D: Deserializer<'de>,
312 {
313 let b64: Cow<'de, str> = Deserialize::deserialize(deserializer)?;
314 let bytes = Base64::decode_vec(&b64).map_err(serde::de::Error::custom)?;
315 let length = bytes.len();
316 T::try_from(bytes).map_err(|_| {
317 serde::de::Error::custom(format_args!(
318 "Can't convert a Byte Vector of length {length} to the output type."
319 ))
320 })
321 }
322 }
323
324 pub(crate) use super::SignedTransactionWithIntentMessage;
325}