import type { FnN2 , IDeref , NumericArray } from "@thi.ng/api" ; export type StatelessOscillator = ( phase : number , freq : number , amp ? : number , dc ? : number , ... opts : any [ ] ) => number ; export type ComplexArray = [ NumericArray , NumericArray ] ; export type WindowFn = FnN2 ; export interface IGen < T > extends Iterable < T > , IDeref < T > { next ( ) : T ; take ( num , out ? , idx ? ) : T [ ] ; } export interface IProc < A , B > extends IDeref < B > { next ( src ) : B ; } export interface IProc2 < A , B , C > extends IDeref < C > { next ( srcA , srcB ) : C ; } export interface FilterConfig { zeroes : number [ ] ; poles : number [ ] ; } export interface FilterResponse { freq : number ; mag : number ; phase : number ; } export interface IFilter { /**
     * Returns this filter's zero & pole position(s). The result object
     * can then be passed to  filterResponse .
      filterCoeffs ( ) : FilterConfig ; } export type FilterType = "lp" | "hp" | "bp" | "notch" | "peak" | "loshelf" | "hishelf" | "all" ; export type BiquadType = "lp" | "hp" | "bp" | "notch" | "peak" | "loshelf" | "hishelf" ; export type OnepoleType = "lp" | "hp" ; export type SVFType = "lp" | "hp" | "bp" | "notch" | "peak" | "all" ;