import type { JSX } from "./jsx"; import { untracked } from "kr-observable"; export interface Context { id: symbol; Provider: (props: any) => any; defaultValue: unknown; } export declare class Component { isClassComponent?: boolean; props: T; constructor(props: T); render(props: T): any; } export declare function root(fn: (dispose: () => void) => T): T; export declare function cleanup(fn: () => void): void; export declare function effect(fn: (prev?: T) => T, current?: T): void; export declare function memo(fn: () => T, equal?: boolean): () => unknown; export declare function createSelector(source: () => T, fn?: (a: U, b: T) => boolean): (key: U) => boolean; declare type PropsWithChildren

= P & { children?: JSX.Element; }; export declare type FunctionComponent

= (props: PropsWithChildren

) => JSX.Element; declare type ComponentConstructor

= FunctionComponent

| (new (props: PropsWithChildren

) => JSX.Element); export declare type ComponentProps> = T extends ComponentConstructor ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : {}; export declare function createComponent(Comp: Component & FunctionComponent, props: T): JSX.Element; export declare function lazy(fn: () => Promise<{ default: T; }>): (props: object) => () => any; export { untracked as untrack }; export declare function splitProps(props: T, ...keys: [K1[]]): [Pick, Omit]; export declare function splitProps(props: T, ...keys: [K1[], K2[]]): [Pick, Pick, Omit]; export declare function splitProps(props: T, ...keys: [K1[], K2[], K3[]]): [Pick, Pick, Pick, Omit]; export declare function splitProps(props: T, ...keys: [K1[], K2[], K3[], K4[]]): [Pick, Pick, Pick, Pick, Omit]; export declare function splitProps(props: T, ...keys: [K1[], K2[], K3[], K4[], K5[]]): [ Pick, Pick, Pick, Pick, Pick, Omit ]; export declare function createContext(defaultValue?: unknown): Context; export declare function useContext(context: Context): any; export declare function map(list: (Array) | (() => Array), mapFn: (v: T, i: number) => U | any): () => any;