import type { ClassType, ReceiveType, Type } from '../reflection';
export interface OpenApiResponseOptions {
    status: number;
    description?: string;
}
export interface OpenApiResponseMetadata extends OpenApiResponseOptions {
    type: Type;
}
type OpenApiDecorator = ClassDecorator & MethodDecorator;
declare class OpenApiDecorators {
    /** Excludes a controller or route from generated OpenAPI documents. */
    static ignore(): OpenApiDecorator;
    /** Documents a typed response without changing the route's runtime response behavior. */
    static response<T>(options: OpenApiResponseOptions, type?: ReceiveType<T>): OpenApiDecorator;
    /** Documents one typed error response for each supplied HTTP status. */
    static errors<T>(statuses: number | readonly number[], type?: ReceiveType<T>): OpenApiDecorator;
}
/** OpenAPI-only controller and route decorators. */
export declare const openapi: typeof OpenApiDecorators;
export declare function isOpenApiIgnored(controllerClass: ClassType, propertyKey: string | symbol): boolean;
/**
 * Returns controller responses followed by method responses. A method declaration
 * deliberately replaces a controller response with the same status.
 */
export declare function getOpenApiResponses(controllerClass: ClassType, propertyKey: string | symbol): OpenApiResponseMetadata[];
export {};
//# sourceMappingURL=decorators.d.ts.map