import { MiddlewareInterface, PipelineInterface } from "./interfaces"; /** * Shared pipeline code. */ export declare abstract class BasePipeline implements PipelineInterface { /** * Internally stored array of Middleware functions. */ protected readonly _middleware: MiddlewareInterface[]; /** * @constructor * @param middleware */ protected constructor(middleware: MiddlewareInterface[]); /** * Internally stored array of Middleware functions. */ readonly middleware: MiddlewareInterface[]; /** * Pipeline has no middleware flag. */ readonly isEmpty: boolean; /** * Array of Middleware functions stored inside Pipeline. */ toArray(): MiddlewareInterface[]; /** * Pointer interface for creating an empty IntermediatePipeline. */ empty(): PipelineInterface; /** * Create new Pipeline containing Middleware functions of both current Pipeline and the Pipeline passed as an * argument. * @abstract * @param o */ abstract concat(o: PipelineInterface): any; /** * Create a new Pipeline with Middleware provided as an argument appended to the end of the Middleware list. * @abstract * @param middleware */ abstract pipe(middleware: MiddlewareInterface): any; /** * Sequentially call middleware functions stored inside IntermediatePipeline starting with context provided as an * argument. * @abstract * @param ctx */ abstract process(ctx: TReserved): any; }