import { List, Uri, Scope, UseCase, Req } from '@thisisagile/easy';
import { Resource } from './Resource';
import { RequestHandler } from 'express';
import { Verb } from '../http/Verb';
export declare const route: (uri: Uri) => ClassDecorator;
export type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;
export type RouteRequires = {
    token: boolean;
    labCoat: boolean;
    scope?: Scope;
    uc?: UseCase;
};
export type Route = {
    verb: Verb;
    endpoint: Endpoint;
    requires: RouteRequires;
    middleware: RequestHandler[];
};
export type Routes = {
    route: Uri;
    middleware: RequestHandler[];
    endpoints: List<Route>;
};
export declare const routes: (resource: Resource) => Routes;
