import type { IProc } from "./api.js";
import { AProc } from "./aproc.js";
/**
* Composes the given {@link IProc}s into a single new processor instance. The
* returned `IProc` processes the given procs in serial (sequence), i.e. output
* from 1st proc is used as input for 2nd etc.
*
* @remarks
* Provides optimized (loop free) versions for 2-4 inputs
*
* @param a -
* @param b -
*/
export declare function serial(a: IProc, b: IProc): IProc;
export declare function serial(a: IProc, b: IProc, c: IProc): IProc;
export declare function serial(a: IProc, b: IProc, c: IProc, d: IProc): IProc;
export declare function serial(a: IProc, b: IProc, c: IProc, d: IProc, ...procs: IProc[]): IProc;
export declare class Serial2 extends AProc {
protected _a: IProc;
protected _b: IProc;
constructor(_a: IProc, _b: IProc);
next(x: A): C;
}
export declare class Serial3 extends AProc {
protected _a: IProc;
protected _b: IProc;
protected _c: IProc;
constructor(_a: IProc, _b: IProc, _c: IProc);
next(x: A): D;
}
export declare class Serial4 extends AProc {
protected _a: IProc;
protected _b: IProc;
protected _c: IProc;
protected _d: IProc;
constructor(_a: IProc, _b: IProc, _c: IProc, _d: IProc);
next(x: A): E;
}
export declare class Serial extends AProc {
protected _procs: IProc[];
constructor(_procs: IProc[]);
next(x: any): any;
}
//# sourceMappingURL=serial.d.ts.map