import { IRouterCallBack , IMiddlewareProvider , Express , Request , Response , NextFunction } from '../types' ; export interface IDino { registerController < T > ( controller ) : void ; registerApplicationError < T > ( type ) : void ; disableRouteNotFoundException ( ) : void ; enableUserIdentity ( ) : void ; requestStart < T > ( middleware ) : void ; requestEnd < T > ( middleware ) : void ; serverError < T > ( middleware ) : void ; applicationStart < T > ( middleware ) : void ; dependencyResolver < T > ( injector , cb ) : void ; bind ( ) : void ; useRouter ( cb ) : void ; } export interface IAppContainer { controllers : Function [ ] ; baseUri : string ; startMiddleware : Function [ ] ; endMiddleware : Function [ ] ; appStartMiddleware : Function [ ] ; diContainer : any ; diResolveCallback : any ; errorController : Function ; errorMiddleware : Function [ ] ; routeNotFoundMiddleware : Function ; raiseModelError : boolean ; enableTaskContext : boolean ; useRouter : IRouterCallBack ; build ( ) : void ; } export interface IDIContainer { resolve < T > ( type ) : T ; } export interface IDinoContainer { builtInRequestEndMiddleware ( middleware ) : void ; builtInErrorMiddleware ( middleware ) : void ; builtInRequestStartMiddleware ( middleware ) : void ; routeNotFoundMiddleware ( middleware ) : void ; appStartMiddleware ( middleware ) : void ; requestStartMiddleware ( middleware ) : void ; requestEndMiddleware ( middleware ) : void ; registerErrorMiddleware ( middleware ) : void ; registerErrorController ( type ) : void ; registerController ( type ) : void ; } export interface IRouteTable { add ( route , httpVerb ) : void ; getRoutes ( ) : string [ ] ; } export interface IDinoController { patch ( req , res , next ) : void ; invoke ( actionName , httpVerb , requestUrl ) : void ; invokeAsync ( actionName , httpVerb , requestUrl ) : Promise < void > ; } export interface IDinoErrorController { patch ( err , req , res , next ) : void ; invoke ( actionName ) : void ; } export interface IDinoRouter { registerMiddlewares ( middlewares ) : void ; registerBeginActionFilters ( actionFilters ) : void ; registerAfterActionFilters ( actionFilters ) : void ; registerResultFilters ( resultFilters ) : void ; registerExceptionFilters ( app , uri , filters ) : void ; }