#![doc(html_favicon_url = "https://dev.namada.net/master/favicon.png")]
#![doc(html_logo_url = "https://dev.namada.net/master/rustdoc-logo.png")]
#![deny(rustdoc::broken_intra_doc_links)]
#![deny(rustdoc::private_intra_doc_links)]
#![warn(
missing_docs,
rust_2018_idioms,
clippy::cast_sign_loss,
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_lossless,
clippy::arithmetic_side_effects,
clippy::dbg_macro,
clippy::print_stdout,
clippy::print_stderr
)]
pub use namada_core::address::Address;
pub use namada_core::borsh::{
BorshDeserialize, BorshSerialize, BorshSerializeExt,
};
pub use namada_core::masp::MaspTransaction;
pub use namada_core::storage;
pub use namada_events::{Event, EventToEmit, EventType};
pub use namada_storage::{Result, ResultExt, StorageRead, StorageWrite};
pub trait TxEnv: StorageRead + StorageWrite {
fn read_temp<T: BorshDeserialize>(
&self,
key: &storage::Key,
) -> Result<Option<T>> {
let bytes = self.read_bytes_temp(key)?;
match bytes {
Some(bytes) => {
let val = T::try_from_slice(&bytes).into_storage_result()?;
Ok(Some(val))
}
None => Ok(None),
}
}
fn read_bytes_temp(&self, key: &storage::Key) -> Result<Option<Vec<u8>>>;
fn write_temp<T: BorshSerialize>(
&mut self,
key: &storage::Key,
val: T,
) -> Result<()> {
let bytes = val.serialize_to_vec();
self.write_bytes_temp(key, bytes)
}
fn write_bytes_temp(
&mut self,
key: &storage::Key,
val: impl AsRef<[u8]>,
) -> Result<()>;
fn insert_verifier(&mut self, addr: &Address) -> Result<()>;
fn init_account(
&mut self,
code_hash: impl AsRef<[u8]>,
code_tag: &Option<String>,
entropy_source: &[u8],
) -> Result<Address>;
fn update_validity_predicate(
&mut self,
addr: &Address,
code: impl AsRef<[u8]>,
code_tag: &Option<String>,
) -> Result<()>;
fn emit_event<E: EventToEmit>(&mut self, event: E) -> Result<()>;
fn charge_gas(&mut self, used_gas: u64) -> Result<()>;
fn get_events(&self, event_type: &EventType) -> Result<Vec<Event>>;
fn set_commitment_sentinel(&mut self);
fn update_masp_note_commitment_tree(
transaction: &MaspTransaction,
) -> Result<bool>;
}