import { EnumValue } from './enum-value';
import { GenType } from './gen-type';
import { OpenAPIObject, SchemaObject } from './openapi-typings';
import { Options } from './options';
import { Property } from './property';
/**
 * Context to generate a model
 */
export declare class Model extends GenType {
    openApi: OpenAPIObject;
    schema: SchemaObject;
    isSimple: boolean;
    isEnum: boolean;
    isObject: boolean;
    simpleType: string;
    enumValues: EnumValue[];
    enumArrayName?: string;
    enumArrayFileName?: string;
    elementType: string;
    properties: Property[];
    additionalPropertiesType: string;
    orphanRequiredProperties: string[];
    constructor(openApi: OpenAPIObject, name: string, schema: SchemaObject, options: Options);
    protected initPathToRoot(): string;
    protected skipImport(name: string): boolean;
    /**
     * Returns the appropriate type name for a referenced model, considering import aliases
     */
    getImportTypeName(referencedModelName: string): string;
    private collectObject;
    private _additionalPropertiesSchema?;
    /**
     * Finalizes additional properties type after all property types are resolved
     */
    private finalizeAdditionalPropertiesType;
    /**
     * Collects property names from allOf where only array of required properties is specified
     */
    private collectOrphanRequiredProperties;
}
