import { Optional } from '@ephox/katamari';
import { SugarElement } from '@ephox/sugar';
import { GuiSystem } from '../api/system/Gui';
export interface DebuggerLogger {
    logEventCut: (eventName: string, target: SugarElement<Node>, purpose: string) => void;
    logEventStopped: (eventName: string, target: SugarElement<Node>, purpose: string) => void;
    logNoParent: (eventName: string, target: SugarElement<Node>, purpose: string) => void;
    logEventNoHandlers: (eventName: string, target: SugarElement<Node>) => void;
    logEventResponse: (eventName: string, target: SugarElement<Node>, purpose: string) => void;
    write: () => void;
}
export interface InspectorInfo {
    '(original.spec)': any;
    '(dom.ref)': Node;
    '(element)': string;
    '(initComponents)': InspectorInfo[];
    '(components)': InspectorInfo[];
    '(bound.events)': string;
    '(behaviours)': string | Record<string, any>;
}
type LookupInfo = {
    [key: string]: InspectorInfo;
} | {
    error: string;
};
export interface Inspector {
    systems: Record<string, GuiSystem>;
    lookup: (uid: string) => Optional<LookupInfo>;
    events: {
        setToNormal: (eventName: string) => void;
        setToLogging: (eventName: string) => void;
        setToStop: (eventName: string) => void;
    };
}
export type EventProcessor = (logger: DebuggerLogger) => boolean;
declare const getTrace: () => string;
declare const logHandler: (_label: string, _handlerName: string, _trace: any) => void;
declare const monitorEvent: (eventName: string, initialTarget: SugarElement<Node>, f: EventProcessor) => boolean;
declare const registerInspector: (name: string, gui: GuiSystem) => void;
declare const noLogger: () => {
    logEventCut: (...args: any[]) => void;
    logEventStopped: (...args: any[]) => void;
    logNoParent: (...args: any[]) => void;
    logEventNoHandlers: (...args: any[]) => void;
    logEventResponse: (...args: any[]) => void;
    write: (...args: any[]) => void;
};
declare const isDebugging: () => any;
export { logHandler, noLogger, getTrace, monitorEvent, isDebugging, registerInspector };
//# sourceMappingURL=Debugging.d.ts.map