pub mod atomic_io;
pub mod blob;
pub mod env;
pub mod handshake;
pub mod hash;
pub mod mime;
pub mod path;
pub mod slice;
pub use atomic_io::{atomic_write_bytes, atomic_write_text, unique_tmp_path};
pub use blob::{
drain_blob, drain_blob_sync, BlobChunkRequest, BlobErrorReason, BlobTransferError,
DrainBlobOptions, DEFAULT_CHUNK_SIZE, DEFAULT_MAX_RETRIES,
};
pub use env::{env_truthy, env_truthy_in, env_truthy_or, is_truthy};
pub use handshake::{
apply_polling_first_guard, build_handshake_url, build_protocol_version_error,
enforce_polling_first, extract_4008_payload, A2C_VERSION_QUERY_KEY,
DEFAULT_HANDSHAKE_TRANSPORTS,
};
pub use hash::{sha256_hex, to_hex};
pub use mime::{guess_mime, is_text_mime, FALLBACK_MIME};
pub use path::{is_within, normalize_lexical, resolve_xdg_first};
pub use slice::{plan_slice, SlicePlan};