import { OnDestroy, OnInit } from '@angular/core';
import { DebugLogEntry } from './types';
import * as i0 from "@angular/core";
export declare class DebugConsoleComponent implements OnInit, OnDestroy {
    /** Gate maestro: `false` (sin provider o `enabled: false`) → todo inerte. */
    readonly enabled: boolean;
    readonly open: import("@angular/core").WritableSignal<boolean>;
    readonly entries: import("@angular/core").WritableSignal<DebugLogEntry[]>;
    /**
     * Buffer plano (NO signal). `console.log` puede invocarse dentro de un
     * `effect()`/`computed()`; escribir el signal `entries` ahí mismo dispara
     * NG0600. Acumulamos en este array y volcamos al signal en un microtask,
     * fuera de todo contexto reactivo.
     */
    private buffer;
    private flushScheduled;
    /** Referencias a los métodos originales para restaurarlos en destroy. */
    private original;
    ngOnInit(): void;
    ngOnDestroy(): void;
    toggle(): void;
    clear(): void;
    copy(): Promise<void>;
    /** Reemplaza los métodos de `console` para espejar cada llamada al buffer. */
    private patchConsole;
    /** Restaura los métodos originales de `console`. */
    private restoreConsole;
    /**
     * Agrega una entrada al buffer plano y programa el volcado al signal.
     * El volcado se difiere a un microtask: `console.log` puede llamarse desde
     * dentro de un `effect()`, y escribir un signal ahí lanzaría NG0600.
     */
    private push;
    /**
     * Vuelca el buffer al signal `entries`, diferido y throttled.
     *
     * `entries.set()` dispara change-detection (el signal se lee en el template).
     * Si algo emite `console.*` en cada CD (p.ej. un binding que loguea), un flush
     * por microtask re-encola CD inmediatamente → loop infinito que congela el
     * navegador. El throttle por tiempo acota el peor caso a ~1 CD/ventana en vez
     * de 1 CD/microtask: el buffer absorbe todos los logs intermedios en una sola
     * escritura. Sigue fuera del contexto reactivo del `console.log` (evita NG0600).
     */
    private scheduleFlush;
    /** Convierte cualquier argumento a una representación legible de una línea. */
    private stringify;
    static ɵfac: i0.ɵɵFactoryDeclaration<DebugConsoleComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DebugConsoleComponent, "val-debug-console", never, {}, {}, never, never, true, never>;
}
