import type { StrictOmit } from 'ts-gems';
import { OpraSchema } from '../../schema/index.js';
import type { ApiDocument } from '../api-document.js';
import { DocumentElement } from '../common/document-element.js';
import { HttpMediaType } from './http-media-type.js';
import type { HttpOperation } from './http-operation.js';
/**
 * @namespace HttpRequestBody
 */
export declare namespace HttpRequestBody {
    interface Metadata extends Partial<StrictOmit<OpraSchema.HttpRequestBody, 'content'>> {
        content: HttpMediaType.Metadata[];
        immediateFetch?: boolean;
        allowPatchOperators?: boolean;
        allowNullOptionals?: boolean;
        keepKeyFields?: boolean;
    }
    interface Options extends Partial<StrictOmit<OpraSchema.HttpRequestBody, 'content'>> {
        immediateFetch?: boolean;
        allowPatchOperators?: boolean;
        allowNullOptionals?: boolean;
        keepKeyFields?: boolean;
    }
}
/**
 * @class HttpRequestBody
 */
export declare class HttpRequestBody extends DocumentElement {
    readonly owner: HttpOperation;
    description?: string;
    content: HttpMediaType[];
    required?: boolean;
    maxContentSize?: number;
    immediateFetch?: boolean;
    partial?: boolean | 'deep';
    allowPatchOperators?: boolean;
    keepKeyFields?: boolean;
    allowNullOptionals?: boolean;
    constructor(owner: HttpOperation);
    toJSON(options?: ApiDocument.ExportOptions): OpraSchema.HttpRequestBody;
}
