import { Request, Response, NextFunction, Router } from 'express';
import BaseController from './BaseController';
import { Mappings } from '../types/BaseRouterTypes';
export default class BaseRouter<T extends BaseController> {
    grantPublicAccess: boolean;
    controller: T;
    /**
     *
     * @param {Controller} controller
     */
    constructor(controller: T);
    /**
     * @description GET route
     * @param {Request} req
     * @param {Response} res
     * @param {NextFunction} next
     */
    get(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * @description GET ARCHIVES route
     * @param {Request} req
     * @param {Response} res
     * @param {NextFunction} next
     */
    archives(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * @description POST route
     * @param {Request} req
     * @param {Response} res
     * @param {NextFunction} next
     */
    post(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * @description GET route (/:id)
     * @param {HttpRequest} req
     * @param {HttpResponse} res
     * @param {*} next
     */
    getId(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * @description PUT route (/:id)
     * @param {HttpRequest} req
     * @param {HttpResponse} res
     * @param {*} next
     */
    update(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     *
     * @param req
     * @param res
     * @param next
     */
    delete(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     *
     * @param req
     * @param res
     * @param next
     */
    restore(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * /count route
     * @param req
     * @param res
     * @param next
     */
    count(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * /stats get count by group
     * @param req
     * @param res
     * @param next
     */
    stats(req: Request, res: Response, next: NextFunction): Promise<void>;
    /**
     * @description default mappings that will be inherited across all router class
     * @returns {Array} mappings
     */
    getMapping: () => Mappings[];
    /**
     * @description additional mappings placeholder, designed to be overriden
     * @returns {Array} mappings
     */
    getAdditionalMapping: () => Mappings[];
    /**
     * @description create the express router
     * @returns {Router} router
     */
    getRoutes(): Router;
}
//# sourceMappingURL=BaseRouter.d.ts.map