import { METADATA_TYPE } from '../Constants';
import { IParseOptions } from './IParseOptions';
import { IUnserializeOptions } from '../serializer/IUnserializeOptions';
export interface IJsonSchemaUnserializeOptions extends IParseOptions, IUnserializeOptions {
    /**
     * Version of json schema
     */
    version?: 'draft-7' | string;
    /**
     * Key specific method for options extraction from json schema to entity or property options
     */
    collector?: {
        type: METADATA_TYPE;
        key?: string;
        fn: (key: string, data: any, options: IParseOptions) => any;
    }[];
    /**
     * If set then a new class ref will be created even if an with same name already exists.
     */
    forceClassRefCreation?: boolean;
    /**
     * If set then a new entity ref will be created even if an with same name already exists.
     */
    forceEntityRefCreation?: boolean;
    /**
     * If set then a new property ref for class ref will be created even if an with same name already exists.
     */
    forcePropertyRefCreation?: boolean;
    /**
     * Is root object an entity.
     */
    rootAsEntity?: boolean;
    /**
     * Prepend class name on object which is a property.
     */
    prependClass?: boolean;
    /**
     * Current working directory
     */
    cwd?: string;
    /**
     *  Ignore namespaces marked by $namespace in json schema data
     */
    skipNamespace?: boolean;
}
