declare class WeakRef { public constructor(value: T); protected readonly [Symbol.toStringTag]: "WeakRef"; protected ["constructor"]: typeof WeakRef; public deref(): T | undefined; } declare class FinalizationGroup { public constructor(cleanupCallback: (iterator: JSFinalizationGroupCleanupIterator) => void); protected ["constructor"]: typeof FinalizationGroup; protected readonly [Symbol.toStringTag]: "FinalizationGroup"; public register(target: object, holdings: T, unregisterToken?: object): undefined; public unregister(unregisterToken: object): boolean; public cleanupSome(callback?: (iterator: JSFinalizationGroupCleanupIterator) => void): undefined; } declare interface JSFinalizationGroupCleanupIterator extends IterableIterator { [Symbol.toStringTag]: "FinalizationGroup Cleanup Iterator"; }