export type Next = () => Promise; export type MiddlewareFunc = (ctx: any, next: Next) => Promise | void; export type MiddlewareFuncWithParamProperty = MiddlewareFunc & { param?: string }; export type ParamMiddlewareFunc = (param: string, ctx: any, next: Next) => Promise | void; export type MiddlewareFuncWithRouter = MiddlewareFunc & { router: T }; export interface ResourcesController { index?: MiddlewareFunc; new?: MiddlewareFunc; create?: MiddlewareFunc; show?: MiddlewareFunc; edit?: MiddlewareFunc; update?: MiddlewareFunc; destroy?: MiddlewareFunc; }