export interface Binding { variable: any; property: string; } export interface ElementBinding { element: T | null; attribute: string; } export interface ElementBindingWithListener extends ElementBinding { event: string; listener: (val: any) => any; } export interface BoundedEventWithListener { element: T; eventName: string; listener: EventListenerOrEventListenerObject; uid: string; } export interface ElementEventListener { element: Element; eventName: string; listener: EventListenerOrEventListenerObject; groupName?: string; }