import { ReactiveValue } from '../reactive/reactive'; import { MaybeReactive } from '../reactive/types'; import { PrimitiveType } from '../utils/primitive'; import { VComponent } from '../component/component'; import { MaybeArray } from '../utils/array'; import { IDocument, IWindow } from './window'; import { TinafApp } from './app'; export type RenderFn = () => SimpleComponent | HTMLElement | null | PrimitiveType; export type SimpleComponent = { renderFn: RenderFn; __type: 'component'; sources?: ReactiveValue[]; }; export type ForLoopComponent = { __type: 'for-loop'; items: MaybeReactive; componentFn: (item: T) => SimpleComponent; }; export type Component = SimpleComponent | ForLoopComponent; export declare function isHtmlOrComment(node: Component | HTMLElement | Comment): node is HTMLElement | Comment; export declare function isComponent(node: Component | HTMLElement | Comment | MaybeReactive): node is Component; export declare function isSimpleComponent(node: Component | MaybeReactive): node is SimpleComponent; export declare function isForLoopComponent(node: Component | HTMLElement | Comment | MaybeReactive): node is ForLoopComponent; export declare function hasSources(sources?: ReactiveValue[]): sources is ReactiveValue[]; export declare function render(component: VComponent, parent: HTMLElement): MaybeArray; /** * @deprecated Use createApp instead * @param id * @param component */ export declare function renderApp(id: string, component: VComponent): void; declare global { interface Window { __TINAF__: TinafApp; } } export declare function createApp(app: (params: {}) => VComponent, _window?: IWindow, _doc?: IDocument): TinafApp; export declare const buildDomDocument: () => IDocument; export declare const buildDomWindow: () => IWindow;