import type { Combine, StrictOmit } from 'ts-gems';
import { OpraSchema } from '../../schema/index.js';
import type { ApiDocument } from '../api-document';
import { HttpMediaType } from './http-media-type.js';
import { HttpOperation } from './http-operation.js';
import type { HttpParameter } from './http-parameter.js';
import { HttpStatusRange } from './http-status-range.js';
/**
 * @namespace HttpOperationResponse
 */
export declare namespace HttpOperationResponse {
    interface Metadata extends Combine<{
        statusCode: number | string | (number | string)[];
        parameters?: HttpParameter.Metadata[];
        partial?: boolean | 'deep';
    }, HttpMediaType.Metadata> {
    }
    interface Options extends HttpMediaType.Options {
        partial?: boolean | 'deep';
    }
    interface InitArguments extends Combine<{
        statusCode: number | string | HttpStatusRange | OpraSchema.HttpStatusRange | (number | string | HttpStatusRange | OpraSchema.HttpStatusRange)[];
    }, HttpMediaType.InitArguments, StrictOmit<Metadata, 'multipartFields'>> {
    }
}
/**
 * @class HttpOperationResponse
 */
export declare class HttpOperationResponse extends HttpMediaType {
    readonly owner: HttpOperation;
    statusCode: HttpStatusRange[];
    parameters: HttpParameter[];
    partial?: boolean | 'deep';
    constructor(owner: HttpOperation, init: HttpOperationResponse.InitArguments);
    findParameter(paramName: string, location?: OpraSchema.HttpParameterLocation): HttpParameter | undefined;
    toJSON(options?: ApiDocument.ExportOptions): OpraSchema.HttpOperationResponse;
}
