import { Context } from 'koa'; type Response = object; interface BaseController { transformResponse(data: object, meta: object): object; sanitizeOutput(data: object, ctx: Context): Promise; sanitizeInput(data: object, ctx: Context): Promise; } export interface SingleTypeController extends BaseController { find(ctx: Context): Promise; update(ctx: Context): Promise; delete(ctx: Context): Promise; } export interface CollectionTypeController extends BaseController { find(ctx: Context): Promise; findOne(ctx: Context): Promise; create(ctx: Context): Promise; update(ctx: Context): Promise; delete(ctx: Context): Promise; } export type Controller = SingleTypeController | CollectionTypeController;