import Signal from "../core/events/signal/Signal";
import Vector2 from "../core/geom/Vector2";

export interface IViewSignals {
    readonly linked: Signal
    readonly unlinked: Signal
}

export default class View<T extends Element = HTMLElement> {
    readonly size: Vector2
    readonly 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
}
