// mod kve;
// mod besselap;
// mod butterap;
// mod polyval;
// mod aberth;
// mod newton;
// mod zpk2sos;
// mod zpk_format;
// mod cheby1ap;
// mod cheby2ap;
// mod hyperbolic;
// mod sosfit;
// mod design;



// pub use kve::{kve};
// // pub use besselap::{besselap};
// pub use polyval::{polyval_scalar, polyval_vec};
// pub use aberth::{aberth, make_f, make_fp};
// pub use newton::{newton, newton_complex};
// // pub use zpk2sos::{zpk2sos};
// // pub use zpk_format::{bilinear_zpk, lp2hp_zpk, lp2lp_zpk};
// // pub use butterap::{butterap};
// // pub use cheby1ap::{cheb1ap};
// // pub use cheby2ap::{cheb2ap};
// // pub use gauss1d::{gaussian_kernel1d, correlate1d};
// pub use sosfit::{sos_filt};
// pub use design::iir_filter;

mod bessel;
mod buterworth;
mod cheby1;
mod cheby2;
mod iir;
mod lib;

pub(crate) use iir::{iir_filter};
pub(crate) use bessel::BesselFilter;
pub(crate) use buterworth::ButterWorthFilter;
pub(crate) use cheby1::ChebyShevType1Filter;
pub(crate) use cheby2::ChebyShevType2Filter;
pub(crate) use lib::sos_filt;

use crate::filters::impls::{FIRFilter, IIRFilter};


pub trait IIRFilterDesign{
    fn design(&self) -> IIRFilter;
}
