import { AnyEntity, Dictionary, EntityProperty } from '../typings'; export declare type IdentifiedReference, PK extends keyof T = 'id' & keyof T> = { [K in PK]: T[K]; } & Reference; export declare class Reference> { private entity; constructor(entity: T); static create, PK extends keyof T>(entity: T | IdentifiedReference): IdentifiedReference; /** * Checks whether the argument is instance or `Reference` wrapper. */ static isReference>(data: any): data is Reference; /** * Wraps the entity in a `Reference` wrapper if the property is defined as `wrappedReference`. */ static wrapReference>(entity: T | Reference, prop: EntityProperty): Reference | T; /** * Returns wrapped entity. */ static unwrapReference>(ref: T | Reference): T; load(): Promise; load(prop: K): Promise; set(entity: T | IdentifiedReference): void; unwrap(): T; getEntity(): T; getProperty(prop: K): T[K]; isInitialized(): boolean; populated(populated?: boolean): void; toJSON(...args: any[]): Dictionary; }