import type { ICopy, IReset } from "@thi.ng/api";
import { AGen } from "./agen.js";
/**
 * Numeric version of {@link impulseT}, using given `on` (default: 1) as
 * initial value and zero for the remaining values.
 *
 * @param on -
 */
export declare const impulse: (on?: number) => Impulse<number>;
/**
 * Creates a new impulse gen, producing a single `on` for the first
 * invocation of {@link IGen.next}, then only `off` thereafter.
 *
 * @param on - impulse value
 * @param off -
 */
export declare const impulseT: <T>(on: T, off: T) => Impulse<T>;
/**
 * Boolean version of {@link impulseT}, using given `start` (default:
 * true) as initial value and its inverse for the remaining values.
 *
 * @param start -
 */
export declare const impulseB: (start?: boolean) => Impulse<boolean>;
export declare class Impulse<T> extends AGen<T> implements ICopy<Impulse<T>>, IReset {
    protected _on: T;
    protected _off: T;
    constructor(_on: T, _off: T);
    copy(): Impulse<T>;
    reset(): this;
    next(): T;
}
//# sourceMappingURL=impulse.d.ts.map