import type { HttpMiddleware } from "@egomobile/http-server"; import type { ClassDecorator5 } from "../types/internal.js"; /** * Returns a decorator, that stores global middlewares * for all handlers of a controller class. * * @example * ``` * import assert from "assert"; * import { Controller, GET, Use } from "@egomobile/http-controllers"; * * const middleware1 = async (request: any, response: any, next: any) => { * request.foo = "1"; * * next(); * }; * * const middleware2 = async (request: any, response: any, next: any) => { * request.foo += "2"; * * next(); * }; * * @Controller() * @Use(middleware1) // available in all endpoints * export default class MyController { * @GET('/bar') * public async getSomething(request: any, response: any) { * assert.strictEqual(request.foo, "1"); * } * * @GET('/bazz', [middleware2]) // only available in this endpoint * public async getSomethingElse(request: any, response: any) { * assert.strictEqual(request.foo, "12"); * } * } * ``` * * @param {HttpMiddleware[]} [middlewares] One or more middleware to setup. * * @returns {ClassDecorator5} The new decorator. */ export declare function Use(...middlewares: HttpMiddleware[]): ClassDecorator5;