/// <reference path="leaf.ts"/>
interface DynamicValueConfig {
    type: "raw" | "value"
    //{{content:value}}
    content: string
    value?: string
    //{{!content:value}} then true
    reverse?: boolean

}
interface DynamicStringConfig {
    templates: DynamicValueConfig[]
}
interface DynamicPropertyConfig extends DynamicStringConfig {
    name: string
}

type DOMEventInfo = {
    name: string
    bubble: boolean
    target?: string[]
}
type ElementConfigProperties = {
    [index: string]: DynamicPropertyConfig | string
}
type DynamicProperties = {
    [index: string]: DynamicPropertyConfig
}
type WidgetEventHandler = { (e: Event): void }
type WidgetTemplate = string | HTMLElement | { (): string | HTMLElement }
interface WidgetEnhancedEvent extends Event {
    capture?: { (): void }
    bubblingTarget: HTMLElement
}
type Slot = { name: string, el: Element | Text }
