import type ReactiveDependency from "./reactiveDependency.js"; export type { ReactiveDependency }; export type NotFunctionProps = { [key in keyof T]: Exclude extends Function ? never : key; }[keyof T]; export type FunctionProps = { [key in keyof T]: Exclude extends Function ? key : never; }[keyof T]; export type ChildrenType = FixedLengthChildrenType | ReactiveDependency | ReactiveDependency | ReactiveDependency<(string | T)[]>; export type FixedLengthChildrenType = SingleChildType | (string | T | ReactiveDependency | ReactiveDependency)[]; export type SingleChildType = string | T | ReactiveDependency | ReactiveDependency; export type CanBeReactiveMap = { [key in keyof T]: CanBeReactive; }; export type CanBeReactive = T | ReactiveDependency; export type FluxelInternalOptions = FluxelInternalOptionsFromNode; export type FluxelInternalOptionsFromNode = Omit<{ [key in NotFunctionProps]?: CanBeReactive; }, "children" | "style" | "textContent" | "className" | "classList" | "dataset"> & Omit<{ [key in Exclude, keyof Node>]?: key extends `on${string}` ? K[key] | K[key][] : K[key] extends Function ? never : K[key]; }, "toString"> & { children?: C | null | undefined; style?: Partial> | null | undefined; classList?: CanBeReactive> | CanBeReactive[] | null | undefined; dataset?: Record> | null | undefined; }; export type StateParamListenTargetEventType = { [key in keyof T]: CustomEvent<{ oldValue?: Readonly; newValue: Readonly; }>; }; export type StateParam = T & { render: () => void; use: ReactiveDependencyUse; useWithMemo(key: K): [ReactiveDependency, (factory: () => MT, deps: any[], pure?: boolean) => MT]; listenTarget: TypedEventTarget>; }; export type MemoizeFunction = (factory: () => MT, deps: any[], pure?: boolean) => MT; export interface ReactiveDependencyUse { (key: K): ReactiveDependency; (key: K, deriveFn: (v: T[K], memo: MemoizeFunction) => R): ReactiveDependency; (key: K, deriveFn: (v: { [key in K[number]]: T[key]; }, memo: MemoizeFunction) => R): ReactiveDependency; } export type FluxelComponent

= (props?: P) => R; declare const FluxelJSXElementSymbol: unique symbol; export declare class FluxelJSXElement { [FluxelJSXElementSymbol]: true; } export type HydrationMetadata = { getElementByEid(eid: string): HTMLElement; count: number; }; export declare class TypedEventTarget> { addEventListener(type: K, listener: (this: TypedEventTarget, ev: T[K]) => any, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: TypedEventTarget, ev: T[K]) => any, options?: boolean | EventListenerOptions): void; dispatchEvent(event: T[K]): boolean; }