import { IPropertyRef } from './IPropertyRef';
import { IBuildOptions } from './IBuildOptions';
import { IBaseRef } from './IBaseRef';
import { ILookupRegistry } from './ILookupRegistry';
import { IEntityRef } from './IEntityRef';
export declare function isClassRef(x: any): x is IClassRef;
export interface IClassRef extends IBaseRef {
    isPlaceholder(): boolean;
    isAnonymous(): boolean;
    getClass(create?: boolean): Function;
    getPropertyRef(name: string): IPropertyRef;
    getPropertyRefs(): IPropertyRef[];
    getEntityRef(): IEntityRef;
    hasEntityRef(): boolean;
    create<T>(addinfo?: boolean): T;
    build<T>(instance: any, options?: IBuildOptions): T;
    getNamespace(): string;
    switchNamespace(namespace: string): void;
    getRegistry(): ILookupRegistry;
    getExtend(): IClassRef;
    getExtends(): IClassRef[];
    addExtend(ref: IClassRef): IClassRef;
    isOf(instance: any): boolean;
}
