import { RequestHandler } from 'express';
import { Request, Response } from 'express';
import { z, ZodError } from 'zod';
export type RequestSchemas<TParams, TQuery, TBody, TResponse> = {
    params?: z.ZodType<TParams>;
    query?: z.ZodType<TQuery>;
    body?: z.ZodType<TBody>;
    response?: z.ZodType<TResponse>;
};
export type ErrorListItem = {
    type: 'Params' | 'Body' | 'Query' | 'Response';
    errors: ZodError;
};
export type RequestCallback<TParams, TQuery, TBody, TResponse> = (data: {
    params: TParams;
    query: TQuery;
    body: TBody;
}, req: Request, res: Response) => Promise<TResponse> | TResponse;
export declare const promiseController: <TParams = unknown, TQuery = unknown, TBody = unknown, TResponse = unknown>(schemas: RequestSchemas<TParams, TQuery, TBody, TResponse>, cb: RequestCallback<TParams, TQuery, TBody, TResponse>, successStatusCode?: number) => RequestHandler;
