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