import { AttributeContextParameters, CdmAttributeContext, CdmCollection, CdmCorpusContext, CdmDocumentDefinition, CdmObject, CdmObjectDefinition, CdmObjectReference, cdmObjectType, CdmTraitReference, copyOptions, ResolvedAttributeSet, ResolvedAttributeSetBuilder, ResolvedTrait, ResolvedTraitSet, ResolvedTraitSetBuilder, resolveOptions, traitProfile, traitProfileCache, VisitCallback } from '../internal';
import { CdmJsonType } from '../Persistence/CdmFolder/types';
export declare abstract class CdmObjectBase implements CdmObject {
    /**
     * The minimum json semantic versions that can be loaded by this ObjectModel version.
     */
    static jsonSchemaSemanticVersionMinimumLoad: string;
    /**
     * The minimum json semantic versions that can be saved by this ObjectModel version.
     */
    static jsonSchemaSemanticVersionMinimumSave: string;
    /**
     * The maximum json semantic versions that can be loaded and saved by this ObjectModel version.
     */
    static jsonSchemaSemanticVersionMaximumSaveLoad: string;
    static jsonSchemaSemanticVersionProjections: string;
    static jsonSchemaSemanticVersionTraitsOnTraits: string;
    inDocument: CdmDocumentDefinition;
    ID: number;
    objectType: cdmObjectType;
    ctx: CdmCorpusContext;
    get atCorpusPath(): string;
    /**
     * @internal
     */
    traitCache: Map<string, ResolvedTraitSetBuilder>;
    /**
     * @internal
     */
    declaredPath: string;
    owner: CdmObject;
    private resolvingTraits;
    constructor(ctx: CdmCorpusContext);
    static get objectType(): cdmObjectType;
    /**
     * @deprecated
     */
    static instanceFromData<T extends CdmObject>(...args: any[]): T;
    /**
     * @internal
     */
    static visitArray(items: CdmCollection<CdmObject>, path: string, preChildren: VisitCallback, postChildren: VisitCallback): boolean;
    /**
     * @internal
     */
    static resolvedTraitToTraitRef(resOpt: resolveOptions, rt: ResolvedTrait): CdmTraitReference;
    abstract isDerivedFrom(baseDef: string, resOpt?: resolveOptions): boolean;
    abstract copy(resOpt?: resolveOptions, host?: CdmObject): CdmObject;
    abstract validate(): boolean;
    abstract getObjectType(): cdmObjectType;
    abstract fetchObjectDefinitionName(): string;
    abstract fetchObjectDefinition<T extends CdmObjectDefinition>(resOpt: resolveOptions): T;
    abstract createSimpleReference(resOpt: resolveOptions): CdmObjectReference;
    /**
     * @internal
     */
    abstract createPortableReference(resOpt: resolveOptions): CdmObjectReference;
    /**
     * @deprecated
     */
    copyData(resOpt: resolveOptions, options?: copyOptions): CdmJsonType;
    fetchTraitProfiles(resOpt?: resolveOptions, cache?: traitProfileCache, forVerb?: string): Array<traitProfile>;
    /**
     * @internal
     */
    constructResolvedTraits(rtsb: ResolvedTraitSetBuilder, resOpt: resolveOptions): void;
    /**
     * @internal
     */
    constructResolvedAttributes(resOpt: resolveOptions, under?: CdmAttributeContext): ResolvedAttributeSetBuilder;
    /**
     * @internal
     */
    fetchResolvedTraits(resOpt: resolveOptions): ResolvedTraitSet;
    /**
     * @internal
     */
    fetchObjectFromCache(resOpt: resolveOptions, acpInContext?: AttributeContextParameters): ResolvedAttributeSetBuilder;
    /**
     * @internal
     */
    fetchResolvedAttributes(resOpt?: resolveOptions, acpInContext?: AttributeContextParameters): ResolvedAttributeSet;
    /**
     * @internal
     */
    clearTraitCache(): void;
    abstract visit(path: string, preChildren: VisitCallback, postChildren: VisitCallback): boolean;
    private static protectParameterValues;
    /**
     * converts a string in the form MM.mm.pp into a single comparable long integer
     * limited to 3 parts where each part is 5 numeric digits or fewer
     * returns -1 if failure
     */
    static semanticVersionStringToNumber(version: string): number;
    /**
     * converts a number encoding 3 version parts into a string in the form MM.mm.pp
     * assumes 5 digits per encoded version part
     */
    static semanticVersionNumberToString(version: number): string;
    static defaultJsonSchemaSemanticVersionNumber: number;
    /**
     * @internal
     */
    getMinimumSemanticVersion(): number;
}
