/**
 * Represents an OpenAPI 3.1 document.
 * @see https://spec.openapis.org/oas/v3.1.0#openapi-object
 */
export type OpenApiDocument = {
    openapi: string;
    info: InfoObject;
    jsonSchemaDialect?: string;
    externalDocs?: ExternalDocumentationObject;
    servers?: ServerObject[];
    tags?: TagObject[];
    security?: SecurityRequirementObject[];
    paths?: Record<string, PathItem>;
    webhooks?: Record<string, PathItem>;
    components?: ComponentsObject;
    [key: `x-${string}`]: unknown;
};
/**
 * Metadata about the API.
 * @see https://spec.openapis.org/oas/v3.1.0#info-object
 */
export type InfoObject = {
    title: string;
    version: string;
    description?: string;
    summary?: string;
    termsOfService?: string;
    contact?: ContactObject;
    license?: LicenseObject;
    [key: `x-${string}`]: unknown;
};
/**
 * Contact information for the API.
 * @see https://spec.openapis.org/oas/v3.1.0#contact-object
 */
export type ContactObject = {
    name?: string;
    url?: string;
    email?: string;
    [key: `x-${string}`]: unknown;
};
/**
 * License information for the API.
 * @see https://spec.openapis.org/oas/v3.1.0#license-object
 */
export type LicenseObject = {
    name: string;
    identifier?: string;
    url?: string;
    [key: `x-${string}`]: unknown;
};
/**
 * A reference to external documentation.
 * @see https://spec.openapis.org/oas/v3.1.0#external-documentation-object
 */
export type ExternalDocumentationObject = {
    url: string;
    description?: string;
    [key: `x-${string}`]: unknown;
};
/**
 * An object representing a server.
 * @see https://spec.openapis.org/oas/v3.1.0#server-object
 */
export type ServerObject = {
    url: string;
    description?: string;
    variables?: Record<string, ServerVariableObject>;
    [key: `x-${string}`]: unknown;
};
/**
 * An object representing a server variable for server URL template substitution.
 * @see https://spec.openapis.org/oas/v3.1.0#server-variable-object
 */
export type ServerVariableObject = {
    default: string;
    description?: string;
    enum?: string[];
    [key: `x-${string}`]: unknown;
};
/**
 * Adds metadata to a single tag used by operations.
 * @see https://spec.openapis.org/oas/v3.1.0#tag-object
 */
export type TagObject = {
    name: string;
    description?: string;
    externalDocs?: ExternalDocumentationObject;
    [key: `x-${string}`]: unknown;
};
/**
 * Lists the required security schemes to execute an operation.
 * Each entry maps a security scheme name to a list of required scopes.
 * @see https://spec.openapis.org/oas/v3.1.0#security-requirement-object
 */
export type SecurityRequirementObject = Record<string, string[]>;
/**
 * Holds a set of reusable objects for the OpenAPI document.
 * @see https://spec.openapis.org/oas/v3.1.0#components-object
 */
export type ComponentsObject = {
    schemas?: Record<string, object | boolean>;
    responses?: Record<string, ResponseObject | ReferenceObject>;
    parameters?: Record<string, ParameterObject | ReferenceObject>;
    examples?: Record<string, ExampleObject | ReferenceObject>;
    requestBodies?: Record<string, RequestBodyObject | ReferenceObject>;
    headers?: Record<string, HeaderObject | ReferenceObject>;
    securitySchemes?: Record<string, SecuritySchemeObject | ReferenceObject>;
    links?: Record<string, LinkObject | ReferenceObject>;
    callbacks?: Record<string, CallbackObject | ReferenceObject>;
    pathItems?: Record<string, PathItem | ReferenceObject>;
    [key: `x-${string}`]: unknown;
};
/**
 * A JSON Reference object pointing to another location in the document or an external resource.
 * @see https://spec.openapis.org/oas/v3.1.0#reference-object
 */
export type ReferenceObject = {
    $ref: string;
    description?: string;
    summary?: string;
};
/**
 * Describes the operations available on a single path.
 * @see https://spec.openapis.org/oas/v3.1.0#path-item-object
 */
export type PathItem = {
    summary?: string;
    description?: string;
    get?: Operation;
    put?: Operation;
    post?: Operation;
    delete?: Operation;
    options?: Operation;
    head?: Operation;
    patch?: Operation;
    trace?: Operation;
    servers?: ServerObject[];
    parameters?: Array<ParameterObject | ReferenceObject>;
    [key: `x-${string}`]: unknown;
};
/**
 * Describes a single API operation on a path.
 * @see https://spec.openapis.org/oas/v3.1.0#operation-object
 */
export type Operation = {
    tags?: string[];
    summary?: string;
    description?: string;
    externalDocs?: ExternalDocumentationObject;
    operationId?: string;
    parameters?: Array<ParameterObject | ReferenceObject>;
    requestBody?: RequestBodyObject | ReferenceObject;
    responses: ResponsesObject;
    callbacks?: Record<string, CallbackObject | ReferenceObject>;
    deprecated?: boolean;
    security?: SecurityRequirementObject[];
    servers?: ServerObject[];
    [key: `x-${string}`]: unknown;
};
/**
 * Describes a single operation parameter (path, query, header, or cookie).
 * @see https://spec.openapis.org/oas/v3.1.0#parameter-object
 */
export type ParameterObject = {
    name: string;
    in: 'query' | 'header' | 'path' | 'cookie';
    description?: string;
    required?: boolean;
    deprecated?: boolean;
    allowEmptyValue?: boolean;
    style?: string;
    explode?: boolean;
    allowReserved?: boolean;
    schema?: object | boolean;
    example?: unknown;
    examples?: Record<string, ExampleObject | ReferenceObject>;
    content?: Record<string, MediaTypeObject>;
    [key: `x-${string}`]: unknown;
};
/**
 * Describes the request body of an operation.
 * @see https://spec.openapis.org/oas/v3.1.0#request-body-object
 */
export type RequestBodyObject = {
    description?: string;
    content: Record<string, MediaTypeObject>;
    required?: boolean;
    [key: `x-${string}`]: unknown;
};
/**
 * Describes the content of a request body or response for a specific media type.
 * @see https://spec.openapis.org/oas/v3.1.0#media-type-object
 */
export type MediaTypeObject = {
    schema?: object | boolean;
    example?: unknown;
    examples?: Record<string, ExampleObject | ReferenceObject>;
    encoding?: Record<string, EncodingObject>;
    [key: `x-${string}`]: unknown;
};
/**
 * Describes the encoding properties for a specific property in a request body.
 * @see https://spec.openapis.org/oas/v3.1.0#encoding-object
 */
export type EncodingObject = {
    contentType?: string;
    headers?: Record<string, HeaderObject | ReferenceObject>;
    style?: string;
    explode?: boolean;
    allowReserved?: boolean;
    [key: `x-${string}`]: unknown;
};
/**
 * A map of HTTP status codes to response objects describing the operation responses.
 * @see https://spec.openapis.org/oas/v3.1.0#responses-object
 */
export type ResponsesObject = Record<string, ResponseObject | ReferenceObject>;
/**
 * Describes a single response from an API operation.
 * @see https://spec.openapis.org/oas/v3.1.0#response-object
 */
export type ResponseObject = {
    description: string;
    headers?: Record<string, HeaderObject | ReferenceObject>;
    content?: Record<string, MediaTypeObject>;
    links?: Record<string, LinkObject | ReferenceObject>;
    [key: `x-${string}`]: unknown;
};
/**
 * Describes a header parameter, equivalent to a ParameterObject without `name` and `in`.
 * @see https://spec.openapis.org/oas/v3.1.0#header-object
 */
export type HeaderObject = Omit<ParameterObject, 'name' | 'in'>;
/**
 * An object holding a reusable example value.
 * @see https://spec.openapis.org/oas/v3.1.0#example-object
 */
export type ExampleObject = {
    summary?: string;
    description?: string;
    value?: unknown;
    externalValue?: string;
    [key: `x-${string}`]: unknown;
};
/**
 * Represents a possible design-time link for a response.
 * @see https://spec.openapis.org/oas/v3.1.0#link-object
 */
export type LinkObject = {
    operationRef?: string;
    operationId?: string;
    parameters?: Record<string, unknown>;
    requestBody?: unknown;
    description?: string;
    server?: ServerObject;
    [key: `x-${string}`]: unknown;
};
/**
 * A map of callback objects keyed by expression.
 * @see https://spec.openapis.org/oas/v3.1.0#callback-object
 */
export type CallbackObject = Record<string, PathItem>;
/**
 * Defines a security scheme for the API (apiKey, http, oauth2, openIdConnect, or mutualTLS).
 * @see https://spec.openapis.org/oas/v3.1.0#security-scheme-object
 */
export type SecuritySchemeObject = {
    type: 'apiKey' | 'http' | 'mutualTLS' | 'oauth2' | 'openIdConnect';
    description?: string;
    name?: string;
    in?: 'query' | 'header' | 'cookie';
    scheme?: string;
    bearerFormat?: string;
    flows?: OAuthFlowsObject;
    openIdConnectUrl?: string;
    [key: `x-${string}`]: unknown;
};
/**
 * Allows configuration of the supported OAuth flows.
 * @see https://spec.openapis.org/oas/v3.1.0#oauth-flows-object
 */
export type OAuthFlowsObject = {
    implicit?: OAuthFlowObject;
    password?: OAuthFlowObject;
    clientCredentials?: OAuthFlowObject;
    authorizationCode?: OAuthFlowObject;
    [key: `x-${string}`]: unknown;
};
/**
 * Configuration details for a specific OAuth flow type.
 * @see https://spec.openapis.org/oas/v3.1.0#oauth-flow-object
 */
export type OAuthFlowObject = {
    authorizationUrl?: string;
    tokenUrl?: string;
    refreshUrl?: string;
    scopes: Record<string, string>;
    [key: `x-${string}`]: unknown;
};
//# sourceMappingURL=openapi-document.d.ts.map