import type { OASDocument } from '../rmoas.types';
export interface OASAnalysisFeature {
    locations: string[];
    present: boolean;
}
export interface OASAnalysisGeneral {
    found: number | string[];
    name: string;
}
export interface OASAnalysis {
    general: {
        mediaTypes: OASAnalysisGeneral;
        operationTotal: OASAnalysisGeneral;
        securityTypes: OASAnalysisGeneral;
    };
    openapi: {
        additionalProperties: OASAnalysisFeature;
        callbacks: OASAnalysisFeature;
        circularRefs: OASAnalysisFeature;
        discriminators: OASAnalysisFeature;
        links: OASAnalysisFeature;
        polymorphism: OASAnalysisFeature;
        serverVariables: OASAnalysisFeature;
        style: OASAnalysisFeature;
        webhooks: OASAnalysisFeature;
        xml: OASAnalysisFeature;
    };
    readme: {
        /**
         * RAW_BODY is specific to our Manual API editor and we don't recommend anyone writing their
         * own API definition should use it so this is considered deprecated.
         */
        raw_body?: OASAnalysisFeature;
        'x-default': OASAnalysisFeature;
        'x-readme.code-samples': OASAnalysisFeature;
        'x-readme.explorer-enabled': OASAnalysisFeature;
        'x-readme.headers': OASAnalysisFeature;
        'x-readme.proxy-enabled': OASAnalysisFeature;
        /**
         * This extension is deprecated.
         */
        'x-readme.samples-enabled'?: OASAnalysisFeature;
        'x-readme.samples-languages'?: OASAnalysisFeature;
    };
}
/**
 * Analyze a given OpenAPI or Swagger definition for any OpenAPI, JSON Schema, and ReadMe-specific
 * feature uses it may contain.
 *
 * @todo this might be worth moving into the `oas` package at some point
 */
export default function analyzer(definition: OASDocument): Promise<OASAnalysis>;
