import type { ICopy, IReset } from "@thi.ng/api";
import { AGen } from "./agen.js";
/**
 * Generator of sine & cosine values of given frequency in the form of
 * `[sin,cos]` tuples. Start phase always zero.
 *
 * @remarks
 * Implementation based on a self-oscillating SVF (state-variable filter)
 * without using any trig functions. Therefore, ~30% faster, but precision only
 * useful for very low (< ~2Hz) frequencies. Due to floating point error
 * accumulation, phase & amplitude drift will occur for higher frequencies.
 *
 * References:
 *
 * - http://www.earlevel.com/main/2003/03/02/the-digital-state-variable-filter/
 *
 * @param freq - normalized freq
 * @param amp - amplitude (default: 1)
 */
export declare class SinCos extends AGen<number[]> implements ICopy<SinCos>, IReset {
    protected _freq: number;
    protected _amp: number;
    protected _f: number;
    protected _s: number;
    protected _c: number;
    constructor(_freq: number, _amp?: number);
    copy(): SinCos;
    reset(): this;
    next(): number[];
    freq(): number;
    setFreq(freq: number): void;
    amp(): number;
    setAmp(amp: number): void;
    protected calcCoeffs(): void;
}
//# sourceMappingURL=sincos.d.ts.map