#![allow(private_bounds)]
#[cfg(feature = "extension")]
pub use crate::bridge::BridgeTensor;
pub use crate::bridge::{Bool, Float, Int, Kind, TensorKind};
pub trait Basic: crate::ops::BasicOps {}
impl<K: crate::ops::BasicOps> Basic for K {}
pub trait Numeric: Basic + crate::ops::Numeric {}
impl<K: Basic + crate::ops::Numeric> Numeric for K {}
pub trait Ordered: Numeric + crate::ops::Ordered {}
impl<K: Numeric + crate::ops::Ordered> Ordered for K {}
pub trait FloatMath: Numeric + crate::ops::FloatMathOps {}
impl<K: Numeric + crate::ops::FloatMathOps> FloatMath for K {}
pub trait Transaction: Basic + crate::ops::TransactionOp {}
impl<K: Basic + crate::ops::TransactionOp> Transaction for K {}
pub trait Autodiff: Basic + crate::ops::BasicAutodiffOps {}
impl<K: crate::ops::BasicAutodiffOps> Autodiff for K {}