///
import type { NextFunction, Request, Response } from "express";
import Express from "express";
import type { Dirs, Hooks, Pagination } from "./types";
export type { Express, NextFunction, Request, RequestHandler, Response } from "express";
export declare const express: typeof Express;
export declare const app: import("express-serve-static-core").Express;
export declare const router: import("express-serve-static-core").Router;
export declare class Soope {
private params;
private hooks;
private dirs;
private middlewares;
private middlewareQueue;
/**
* Performance timer
*/
private startTime;
private root;
/**
* Creates an instance of Soope.
* ``` ts
* const soope = new Soope(__dirname)
* ```
* @param {string} root
* @memberof Soope
*/
constructor(root: string);
/**
*
*
* @param {keyof Dirs} name
* @param {string} path
* @memberof Soope
*/
setDir(name: keyof Dirs, path: string): void;
/**
*
*
* @param {Dirs} dirs
* @memberof Soope
*/
setDirs(dirs: Dirs): void;
/**
*
*
* @return {*}
* @memberof Soope
*/
getDirs(): Dirs;
/**
* Get dir
*/
getDir(name: keyof Dirs): string;
/**
*
*
* @param {CallableFunction} callable
* @memberof Soope
*/
beforeStart(callable: CallableFunction): void;
/**
*
*
* @param {CallableFunction} callable
* @memberof Soope
*/
afterStart(callable: CallableFunction): void;
/**
* Get hook
*/
getHook(name: keyof Hooks): CallableFunction | undefined;
/**
* Set hook
*/
private setHook;
/**
* Set param
*/
setParam(name: string, value: string | number | boolean): void;
/**
* Get param
*/
getParam(name: string): any;
/**
* Set object of params
*/
setParams(params: NodeJS.ProcessEnv | Record): void;
/**
* Get params
*/
getParams(): Map;
/**
* Set port from args
*/
private setArgPort;
/**
* Load envs to params
*/
private loadEnv;
/**
* Start application
*/
start(params?: Record): Promise;
/**
* Procedure after start
*/
private startProcedure;
/**
* Request handler
*/
private requestHandler;
/**
* Default ErrorHandler
*/
private errorHandler;
/**
* Method for setting new/custom Error Handler
*/
setErrorHandler(handler: (err: Error, req: Request, res: Response, next?: NextFunction) => Response): void;
/**
* Init of Error Handler
*/
private initErrorHandler;
/**
* Path builder for Router
*/
private buildPath;
private isDecoratedHandler;
private initRoute;
private usedPaths;
private defaultHomepage;
private classess;
getRoutes(): string[];
getMiddlewares(): string[];
private autoImport;
private cruds;
private initRoutes;
/**
* Import of Middlewares
*/
private importMiddlewares;
/**
* Init all Middleware in queue
*/
initMiddlewares(): void;
/**
* Add Middleware to queue
*/
useMiddleware(name: string): void;
}
export default Soope;
declare global {
namespace Express {
interface Request {
getPagination: (this: Request, { page, perPage, orderBy }: Pagination) => void;
accessControl: string;
}
interface Response {
sendPagination: (this: Response, { count, maxPage, currentPage }: {
count: number;
maxPage: number;
currentPage: number;
}) => void;
}
}
}