import type { OpenAPI, OpenAPIV3_1 } from '@scalar/openapi-types';
import type { ParameterObject } from '@scalar/workspace-store/schemas/v3.1/strict/parameter';
import type { OperationObject } from '@scalar/workspace-store/schemas/v3.1/strict/path-operations';
import type { Dereference } from '@scalar/workspace-store/schemas/v3.1/type-guard';
type PropertyObject = {
    required?: string[];
    properties: {
        [key: string]: {
            type: string;
            description?: string;
        };
    };
};
/**
 * Formats a property object into a string.
 */
export declare function formatProperty(key: string, obj: PropertyObject): string;
/**
 * Extracts the request body from an operation.
 */
export declare function extractRequestBody(operation: Dereference<OperationObject>): string[] | boolean;
/**
 * Returns all models from the specification, no matter if it's OpenAPI 3.x.
 */
export declare function getModels(document?: OpenAPIV3_1.Document): Record<string, OpenAPIV3_1.SchemaObject>;
/**
 * Checks if the OpenAPI document has schemas.
 */
export declare const hasModels: (content?: OpenAPIV3_1.Document) => boolean;
/**
 * Checks if the OpenAPI document has webhooks.
 */
export declare const hasWebhooks: (document?: OpenAPIV3_1.Document) => boolean;
/**
 * Deep merge for objects
 */
export declare function deepMerge(source: Record<any, any>, target: Record<any, any>): Record<any, any>;
/**
 * Creates an empty specification object.
 * The returning object has the same structure as a valid OpenAPI specification, but everything is empty.
 */
export declare function createEmptySpecification(partialSpecification?: Partial<OpenAPI.Document>): OpenAPI.Document;
export type ParameterMap = {
    path: ParameterObject[];
    query: ParameterObject[];
    header: ParameterObject[];
    cookie: ParameterObject[];
    body: ParameterObject[];
    formData: ParameterObject[];
};
/**
 * This function creates a parameter map from an Operation Object, that's easier to consume.
 *
 * TODO: Isn't it easier to just stick to the OpenAPI structure, without transforming it?
 */
export declare function createParameterMap(operation: Dereference<OperationObject>): ParameterMap;
export {};
//# sourceMappingURL=openapi.d.ts.map