export declare type VNodeTag = string | ComponentConstructor | ComponentFunction | null; export interface VNode { dom: IntactDom | null; type: Types; tag: T; childrenType: ChildrenTypes; props?: Readonly> | null; children?: VNodeChildren | null; className?: string | null; key: Key | null; ref: VNodeRef | null; isValidated?: boolean; transition: TransitionHooks | null; position: TransitionPosition | null; newPosition: TransitionPosition | null; hooks: Hooks | null; } export interface VNodeElement extends VNode { } export interface VNodeTextElement extends VNode { dom: Text | Comment | null; } export interface VNodeComponentClass extends VNode> { } export interface VNodeComponentFunction extends VNode { } export interface TransitionHooks { beforeEnter(el: TransitionElement): void; enter(el: TransitionElement): void; leave(el: TransitionElement, remove: () => void): void; show: boolean; } export interface TransitionElement extends HTMLElement { _enterCb?: PendingCallback; _leaveCb?: PendingCallback; _moveCb?: (e?: TransitionEvent) => void; $TC?: Record; $TD?: string; $ID?: number; } export interface TransitionPosition { top: number; left: number; } export declare type PendingCallback = (cancelled?: boolean) => void; export declare type VNodeProps = T extends string ? Props<{ [key in string]: any; }, Element> : T extends null ? Props<{}, Element> : T extends ComponentConstructor ? C extends ComponentClass ? Props : never : T extends ComponentFunction ? Props : never; export declare type VNodeChildren = T extends ComponentConstructor ? C : T extends ComponentFunction ? VNode : T extends null ? string | number : NormalizedChildren; export declare type VNodeRef = T extends ComponentConstructor ? Ref : T extends ComponentFunction ? Ref : Ref; export declare type IntactDom = Element | Text | Comment; export declare const enum Types { Text = 1, CommonElement = 2, ComponentUnknown = 4, ComponentClass = 8, ComponentFunction = 16, HtmlComment = 32, InputElement = 64, SelectElement = 128, TextareaElement = 256, SvgElement = 512, UnescapeText = 1024, Void = 2048, Fragment = 4096, InUse = 8192, Normalized = 16384, PrefixedKey = 32768, Component = 28, ComponentKnown = 24, FormElement = 448, TextElement = 2081, Element = 962, HtmlElement = 3043, InUseOrNormalized = 24576, ClearInUse = -8193 } export declare const enum ChildrenTypes { UnknownChildren = 0, HasInvalidChildren = 1, HasVNodeChildren = 2, HasNonKeyedChildren = 4, HasKeyedChildren = 8, HasTextChildren = 16, MultipleChildren = 12 } export declare type NormalizedChildren = VNode | VNode[] | null | undefined | string | number; export declare type Children = NormalizedChildren | NormalizedChildren[] | boolean | Children[]; export declare type Key = string | number; export interface RefObject { value: T | null; readonly __is_ref: boolean; } export interface NonNullableRefObject extends RefObject { value: T; } export declare type RefFunction = { bivarianceHack(i: T | null): any; }["bivarianceHack"]; export declare type Ref = RefFunction | RefObject; export declare type Block = (this: T, parent: () => Children, ...args: any[]) => Children; export declare type Blocks = Record>; export declare type Props

= { children?: Children; ref?: Ref; key?: Key; className?: string; $blocks?: Blocks; } & P; export interface ComponentConstructor { new (props: T extends ComponentClass ? P : null, $vNode: VNodeComponentClass, $SVG: boolean, $mountedQueue: Function[], $senior: ComponentClass | null): T; displayName?: string; typeDefs?: TypeDefs ? P : {}>; } export interface ComponentClass

{ $props: Props>; $inited: boolean; $SVG: boolean; $vNode: VNodeComponentClass> | null; $lastInput: VNode | null; $mountedQueue: Function[] | null; $senior: ComponentClass | null; $init(props: Props> | null): void; $render(lastVNode: VNodeComponentClass | null, vNode: VNodeComponentClass, parentDom: Element, anchor: IntactDom | null, mountedQueue: Function[]): void; $update(lastVNode: VNodeComponentClass, vNode: VNodeComponentClass, parentDom: Element, anchor: IntactDom | null, mountedQueue: Function[], force: boolean): void; $unmount(vNode: VNodeComponentClass, nextVNode: VNodeComponentClass | null): void; } export interface ComponentFunction

{ (props: Props): Children; displayName?: string; typeDefs?: TypeDefs

; } export declare type Component = ComponentConstructor | ComponentFunction; export interface LinkedEvent { data: T; event: (data: T, event: E) => void; } export declare type IntactEventListener = EventListener | LinkedEvent | null; export interface IntactElement extends Element { [key: string]: any; $EV?: Record; $V?: VNode | null; $M?: string | null; $TV?: any; $FV?: any; $VA?: any; } export declare type Reference = { value: boolean; }; export declare type TypePrimitive = Function | string | number | null | undefined; export declare type TypeObject = { type?: TypePrimitive | readonly TypePrimitive[]; validator?: Function; required?: boolean | Function; }; export declare type TypeDefs = { [key in keyof T]?: TypePrimitive | readonly TypePrimitive[] | TypeObject; }; export declare type Hooks = { beforeInsert: ((vNode: VNode, parent: ComponentClass | null) => void) | null; };