import { AttributeContextParameters, CdmAttributeContext, CdmCollection, CdmCorpusContext, CdmDocumentDefinition, CdmObject, CdmObjectDefinition, CdmObjectReference, cdmObjectType, CdmTraitReference, copyOptions, ResolvedAttributeSet, ResolvedAttributeSetBuilder, ResolvedTrait, ResolvedTraitSet, ResolvedTraitSetBuilder, resolveOptions, VisitCallback } from '../internal';
import { CdmJsonType } from '../Persistence/CdmFolder/types';
export declare abstract class CdmObjectBase implements CdmObject {
    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;
    /**
     * @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;
}
