#![doc = include_str!("../doc/lib.md")]
#![cfg_attr(doc, deny(warnings))]
#![no_std]
#![allow(clippy::result_large_err)]
#![allow(clippy::large_enum_variant)]
#[cfg(all(feature = "std", target_arch = "riscv32"))]
compile_error!(
"Feature 'std' cannot be enabled when targeting guest contracts"
);
#[cfg(all(not(feature = "std"), not(target_arch = "riscv32")))]
compile_error!("Feature 'std' is required when compiling natively");
extern crate self as thruput_sdk;
#[doc(hidden)]
pub extern crate xdrs as __xdrs;
#[cfg(feature = "std")]
extern crate std;
pub use thruput_contract_spec as contract_spec;
#[doc(hidden)]
pub use thruput_contract_spec as __contract_spec;
pub use thruput_u256 as u256;
pub use thruput_u256::{
I256, Rounding, TryFromIntError, U256, checked_mul_div_u128, mul_div_u128,
};
pub use core::time::Duration;
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(target_arch = "riscv32")]
extern crate thruput_rv32_runtime as _;
#[cfg(target_arch = "riscv32")]
#[doc(hidden)]
pub mod __rv32 {
pub use thruput_rv32_runtime::Entrypoint;
#[unsafe(no_mangle)]
extern "C" fn __thruput_unknown_method() -> ! {
crate::exn::library_throw(crate::exn::LibraryExn::UnknownMethod)
}
}
#[cfg(not(target_arch = "riscv32"))]
#[doc(hidden)]
pub extern crate linkme as __linkme;
#[doc(hidden)]
pub mod internal;
mod cell;
mod diagnostics;
mod local;
mod re_throw;
mod throw;
mod util;
pub mod xdr;
pub mod sys_result;
#[doc(hidden)]
pub mod sys_exn;
pub use sys_exn::bytestring::*;
pub use sys_exn::delete::*;
pub use sys_exn::flags::*;
pub use sys_exn::nnint::*;
pub use sys_exn::rcq::*;
#[doc(hidden)]
pub mod call;
pub use call::{ContractClient, MapExceptions};
pub use call::{CallError, RawCallError};
#[cfg(feature = "remote")]
pub use thruput_contract_util::remote;
pub mod block;
pub mod crypto;
pub mod event;
pub mod exn;
pub mod interface_table;
pub mod signer;
pub mod stats;
pub mod types;
mod auth_claim;
mod collect_auth_handles;
mod contract_op;
mod deploy;
mod hash;
mod hasher;
mod hex;
mod invoke_config;
mod log;
mod receive_auth_handles;
mod rt;
mod serialize;
#[doc(hidden)]
pub mod mintable;
pub use auth_claim::*;
pub use block::*;
pub use cell::*;
pub use collect_auth_handles::*;
pub use contract_op::*;
pub use deploy::*;
pub use event::*;
pub use exn::*;
pub use hash::*;
pub use hasher::*;
pub use hex::*;
pub use invoke_config::*;
pub use log::*;
pub use mintable::{AuthTokenPreimage, Mintable, MintableType};
pub use re_throw::*;
pub use receive_auth_handles::*;
pub use rt::*;
pub use serialize::*;
pub use signer::*;
pub use throw::*;
pub use thruput_xdr::base58;
pub use thruput_xdr::base58::{Base58, base58_encode};
pub use types::*;
pub use util::*;
pub use xdr::{
ReadError, ReadResult, ReadXDR, Reader, WriteError, WriteResult, WriteXDR,
Writer,
};
#[allow(unused_imports)]
pub use diagnostics::*;
#[doc = include_str!("../doc/macro-contract.md")]
pub use thruput_macros::contract;
pub use thruput_macros::ContractTypeSpec;
pub use thruput_macros::Event;
pub use thruput_macros::contract_exception;
pub use thruput_macros::contract_type;
pub use thruput_macros::exn;
pub use thruput_macros::export_interface_spec;
pub use thruput_macros::{
hash_to_array, sha256_array_ident, sha256_ident, sha256_static, static_key,
};
pub use thruput_contract_spec::ContractTypeName;
pub mod storage;
#[macro_export]
macro_rules! storage_domain_uniqueness_test {
() => {
#[cfg(all(test, not(target_arch = "riscv32")))]
#[test]
fn storage_domains_unique_across_linked_crates() {
$crate::storage::assert_unique_storage_domains();
}
};
}
pub use thruput_macros::Deletable;
pub use thruput_macros::Storage;
#[doc = include_str!("../doc/macro-storage.md")]
pub use thruput_macros::storage;
mod mock;
#[cfg(feature = "dev")]
pub use mock::*;