import express, { NextFunction, Request, Response } from 'express';
import { AutoDocumentador } from '../auto-documentacao/auto-documentador';
import { RoteadorInterface } from '../../interfaces/roteador-interface';
/**
 * O roteador é a classe que monta todas as rotas em que a aplicação irá trabalhar.
 * Instrumenta o Express para trabalhar interpretando Delégua.
 */
export declare class Roteador implements RoteadorInterface {
    aplicacao: express.Express;
    autoDocumentador: AutoDocumentador;
    porta: number;
    mapaRotas: {
        [metodo: string]: (caminho: string, execucao: (req: Request, res: Response) => void) => void;
    };
    morgan: boolean;
    helmet: boolean;
    expressJson: boolean;
    cookieParser: boolean;
    bodyParser: boolean;
    cors: boolean;
    passport: boolean;
    constructor(autoDocumentador: AutoDocumentador);
    configurarArquivosEstaticos(diretorio?: string): void;
    iniciarMiddlewares(): void;
    ativarDesativarCors(valor: boolean): void;
    ativarDesativarPassport(valor: boolean): void;
    ativarDesativarCookieParser(valor: boolean): void;
    ativarDesativarExpressJson(valor: boolean): void;
    ativarDesativarBodyParser(valor: boolean): void;
    ativarDesativarHelmet(valor: boolean): void;
    ativarDesativarMorgan(valor: boolean): void;
    rotaGet(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaPost(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaPut(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaPatch(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaDelete(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaOptions(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaCopy(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaHead(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaLock(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaUnlock(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaPurge(caminho: string, execucao: (req: Request, res: Response) => void): void;
    rotaPropfind(caminho: string, execucao: (req: Request, res: Response) => void): void;
    adicionarRotaToken(): void;
    validarToken(req: Request, res: Response, next: NextFunction): void;
    iniciar(): void;
}
