/// import * as express from 'express'; import { Verb, Rel, Template, Href, Hal } from './constants'; import { Api } from './api'; export declare function provides(rel?: Rel, options?: provides.Options.Namespace & provides.Options.Rel): ClassDecorator & MethodDecorator; export declare namespace provides { namespace Options { interface Rel extends hal.Metadata { discoverable?: boolean; description?: string | ((ns: string, rel: string, req: express.Request) => string); } interface Namespace { href?: Href; auto?: boolean; template?: string; fallback?: (ns: string, rel: string, req: express.Request) => Template; } } } export declare function hal(...args: (Rel | hal.Options)[]): MethodDecorator; export declare namespace hal { interface Options { self?: boolean; } interface Metadata { params?: any; array?: boolean; id?: string; title?: string; } interface Overrides extends Metadata { rel?: Rel; href?: Href; server?: Object; links?: Rel[]; } interface Response { link(rel: Rel, overrides?: Overrides): void; embed(rel: Rel, value: Object, overrides?: Overrides): Response; docs(name: string, href: Href): void; } const discovery: express.RequestHandler & ((req: express.Request) => Hal.Resource); } export declare function route(target: Object): express.Application; export declare function route(verb: Verb, path: Href): MethodDecorator; export declare function middleware(handler: express.RequestHandler | express.ErrorRequestHandler, options?: middleware.Options): ClassDecorator & MethodDecorator; export declare namespace middleware { interface Options { error?: boolean; } } export declare function filter(filter: filter.Filter): MethodDecorator; export declare namespace filter { type Filter = (req: express.Request) => boolean; } export declare function api(server: Object): Api.Class; export declare function api(server: Object, method: string | symbol): Api.Method;