import { OpenAPIV3 } from 'openapi-types';

interface IAsyncRecursiveComponent {
    component: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject | undefined;
    name?: string;
    firstLvl?: boolean;
}
interface IAsyncRecursiveSchema {
    component: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject | undefined;
    name: string;
}
type typeKey = 'REF' | 'MEDIA' | 'ENUM' | 'PREM' | 'ARRAY' | 'MEDIA_TYPE' | 'FORMDATA' | 'COM_PREM' | 'RECORD';
interface IAsyncRecursiveComponentResult {
    data: [string, string?];
    name?: string;
    type: typeKey;
    nullable?: boolean;
    isArray?: boolean;
}
declare function AsyncRecursiveComponent({ component, name, firstLvl, }: IAsyncRecursiveComponent): Promise<IAsyncRecursiveComponentResult | null>;
declare function recursiveSchemaAsyncType(component: OpenAPIV3.SchemaObject, name?: string, firstLvl?: boolean): Promise<IAsyncRecursiveComponentResult | null>;
declare function AsyncRecursiveSchema({ component, name }: IAsyncRecursiveSchema): Promise<string | null>;

export { AsyncRecursiveComponent, AsyncRecursiveSchema, type IAsyncRecursiveComponent, type IAsyncRecursiveComponentResult, type IAsyncRecursiveSchema, recursiveSchemaAsyncType, type typeKey };
