import type { Config } from "./config.js"; export type MiddlewareNext = () => Promise | TResult; export type MiddlewareCall = (...args: [...TArgs, MiddlewareNext]) => Promise | TResult; export type MiddlewareConstructor = new (...args: unknown[]) => { call: MiddlewareCall; config?: Config; setConfig?: (config: Config) => void; }; export declare class MiddlewareChain { private readonly config?; private entries; constructor(config?: Config); add(klass: MiddlewareConstructor, ...args: unknown[]): void; use(klass: MiddlewareConstructor, ...args: unknown[]): void; prepend(klass: MiddlewareConstructor, ...args: unknown[]): void; insertBefore(oldklass: MiddlewareConstructor, newklass: MiddlewareConstructor, ...args: unknown[]): void; insertAfter(oldklass: MiddlewareConstructor, newklass: MiddlewareConstructor, ...args: unknown[]): void; remove(klass: MiddlewareConstructor): void; exists(klass: MiddlewareConstructor): boolean; clear(): void; invoke(...args: [...TArgs, MiddlewareNext]): Promise | TResult; } //# sourceMappingURL=middleware.d.ts.map