import { NextApiRequest, NextApiResponse } from 'next'; import { Middleware } from 'src/controller/types'; import { constructor } from 'src/types'; import { Controller } from '../../controller'; import { SupportedRequestMethods } from '../../controller/execution'; import { Facade } from '../../facade'; export declare type RequestType = { body: Record; method: string; cookies: Record; headers: Record; query: Record; } | Record; export declare class RequestBuilder { private request; constructor(); query(json: Record): this; body(json: Record): this; cookie(name: string, value: string): this; headers(name: string, value: string): this; method(method: SupportedRequestMethods): this; build(): T; } export declare type ResponseType = { json: Record; statusCode: number; ended: boolean; headers: Record; status: (status: number) => any; getHeader: (name: string) => any; setHeader: (name: string, value: string) => any; } | Record; export declare class ResponseBuilder extends Facade { private response; constructor(); static as(response: any): ResponseType; json(json: Record): this; setHeader(name: string, value: string): this; getHeader(name: string): string | undefined; status(status: number): this; end(): void; build(): T; } export declare function hasMiddlewareInstalled(controller: Controller, middleware: Middleware): boolean; export declare function willRescueFrom(controller: Controller, error: constructor, handler?: (error: any, request: NextApiRequest, response: NextApiResponse) => Promise): boolean; export declare const get: (controller: typeof Controller, req?: RequestBuilder) => Promise; export declare const post: (controller: typeof Controller, req?: RequestBuilder) => Promise; export declare const put: (controller: typeof Controller, req?: RequestBuilder) => Promise; export declare const del: (controller: typeof Controller, req?: RequestBuilder) => Promise; export declare const options: (controller: typeof Controller, req?: RequestBuilder) => Promise; export declare const patch: (controller: typeof Controller, req?: RequestBuilder) => Promise; export declare const head: (controller: typeof Controller, req?: RequestBuilder) => Promise;