import type { Request as ExpressRequest, Response as ExpressResponse } from 'express';
import type { Request, Response, RouteMethod } from '../typings';
import { Route } from './route';
import z from 'zod';
import { Server } from './server';
export declare class API
{
private req;
private res;
route: Route | undefined;
authentication: TAuth;
server: Server;
services: TServices;
constructor(_req: ExpressRequest, res: ExpressResponse, route: Route | undefined, server: Server);
authorize(): Promise;
validateSchema(): Promise<{
params: z.core.$ZodFormattedError | undefined;
body: z.core.$ZodFormattedError | undefined;
query: z.core.$ZodFormattedError | undefined;
files: z.core.$ZodFormattedError | undefined;
}>;
send(data?: any, options?: {
error?: boolean;
status?: number;
code?: string;
message?: string;
}): never;
sendTyped(data: TResponse, options?: {
error?: boolean;
status?: number;
code?: string;
message?: string;
}): never;
status(code: number): void;
throw(status: number, options?: {
data?: any;
}): never;
get method(): RouteMethod;
get body(): TBody;
get params(): TParams;
get query(): TQuery;
get files(): TFiles;
get headers(): import("http").IncomingHttpHeaders;
get ip(): string;
get rawPath(): any;
header(key: string, value: string): void;
private makeResponseBody;
get _req(): Request;
get _res(): Response;
}
//# sourceMappingURL=api.d.ts.map