import Label from "./Label";
import { BasicWindow } from "parsegraph-window";
import WindowNodePainter from "./WindowNodePainter";
import Color from "parsegraph-color";
import Font from "./Font";
import Size from "parsegraph-size";
import NodeType from "./NodeType";
import { Direction, Axis, NodePalette } from "parsegraph-direction";
import Method from "parsegraph-method";
import WindowNode from "./WindowNode";
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 default class Node<T extends NodeType<T>> extends WindowNode {
    _type: T;
    _scene: any;
    _label: Label;
    _selected: boolean;
    _events: CustomEvents;
    _value: any;
    _style: object;
    constructor(newType: T, fromNode?: Node<T>, parentDirection?: Direction);
    horizontalPadding(): number;
    verticalPadding(): number;
    size(bodySize?: Size): Size;
    getSeparation(axis: Axis, dir: Direction): number;
    borderThickness(): number;
    blockStyle(): any;
    setBlockStyle(style: object): void;
    palette(): NodePalette<Node<T>>;
    newPainter(window: BasicWindow, paintContext: any): WindowNodePainter;
    sizeWithoutPadding(bodySize?: Size): Size;
    supportsDirection(inDirection: Direction): boolean;
    spawnNode(inDirection: Direction, newType: any): Node<T>;
    type(): T;
    setType(newType: T): void;
    typeAt(direction: Direction): T;
    toString(): string;
    backdropColor(): Color;
    isClickable(): boolean;
    scene(): any;
    setScene(scene: any): void;
    label(): string;
    glyphCount(counts: any, pagesPerTexture: number): number;
    realLabel(): Label;
    setLabel(text: string, font?: Font): void;
    acceptsSelection(): boolean;
    events(): CustomEvents;
    isSelectedAt(direction: Direction): boolean;
    isSelected(): boolean;
    setSelected(selected: boolean): void;
    hasChangeListener(): boolean;
    setChangeListener(listener: Function, thisArg?: object): void;
    valueChanged(...args: any): any;
    value(): any;
    setValue(newValue: any, report?: boolean): void;
}
//# sourceMappingURL=Node.d.ts.map