/** @packageDocumentation
 * @module RpcInterface
 */
import { WebAppRpcProtocol } from "./WebAppRpcProtocol";
/** An OpenAPI 3.0 root document object.
 * @internal
 */
export interface OpenAPIDocument {
    openapi: "3.0.0";
    info: OpenAPIInfo;
    paths: OpenAPIPaths;
}
/** An OpenAPI 3.0 info object.
 * @public
 * @deprecated in 3.6 - might be removed in next major version. The RPC system will be significantly refactored (or replaced) in the future.
 */
export interface OpenAPIInfo {
    title: string;
    version: string;
}
/** An OpenAPI 3.0 paths object.
 * @internal
 */
export interface OpenAPIPaths {
    [index: string]: OpenAPIPathItem;
}
/** An OpenAPI 3.0 path item object.
 * @internal
 */
export interface OpenAPIPathItem {
    summary?: string;
    get?: OpenAPIOperation;
    put?: OpenAPIOperation;
    post?: OpenAPIOperation;
    delete?: OpenAPIOperation;
    options?: OpenAPIOperation;
    head?: OpenAPIOperation;
    patch?: OpenAPIOperation;
    trace?: OpenAPIOperation;
    parameters?: OpenAPIParameter[];
}
/** An OpenAPI 3.0 operation object.
 * @internal
 */
export interface OpenAPIOperation {
    summary?: string;
    operationId?: string;
    parameters?: OpenAPIParameter[];
    requestBody?: OpenAPIRequestBody;
    responses: OpenAPIResponses;
}
/** An OpenAPI 3.0 content map.
 * @internal
 */
export interface OpenAPIContentMap {
    [index: string]: OpenAPIMediaType;
}
/** An OpenAPI 3.0 parameter object.
 * @internal
 */
export interface OpenAPIParameter {
    name: string;
    in: "query" | "header" | "path" | "cookie";
    description?: string;
    required?: boolean;
    allowEmptyValue?: boolean;
    style?: "matrix" | "label" | "form" | "simple" | "spaceDelimited" | "pipeDelimited" | "deepObject";
    explode?: boolean;
    allowReserved?: boolean;
    schema?: OpenAPISchema;
    content?: OpenAPIContentMap;
}
/** An OpenAPI 3.0 media type object.
 * @internal
 */
export interface OpenAPIMediaType {
    schema?: OpenAPISchema;
}
/** An OpenAPI 3.0 schema object.
 * @internal
 */
export interface OpenAPISchema {
    type?: "boolean" | "object" | "array" | "number" | "string";
    nullable?: boolean;
    description?: string;
}
/** An OpenAPI 3.0 encoding object.
 * @internal
 */
export interface OpenAPIEncoding {
    contentType?: string;
    style?: string;
    explode?: boolean;
    allowReserved?: boolean;
}
/** An OpenAPI 3.0 parameter object.
 * @internal
 */
export interface OpenAPIRequestBody {
    description?: string;
    content: OpenAPIContentMap;
    required?: boolean;
}
/** An OpenAPI 3.0 responses object.
 * @internal
 */
export interface OpenAPIResponses {
    default?: OpenAPIResponse;
    "200"?: OpenAPIResponse;
    "301"?: OpenAPIResponse;
    "302"?: OpenAPIResponse;
    "400"?: OpenAPIResponse;
    "404"?: OpenAPIResponse;
    "500"?: OpenAPIResponse;
}
/** An OpenAPI 3.0 response object.
 * @internal
 */
export interface OpenAPIResponse {
    description: string;
    content?: {
        [index: string]: OpenAPIMediaType;
    };
}
/** An OpenAPI-compatible description of an RPC protocol.
 * @internal
 */
export declare class RpcOpenAPIDescription {
    /** The protocol for this description. */
    readonly protocol: WebAppRpcProtocol;
    /** The OpenAPI paths object for the protocol. */
    get paths(): OpenAPIPaths;
    /** An OpenAPI 3.0 (Swagger) description of the RESTful API that is exposed through the protocol. */
    get document(): OpenAPIDocument;
    /** Creates an OpenAPI description of an RPC protocol. */
    constructor(protocol: WebAppRpcProtocol);
    /** Converts to JSON. */
    toJSON(): OpenAPIDocument;
    private generateDescription;
}
//# sourceMappingURL=OpenAPI.d.ts.map