import { ObjectEx } from "./object-ex";
import { ObjectPrivateProps } from "./swagger-base-private-props";
import { SwaggerModel } from "./swagger-model";
import { SwaggerEnum } from "./swagger-enum";
import { ISwaggerDocConfig } from "./swagger-doc-config";
declare type PrivateProps = {
    config: ISwaggerDocConfig;
    modelRef: SwaggerModel;
    enumRef: SwaggerEnum;
    type: string;
    arrayItemType: string | undefined;
} & ObjectPrivateProps;
export interface IModelType {
    isArray?: boolean;
    isEnum?: boolean;
    isJsType?: boolean;
    enumValues?: string[];
    type: string;
    arrayItemType?: string;
}
export declare class ModelType extends ObjectEx<PrivateProps> implements IModelType {
    isArray?: boolean;
    isEnum?: boolean;
    isJsType?: boolean;
    enumValues?: string[];
    constructor(config: ISwaggerDocConfig);
    get type(): string;
    set type(val: string);
    get arrayItemType(): string | undefined;
    set arrayItemType(val: string | undefined);
    get modelRef(): SwaggerModel | undefined;
    set modelRef(val: SwaggerModel | undefined);
    get enumRef(): SwaggerEnum | undefined;
    set enumRef(val: SwaggerEnum | undefined);
    get config(): ISwaggerDocConfig;
    toJSON(): (this & {
        enumRef: SwaggerEnum | undefined;
        modelRef: SwaggerModel | undefined;
        type: string;
        arrayItemType: string | undefined;
    }) | (this & {
        enumRef?: undefined;
        modelRef?: undefined;
        type: string;
        arrayItemType: string | undefined;
    });
}
export {};
