import { ApplicableAnnotation } from './controller'; /** * @see {@link Result} */ export interface ResultCtor { ensure(arg: Result | T): Result; new (argsOrResult: ApplicableAnnotation[] | any, result?: T): Result; (argsOrResult: ApplicableAnnotation[] | any, result?: T): Result; } /** * To return metadata and a result from a controller * @example * ``` * * @Controller() * export class ExampleController { * * @Get('/') * index() { * return Result([ * new Header('ETag', '"foobar"'), * new Json() * ], { foo: 'bar' }); * } * } * * // equivalent to * * @Controller() * export class ExampleController { * * @Get('/') * @Header('ETag', '"foobar"') * @Json() * index() { * return { foo: 'bar' }; * } * } * ``` */ export interface Result { readonly args: ApplicableAnnotation[]; readonly result: T; } export declare const Result: ResultCtor;