import { Constructor } from '../di/lang'; import { Injector } from '../di/di'; import { RequestHandler } from 'express'; export declare enum Methods { ALL = 0, GET = 1, POST = 2, PUT = 3, DELETE = 4, PATCH = 5, HEAD = 6, OPTION = 7, } export interface IPluginHandler { route: string; methods: Methods[]; handler: RequestHandler; } export interface IPlugin { handlers: IPluginHandler[]; ready(): Thenable; } export declare const RupertRouting: string; export interface IRoute { (route: string, properties: { methods: Methods[]; }): MethodDecorator; prefix: (prefix: string) => ClassDecorator; POST: (route: string) => MethodDecorator; GET: (route: string) => MethodDecorator; PUT: (route: string) => MethodDecorator; HEAD: (route: string) => MethodDecorator; } export declare let Route: IRoute; export declare class RupertPlugin implements IPlugin { handlers: IPluginHandler[]; constructor(); ready(): Thenable; } export declare type Pluginable = (Constructor | IPlugin); export declare var PluginList: Pluginable[]; export declare function NormalizePluginlist(list: Pluginable[], injector: Injector): IPlugin[];