#[cfg(test)]
use rustdv_vpi_stubs as _;
pub mod clock;
pub mod combinators;
pub mod executor;
pub mod handle;
pub mod log;
pub mod path;
pub mod phase;
pub mod queue;
pub mod rng;
pub mod sync;
pub mod testing;
pub mod time;
pub mod triggers;
pub use clock::Clock;
pub use combinators::{first2, join2, join_all, with_timeout, Either, TimeoutError};
pub use executor::{spawn, spawn_named, Executor, TaskError, TaskHandle, TaskId, TaskState};
pub use path::RustdvPath;
pub use handle::{AnyHandle, HierarchyHandle, LogicHandle};
pub use phase::{read_only, read_write, next_time_step};
pub use queue::Queue;
pub use rng::Rng;
pub use sync::{Event, Lock, LockGuard};
pub use time::{sim_time_ns, sim_time_steps, SimDuration};
pub use triggers::{NullTrigger, Timer};
pub use rustdv_gpi::{HandleError, Logic, LogicArray, ValueError};
pub fn init() -> Executor {
phase::init_hub();
executor::init()
}