"""Common building blocks for auditory models."""

from torch_amt.common.filterbanks import (audfiltbw,
                                          erb2fc,
                                          fc2erb,
                                          f2erb,
                                          f2erbrate,
                                          erbrate2f,
                                          erbspacebw,
                                          GammatoneFilterbank,
                                          ERBIntegration,
                                          MultiResolutionFFT,
                                          Moore2016Spectrum,
                                          ExcitationPattern,
                                          Moore2016ExcitationPattern,
                                          DRNLFilterbank,
                                          FastDRNLFilterbank,
                                          )
from torch_amt.common.ihc import IHCEnvelope, IHCPaulick2024
from torch_amt.common.adaptation import AdaptLoop
from torch_amt.common.modulation import (ModulationFilterbank, 
                                         FastModulationFilterbank,
                                         King2019ModulationFilterbank,
                                         FastKing2019ModulationFilterbank)
from torch_amt.common.ears import HeadphoneFilter, MiddleEarFilter, OuterMiddleEarFilter
from torch_amt.common.loudness import (BrokenStickCompression, 
                                       PowerCompression, 
                                       SpecificLoudness, 
                                       Moore2016SpecificLoudness,
                                       SpatialSmoothing,
                                       BinauralInhibition,
                                       Moore2016BinauralLoudness,
                                       LoudnessIntegration,
                                       Moore2016AGC,
                                       Moore2016TemporalIntegration
                                       )
from torch_amt.common.filters import (torch_hilbert,
                                      torch_pchip_interp,
                                      ButterworthFilter, 
                                      SOSFilter, 
                                      IIRFilter,
                                      apply_sos_pytorch, 
                                      apply_iir_pytorch,
                                      torch_firwin2,
                                      torch_minimum_phase,
                                      torch_filtfilt, 
                                      )

__all__ = ["audfiltbw",
           "erb2fc",
           "fc2erb",
           "f2erb",
           "f2erbrate",
           "erbrate2f",
           "erbspacebw",
           "GammatoneFilterbank",
           "ERBIntegration",
           "MultiResolutionFFT",
           "Moore2016Spectrum",
           "ExcitationPattern",
           "Moore2016ExcitationPattern",
           "DRNLFilterbank",
           "FastDRNLFilterbank",
           
           "IHCEnvelope",
           "IHCPaulick2024",
           
           "AdaptLoop",
           
           "ModulationFilterbank",
           "FastModulationFilterbank",
           "King2019ModulationFilterbank",
           "FastKing2019ModulationFilterbank",
           
           "HeadphoneFilter",
           "MiddleEarFilter",
           "OuterMiddleEarFilter",
           
           "BrokenStickCompression", 
           "PowerCompression", 
           "SpecificLoudness", 
           "Moore2016SpecificLoudness",
           "SpatialSmoothing",
           "BinauralInhibition",
           "Moore2016BinauralLoudness",
           "LoudnessIntegration",
           "Moore2016AGC",
           "Moore2016TemporalIntegration",
           
           "torch_hilbert",
           "torch_pchip_interp",
           "ButterworthFilter", 
           "SOSFilter", 
           "IIRFilter",
           "apply_sos_pytorch", 
           "apply_iir_pytorch",
           "torch_firwin2",
           "torch_minimum_phase",
           "torch_filtfilt",
           ]
