import { Object3D } from "three"; interface Disposable { dispose: () => void; } declare type EmptyFn = () => void; declare type NodeJSLikeEmitter = { on: (...args: any[]) => void; off: (...args: any[]) => void; }; declare type SupportedJanitorTypes = Object3D | Disposable | EmptyFn | HTMLElement | Iterable; export declare enum JanitorLogLevel { None = 0, Info = 1, Verbose = 2, Debug = 3 } export declare class Janitor { #private; static logLevel: JanitorLogLevel; logger: Console; track: (trackable: SupportedJanitorTypes, label?: string) => void; add: (trackable: SupportedJanitorTypes, label?: string) => void; constructor(label?: string | null | undefined | boolean, keepTrackablesAfterDispose?: boolean); addEventListener(element: { addEventListener: Function; removeEventListener: Function; }, event: string, label: string | null, callback: Function, options?: AddEventListenerOptions): this; on(nodeEventListener: NodeJSLikeEmitter, event: string, callback: (...args: any[]) => void, label?: string | null): void; mop(obj: T, label?: string | null): T; dispose(...objects: SupportedJanitorTypes[]): void; static trash(_label: string | SupportedJanitorTypes, ...objects: SupportedJanitorTypes[]): Janitor; } export {};