#![warn(missing_docs)]
#![cfg_attr(docsrs, feature(doc_cfg))]
mod channel;
mod circuit;
mod collectives;
mod engine;
mod pauli_string;
mod pauli_sum;
mod phase;
mod readout;
mod rng;
#[cfg(any(test, feature = "test-utils"))]
#[doc(hidden)]
pub mod test_support;
mod truncation;
pub use channel::{support_mask, Channel, OutputBuffer, PauliRotation, PtmChannel};
pub use circuit::Circuit;
pub use collectives::Collectives;
pub use engine::bucketed::LayerScratch;
#[cfg(feature = "cuda")]
pub use engine::gpu;
#[cfg(feature = "mpi")]
pub use engine::partitioned::mpi;
pub use engine::partitioned::{
numa_nodes, propagate_partitioned, CpuSet, DistributedSum, PartitionConfig, PartitionRowPolicy,
PartitionRuntime, PartitionedSum, Placement, ScatterOptions, ScatterRows, TopologyError,
};
#[cfg(feature = "phase-timing")]
pub use engine::stats::PartitionPhaseStats;
#[cfg(feature = "phase-timing")]
pub use engine::stats::PhaseStats;
pub use engine::trace::{DeviceLayerRecord, PartitionLayerRecord, PartitionTrace};
pub use engine::transport::Transport;
pub use engine::{propagate, propagate_with, Direction, PropagateOptions};
pub use pauli_string::PauliString;
pub use pauli_sum::accumulator::BuildAccumulator;
pub use pauli_sum::{Gf2Hash, PartitionRows, PauliSum, P_MAX_BITS};
pub use phase::Phase;
pub use readout::{PauliAxis, ProductBasis, StabilizerError, StabilizerState};
pub use truncation::{
And, ApproxTopN, BuiltinTruncation, CoefficientThreshold, CollapseSample, Or, TopN,
TruncationPolicy, WeightCutoff,
};