import type { IRequest } from '../http/Request';
import type { IResponse } from '../http/Response';
/**
 * Middleware Stack
 * Manages middleware execution pipeline
 */
export type Middleware = (req: IRequest, res: IResponse, next: () => Promise<void>) => Promise<void>;
export interface IMiddlewareStack {
    register(name: string, handler: Middleware): void;
    execute(request: IRequest, response: IResponse, only?: string[] | Middleware[]): Promise<void>;
    getMiddlewares(): Array<{
        name: string;
        handler: Middleware;
    }>;
}
/**
 * Middleware Stack
 * Refactored to Functional Object pattern
 */
export declare const MiddlewareStack: Readonly<{
    /**
     * Create a new middleware stack instance
     */
    create(): IMiddlewareStack;
}>;
export default MiddlewareStack;
//# sourceMappingURL=MiddlewareStack.d.ts.map