import { HTMLBrand } from './interface'; export interface _Literal { (str: TemplateStringsArray, ...args: any[]): Tag; } export declare type Literal = _Literal & Tag; export interface ComponentTag { componentTag: Comp; } export declare type Else = T & { else: T; }; export declare type WithElse = { [K in keyof Parent]: Else; }; export interface WithParent { parent: Parent; } export declare type Close = { [K in End]: () => Parent; } & WithParent; export interface ComponentSlotAux { parent: ComponentTag<{ $slots: T; }>; } export interface VDom { class(nameHash: { [k: string]: boolean; }): Common; class(...names: string[]): Common; on(handlerHash: { [k: string]: Function; }): Common; props(nameHash: { [k: string]: any; }): Common; style(nameHash: { [k: string]: any; }): Common; attrs(nameHash: { [k: string]: any; }): Common; asSlot(this: ComponentSlotAux, name: keyof S): Common; ref(name: string): Common; key(k: any): Common; directives(d: any): Common; } export declare type Common = VDom & T; export declare type If = { if(condition: boolean): Enhanced; } & Original; export declare type ForTag = HTMLBrand & T; export interface For

{ (this: T, list: A[], func: (h: P, t: A, i: number) => HTMLBrand): T; } export declare type Basic = string | number | boolean; export interface Interpolate { (str: TemplateStringsArray, ...args: any[]): T; (...strings: Basic[]): T; }