import { IJsonSchema7, IJsonSchema7Definition } from './JsonSchema7';
import { IClassRef } from '../../api/IClassRef';
import { IJsonSchemaUnserializeOptions } from './IJsonSchemaUnserializeOptions';
import { IJsonSchemaUnserializer } from './IJsonSchemaUnserializer';
import { IEntityRef } from '../../api/IEntityRef';
import { ClassRef } from '../ClassRef';
import { IParseOptions } from './IParseOptions';
import { IPropertyOptions } from '../options/IPropertyOptions';
export declare class JsonSchema7Unserializer implements IJsonSchemaUnserializer {
    version: string;
    options: IJsonSchemaUnserializeOptions;
    data: IJsonSchema7;
    classRefs: IClassRef[];
    fetched: {
        [k: string]: IJsonSchema7;
    };
    reference: {
        [k: string]: any;
    };
    issues: {
        msg: string;
        level: 'error' | 'warning' | 'info';
    }[];
    constructor(opts: IJsonSchemaUnserializeOptions);
    uri(): string;
    unserialize(data: any): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]>;
    /**
     * Return namespace if set in passed options or if used in json-schema object.
     * If no match return default namespace
     */
    getNamespace(): string;
    /**
     * Get registry containing elements
     */
    getRegistry(ns?: string): import("../..").ILookupRegistry;
    getIssues(): {
        msg: string;
        level: "error" | "warning" | "info";
    }[];
    /**
     * If collectors are defined use them before default
     *
     *
     * @param type
     * @param key
     * @param data
     * @param options
     * @private
     */
    private collectOptions;
    getClassRef(className: string | Function, namespace?: string): ClassRef;
    parse(data: IJsonSchema7, options?: IParseOptions): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]>;
    parseRef(data: any, options: IParseOptions): Promise<any>;
    getDefinitionsKey(data: any): string;
    followRef($ref: string, data: IJsonSchema7): Promise<any>;
    parseProperties(classRef: IClassRef | IEntityRef, properties: {
        [propertyName: string]: IJsonSchema7Definition;
    }, options?: IParseOptions): Promise<void>;
    parseProperty(classRef: IClassRef | IEntityRef, propertyName: string, data: IJsonSchema7Definition, options?: IParseOptions): Promise<void>;
    hasProperties(datapointer: any): boolean;
    hasPatternProperties(datapointer: any): boolean;
    onTypes(dataPointer: IJsonSchema7, propOptions: IPropertyOptions, options: IParseOptions): Promise<void>;
    onTypeString(dataPointer: any): any;
    parseInherits(classRef: IClassRef, data: IJsonSchema7, key: 'allOf' | 'anyOf'): Promise<void>;
    parseTypeObject(data: IJsonSchema7, options?: IParseOptions): Promise<IEntityRef | IClassRef>;
    collectAndProcess(data: IJsonSchema7, collectingObject: any, skipKeys: string[], collectorOptions: IParseOptions): any;
    getClassNameFromRef(data: string): string;
}
