export type CleanupType = 'listener' | 'observer' | 'interval' | 'timeout' | 'custom';
export interface CleanupEntry {
    type: CleanupType;
    cleanup: () => void;
    target?: EventTarget;
    eventName?: string;
    description?: string;
}
export interface CleanupStats {
    elementsTracked: number;
    listeners: number;
    observers: number;
    intervals: number;
    timeouts: number;
    custom: number;
    global: number;
}
export declare class CleanupRegistry {
    private elementCleanups;
    private elementCount;
    private typeCounts;
    private globalCleanups;
    private debugMode;
    constructor(options?: {
        debug?: boolean;
    });
    registerListener(element: Element, target: EventTarget, eventName: string, handler: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
    registerObserver(element: Element, observer: MutationObserver): void;
    registerInterval(element: Element, intervalId: ReturnType<typeof setInterval>): void;
    registerTimeout(element: Element, timeoutId: ReturnType<typeof setTimeout>): void;
    registerCustom(element: Element, cleanup: () => void, description?: string): void;
    registerGlobal(cleanup: () => void, type?: CleanupType, description?: string): void;
    private addCleanup;
    cleanupElement(element: Element): number;
    cleanupElementTree(element: Element): number;
    cleanupGlobal(): number;
    cleanupAll(): number;
    hasCleanups(element: Element): boolean;
    getCleanupCount(element: Element): number;
    getStats(): CleanupStats;
    setDebugMode(enabled: boolean): void;
}
export declare function createAutoCleanupRegistry(options?: {
    debug?: boolean;
    root?: Element;
}): CleanupRegistry;
//# sourceMappingURL=cleanup-registry.d.ts.map