import type { StrictOmit, Type, TypeThunkAsync } from 'ts-gems'; import { HttpMediaType } from '../http/http-media-type.js'; import { HttpMultipartField } from '../http/http-multipart-field.js'; import type { HttpOperation } from '../http/http-operation.js'; import type { HttpOperationResponse } from '../http/http-operation-response.js'; import type { HttpParameter } from '../http/http-parameter.js'; export interface HttpOperationDecorator { (target: Object, propertyKey: string): void; Cookie(name: string | RegExp, optionsOrType?: StrictOmit | string | Type): this; Header(name: string | RegExp, optionsOrType?: StrictOmit | string | TypeThunkAsync): this; QueryParam(name: string | RegExp, optionsOrType?: StrictOmit | string | TypeThunkAsync): this; PathParam(name: string | RegExp, optionsOrType?: StrictOmit | string | TypeThunkAsync): this; RequestContent(type: string | Type): this; RequestContent(options: HttpMediaType.Options): this; MultipartContent(options?: HttpMediaType.Options, subInit?: (content: MultipartContentScope) => void): this; Response(status: number | string | (number | string)[], options?: HttpOperationResponse.Options): this; UseType(...type: Type[]): this; } export interface MultipartContentScope { Field(fieldName: string | RegExp, options?: StrictOmit): MultipartContentScope; File(fieldName: string | RegExp, options?: StrictOmit): MultipartContentScope; } export interface HttpOperationDecoratorFactory { /** * Property decorator * @param decoratorChain * @param options */ (decoratorChain: Function[], options?: T): HttpOperationDecorator; } export declare function HttpOperationDecoratorFactory(decoratorChain: Function[], options?: HttpOperation.Options & Pick): HttpOperationDecorator;