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