import { Optional } from '@ephox/katamari';
import { SugarElement } from '@ephox/sugar';
import { DebuggerLogger } from '../debugging/Debugging';
import { ElementAndHandler, UidAndHandler } from './EventRegistry';
import { EventFormat } from './SimulatedEvent';
type LookupEvent = (eventName: string, target: SugarElement<Node>) => Optional<ElementAndHandler>;
export interface TriggerAdt {
    fold: <T>(stopped: () => T, resume: (elem: SugarElement<Node & ParentNode>) => T, complete: () => T) => T;
    match: <T>(branches: {
        stopped: () => T;
        resume: (elem: SugarElement<Node & ParentNode>) => T;
        complete: () => T;
    }) => T;
    log: (label: string) => void;
}
declare const triggerHandler: <T extends EventFormat>(lookup: LookupEvent, eventType: string, rawEvent: T, target: SugarElement<Node>, logger: DebuggerLogger) => TriggerAdt;
declare const broadcast: (listeners: UidAndHandler[], rawEvent: EventFormat, _logger?: DebuggerLogger) => boolean;
declare const triggerUntilStopped: (lookup: LookupEvent, eventType: string, rawEvent: EventFormat, logger: DebuggerLogger) => boolean;
declare const triggerOnUntilStopped: (lookup: LookupEvent, eventType: string, rawEvent: EventFormat, rawTarget: SugarElement<Node>, logger: DebuggerLogger) => boolean;
export { triggerHandler, triggerUntilStopped, triggerOnUntilStopped, broadcast };
//# sourceMappingURL=Triggers.d.ts.map