#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(
test,
allow(
unknown_lints,
clippy::unused_async_trait_impl,
reason = "in-crate mock impls of AFIT traits have no .await"
)
)]
#[cfg(feature = "telemetry")]
use tracing_core as _;
pub const DEFAULT_TOKEN_DECIMALS: u8 = 7;
pub const BASE_FEE_STROOPS: u32 = 100;
pub const DEFAULT_MAX_TRANSACTION_FEE_STROOPS: u32 = 50_000;
pub const DEFAULT_ESTIMATED_LEDGER_SECONDS: u64 = 5;
pub const SIGNATURE_EXPIRATION_LEDGER_TOLERANCE: u32 = 2;
pub const DEFAULT_TIMEOUT_SECONDS: u64 = 60;
pub const HORIZON_LEDGERS_SAMPLE_SIZE: u32 = 20;
pub const NULL_ACCOUNT: &str = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";
pub const TRANSFER_FUNCTION: &str = "transfer";
pub mod chain;
pub mod exact;
mod networks;
#[cfg(any(feature = "client", feature = "facilitator"))]
pub use chain::StellarJsonRpc;
#[cfg(feature = "facilitator")]
pub use chain::{StellarChainProvider, StellarFacilitatorError};
#[cfg(any(feature = "client", feature = "facilitator"))]
pub use chain::{StellarRpc, StellarRpcError, StellarSigner};
pub use exact::StellarExact;
#[cfg(feature = "client")]
pub use exact::client::StellarExactClient;
pub use networks::*;
#[must_use]
pub fn timeout_ledgers(max_timeout_seconds: u64, estimated_ledger_seconds: u64) -> u32 {
let estimated = estimated_ledger_seconds.max(1);
let ledgers = max_timeout_seconds.div_ceil(estimated);
u32::try_from(ledgers).unwrap_or(u32::MAX)
}
#[cfg(any(feature = "client", feature = "facilitator"))]
#[must_use]
pub fn network_id(passphrase: &str) -> [u8; 32] {
use sha2::{Digest, Sha256};
Sha256::digest(passphrase.as_bytes()).into()
}