export type StateSetter = (value: T | ((previous: T) => T)) => void export type Reducer = (state: State, action: Action) => State export type Dispatch = (action: Action) => void export type EffectCleanup = () => void | Promise export type EffectDependency = string | number | boolean | null export const Fragment: unique symbol export function useId(): string export function useState(initialValue: () => T): [T, StateSetter] export function useState(initialValue: T): [T, StateSetter] export function useReducer(reducer: Reducer, initialArg: InitialArg, initializer: (initialArg: InitialArg) => State): [State, Dispatch] export function useReducer(reducer: Reducer, initialValue: State): [State, Dispatch] export function useEffect(effect: () => void | EffectCleanup | Promise, dependencies: readonly EffectDependency[]): void export function useParams = Record>(): Readonly export function useSearchParam(name: string): string | null export function useSearchParamsWriter(): [undefined, undefined] export interface RefObject { current: T | null } export function useRef(initialValue: null): RefObject export function useRef(initialValue: 0): { current: number } export function useSyncExternalStore(subscribe: (callback: () => void) => () => void, getSnapshot: () => T, getServerSnapshot: () => T): T export interface Context { Provider: (props: { value: T; children?: unknown }) => unknown } export function createContext(defaultValue: T): Context export function useContext(context: Context): T declare const React: { Fragment: typeof Fragment } export default React export function behavior(commands: Array<["add" | "set" | "log", unknown, unknown]>): unknown export function nativeBehavior(module: string, handler: string, states: Array<[string, unknown]>, scope: Array<[string, unknown]>): unknown export function binding(value: unknown, module: string, handler: string, states: Array<[string, unknown]>, scope: Array<[string, unknown]>): unknown export function bindingValue(value: unknown): unknown export function conditional(kind: "and" | "ternary", value: unknown, truthy: () => unknown, falsy: () => unknown, module: string, handler: string, states: Array<[string, unknown]>, scope: Array<[string, unknown]>): unknown export function list(items: unknown, keyField: string | null, render: (item: unknown, index: number) => unknown, ownerField?: string, selector?: unknown[], indexed?: boolean, selectorStates?: Array<[string, unknown]>, staticCollection?: boolean): unknown export function listField(read: () => unknown, field: string): unknown export function listExpression(read: () => unknown, module: string, handler: string, states?: Array<[string, unknown]>): unknown export function listItem(): unknown export function listIndex(): unknown export function listConditional(kind: "and" | "ternary", read: () => unknown, truthy: () => unknown, falsy: () => unknown, module: string, handler: string): unknown export type PageMetadata = { title?: string description?: string lang?: string locale?: string siteName?: string type?: string url?: string image?: string imageAlt?: string twitterCard?: string twitterImage?: string themeColor?: string icon?: string appleTouchIcon?: string manifest?: string styles?: boolean | string[] base?: string runtimeAsset?: string bindingAsset?: string listAsset?: string effectAsset?: string nativeAsset?: string paramAsset?: string runtimeParams?: string[] navigationAsset?: string applicationId?: string layoutId?: string routeId?: string } export type MetadataContext> = { route: string params: Record props: Props } export type ListSourceDescriptor = | { state: string; truthy?: unknown; falsy?: unknown } | { module: string handler: string states: Record scope: Record scopeStates: Record scopeBindings: Record } export type ChildListDescriptor = { id: string field: string key: string | null selector?: unknown[] } export type ListDescriptor = { id: string state: string key: string | null keys: Array svg?: true static?: true source?: ListSourceDescriptor ownerField?: string selector?: unknown[] selectorStates?: Record indexed?: true reducer?: true children?: ChildListDescriptor[] mount?: true nested?: true effects?: true conditions?: true conditionHandlers?: true textRanges?: true attributes?: true events?: true expressions?: true expressionAttributes?: true expressionStates?: string[] rowStates?: Array<{ id: string; initialValue: unknown; initializer?: "list-item" }> rowConditions?: string[] rowRefs?: string[] fastRelease?: true seed?: Record valueSeed?: Record } export interface RouteIR { version: 1 route?: string states: Array<{ slot: number; id: string; name: string; initialValue: unknown; lifetime?: "layout" | "route"; internal?: true }> params: Array<{ name: string; id: string }> searchParams: Array<{ name: string; id: string }> searchParamsWritable: boolean events: Array<{ event: string commands?: Array<[string, string, unknown]> native?: { module: string; handler: string; states: Record; scope: Record } }> effects: Array<{ module: string handler: string states: Record scope: Record lifetime?: "layout" | "route" dependencies?: string[] dependencyExpressions?: unknown[] dependencyStates?: Record dependencyEvaluators?: Array<{ module: string; handler: string; states: Record; scope: Record; field: string }> itemDependencies?: string[] listState?: string cleanup?: true owner?: string list?: true }> bindings: Array<{ target: string state?: string module?: string handler?: string states?: Record scope?: Record scopeStates?: Record scopeBindings?: Record }> conditions: Array> lists: ListDescriptor[] } export function renderPage>( component: (props: Props) => unknown | Promise, metadata?: PageMetadata, props?: Props, layout?: (props: { children: unknown }) => unknown | Promise ): Promise<{ html: string hasBehaviors: boolean hasEffects: boolean hasParams: boolean hasBindings: boolean hasLists: boolean hasListStyles: boolean hasStateSeed: boolean handlerReferences: Array<{ module: string; handler: string }> plan: RouteIR }>