import * as spec from '@jsii/spec'; import * as api from './api'; /** * Get the JSII fqn for an object (if available) * * This will return something if the object was constructed from a JSII-enabled * class/constructor, or if a literal object was annotated with type * information. * * @param obj the object for which a jsii FQN is requested. * @param isVisibleType a function that determines if a type is visible. */ export declare function jsiiTypeFqn(obj: any, isVisibleType: (fqn: spec.FQN) => boolean): spec.FQN | undefined; /** * If this object was previously serialized under a given reference, return the same reference * * This is to retain object identity across invocations. */ export declare function objectReference(obj: unknown): api.ObjRef | undefined; /** * Set the JSII FQN for classes produced by a given constructor */ export declare function tagJsiiConstructor(constructor: any, fqn: spec.FQN): void; /** * Table of JSII objects * * There can be multiple references to the same object, each under a different requested * type. */ export declare class ObjectTable { #private; constructor(resolveType: (fqn: spec.FQN) => spec.Type); /** * Register the given object with the given type * * Return the existing registration if available. */ registerObject(obj: unknown, fqn: spec.FQN, interfaces?: spec.FQN[]): api.ObjRef; /** * Find the object and registered type for the given ObjRef */ findObject(objref: api.ObjRef): RegisteredObject; /** * Delete the registration with the given objref */ deleteObject({ [api.TOKEN_REF]: objid }: api.ObjRef): void; get count(): number; } export interface RegisteredObject { instance: any; fqn: spec.FQN; interfaces?: spec.FQN[]; } //# sourceMappingURL=objects.d.ts.map