import { IMiddleware } from './interfaces';
export declare class MiddlewareChain<MID extends IMiddleware<T>, T> {
    middlewares: MID[];
    alwaysLast: Array<MID>;
    alwaysFirst: Array<MID>;
    getAll(): MID[];
    push(middleware: MID): void;
    pushAndKeepLast(middleware: MID, force?: boolean): void;
    unshift(middleware: MID): void;
    unshiftAndKeepFirst(middleware: MID, force?: boolean): void;
    remove(middleware: MID): void;
    getCenterMiddlewares(): MID[];
    rebuildMiddlewaresFromCenter(center: MID[]): void;
    execute(item: T): Promise<T | void>;
}
