import type { APIContext, MiddlewareHandler } from '../../@types/astro.js'; /** * Utility function that is in charge of calling the middleware. * * It accepts a `R` generic, which usually is the `Response` returned. * It is a generic because endpoints can return a different payload. * * When calling a middleware, we provide a `next` function, this function might or * might not be called. * * A middleware, to behave correctly, can: * - return a `Response`; * - call `next`; * * Failing doing so will result an error. A middleware can call `next` and do not return a * response. A middleware can not call `next` and return a new `Response` from scratch (maybe with a redirect). * * ```js * const onRequest = async (context, next) => { * const response = await next(context); * return response; * } * ``` * * ```js * const onRequest = async (context, next) => { * context.locals = "foo"; * next(); * } * ``` * * @param onRequest The function called which accepts a `context` and a `resolve` function * @param apiContext The API context * @param responseFunction A callback function that should return a promise with the response */ export declare function callMiddleware(onRequest: MiddlewareHandler, apiContext: APIContext, responseFunction: () => Promise): Promise;