import { TemplateResult, SVGTemplateResult, nothing } from 'lit-html'; export declare type RenderResult = TemplateResult | SVGTemplateResult | typeof nothing; export declare type State = {} | ((...ctx: any[]) => {}); export declare type Targets = Node | NodeList | Node[]; export declare type Config = { render: (state: ProxyConstructor, emit: (type: string, detail: object, opts?: object) => void, ...ctx: any[]) => RenderResult; target: HTMLElement; state: State; [key: string]: any; }; export declare type Configs = Config | { target: Targets; }; export declare type Widget = { target: Node; state: ProxyConstructor; model: object; on: (type: string, fn: (e: CustomEvent) => void, opts?: object | boolean) => () => void; ctx: (fn: (...ctx: any[]) => any) => any; effect: (fn: () => void, opts?: object) => () => void; destroy: (cb?: () => void) => void; render: () => void; }; export declare type Widgets = { [key: number]: Widget; target: Targets; on: (type: string, fn: (e: CustomEvent) => void, opts?: object | boolean) => () => void; effect: (fn: (state: ProxyConstructor) => () => void, opts?: object) => () => void; state: (fn: (state: ProxyConstructor) => void) => void; ctx: (fn: (...ctx: any[]) => any) => any; destroy: (cb?: () => void) => void; render: () => void; forEach: (fn: (widget: Widget, index: number, widgets: Widget[]) => void) => void; };