import Vector2 from "../core/geom/Vector2";
import Signal from "../core/events/signal/Signal";

export interface IViewSignals {
    readonly linked: Signal
    readonly unlinked: Signal
}

export default class View<T extends Element = HTMLElement> {
    size: Vector2
    position: Vector2

    el: T

    readonly on: IViewSignals

    public link(): void

    public unlink(): void

    addChild(v: View): void

    removeChild(v: View): void

    bindSignal(signal: Signal, handler: Function, thisArg?: any): void

    unbindSignal(signal: Signal, handler: Function, thisArg?: any): boolean

    css(hash: Object): void
}
