import Method from 'parsegraph-method';
import Viewport from './Viewport';
import Direction, { NodePalette } from 'parsegraph-direction';
import WindowNode from './WindowNode';
import Font from './Font';
export declare function chainTab(a: EventNode, b: EventNode, swappedOut?: EventNode[]): void;
export declare function chainAllTabs(...args: EventNode[]): void;
export declare function arrayRemove(list: any[], key: any): boolean;
export declare function arrayRemoveAll(list: any[], key: any): number;
export declare class CustomEvents {
    _listeners: Method[];
    constructor();
    emit(...args: any): void;
    listen(func: Function, funcThisArg?: object): Method;
    stopListening(method: Method): boolean;
}
export declare class ExtendedNode {
    ignoresMouse: boolean;
    events: CustomEvents;
    keyListener: Function;
    keyListenerThisArg: object;
    clickListener: Function;
    clickListenerThisArg: object;
    changeListener: Function;
    changeListenerThisArg: object;
    prevTabNode: EventNode;
    nextTabNode: EventNode;
    value: any;
    constructor();
    getEvents(): CustomEvents;
}
export default abstract class EventNode extends WindowNode {
    _extended: ExtendedNode;
    _selected: boolean;
    _label: any;
    type(): any;
    abstract palette(): NodePalette<EventNode>;
    constructor(fromNode?: EventNode, parentDirection?: Direction);
    label(): string;
    setLabel(text: string, font?: Font): void;
    events(): CustomEvents;
    toString(): string;
    ensureExtended(): ExtendedNode;
    setClickListener(listener: Function, thisArg?: object): void;
    setChangeListener(listener: Function, thisArg?: object): void;
    isClickable(): boolean;
    setIgnoreMouse(value: boolean): void;
    ignoresMouse(): boolean;
    hasClickListener(): boolean;
    hasChangeListener(): boolean;
    valueChanged(...args: any): any;
    click(viewport: Viewport): any;
    setKeyListener(listener: Function, thisArg?: object): void;
    hasKeyListener(): boolean;
    key(keyName: string, viewport?: Viewport): any;
    value(): any;
    setValue(newValue: any, report?: boolean): void;
    isSelectedAt(direction: Direction): boolean;
    isSelected(): boolean;
    setSelected(selected: boolean): void;
    acceptsSelection(): boolean;
}
//# sourceMappingURL=EventNode.d.ts.map