import { Logger } from 'winston';
import z, { ZodType } from 'zod/v4';
import { CelosiaRequest, CelosiaResponse, LoggerBase } from '.';
declare abstract class Controller<T extends Record<string, any> = {}, Request extends CelosiaRequest<any, any, any, any> = CelosiaRequest<any, any, any, any>, Response extends CelosiaResponse<any> = CelosiaResponse<any>> extends LoggerBase {
    protected logger: Logger;
    constructor(loggingSource: string);
    abstract index(data: T, request: Request, response: Response): void;
    /**
     * Request's body validation.
     */
    get body(): ZodType;
    /**
     * Request's query validation.
     */
    get query(): z.ZodObject<{}, z.core.$strip>;
    /**
     * Request's params validation.
     */
    get params(): z.ZodObject<{}, z.core.$strip>;
    /**
     * Request's cookies validation.
     */
    get cookies(): z.ZodObject<{}, z.core.$strip>;
}
export default Controller;
