import { Accessor, Setter, Signal } from "./reactive.js";
import type { JSX } from "../jsx.js";
export type Component
= (props: P) => JSX.Element;
export type VoidProps
= P & {
children?: never;
};
export type VoidComponent
= Component>;
export type ParentProps = P & {
children?: JSX.Element;
};
export type ParentComponent
= Component>;
export type FlowProps = P & {
children: C;
};
export type FlowComponent
= Component>;
export type Ref = T | ((val: T) => void);
export type ValidComponent = keyof JSX.IntrinsicElements | Component | (string & {});
export type ComponentProps = T extends Component ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : Record;
type SharedConfig = {
context?: HydrationContext;
};
export declare const sharedConfig: SharedConfig;
export declare function createUniqueId(): string;
export declare function createComponent(Comp: (props: T) => JSX.Element, props: T): JSX.Element;
export declare function mergeProps(source: T, source1: U): T & U;
export declare function mergeProps(source: T, source1: U, source2: V): T & U & V;
export declare function mergeProps(source: T, source1: U, source2: V, source3: W): T & U & V & W;
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 For(props: {
each: T[];
fallback?: string;
children: (item: T, index: () => number) => string;
}): string | any[] | undefined;
export declare function Index(props: {
each: T[];
fallback?: string;
children: (item: () => T, index: number) => string;
}): string | any[] | undefined;
/**
* Conditionally render its children or an optional fallback component
* @description https://www.solidjs.com/docs/latest/api#show
*/
export declare function Show(props: {
when: T | undefined | null | false;
keyed?: boolean;
fallback?: string;
children: string | ((item: NonNullable | Accessor>) => string);
}): string;
export declare function Switch(props: {
fallback?: string;
children: MatchProps | MatchProps[];
}): string;
type MatchProps = {
when: T | false;
keyed?: boolean;
children: string | ((item: NonNullable | Accessor>) => string);
};
export declare function Match(props: MatchProps): MatchProps;
export declare function resetErrorBoundaries(): void;
export declare function ErrorBoundary(props: {
fallback: string | ((err: any, reset: () => void) => string);
children: string;
}): string | ((err: any, reset: () => void) => string) | {
t: string;
};
export interface Resource {
(): T | undefined;
state: "unresolved" | "pending" | "ready" | "refreshing" | "errored";
loading: boolean;
error: any;
latest: T | undefined;
}
type SuspenseContextType = {
resources: Map;
completed: () => void;
};
export type ResourceActions = {
mutate: Setter;
refetch: (info?: unknown) => void;
};
export type ResourceReturn = [Resource, ResourceActions];
export type ResourceSource = S | false | null | undefined | (() => S | false | null | undefined);
export type ResourceFetcher = (k: S, info: ResourceFetcherInfo) => T | Promise;
export type ResourceFetcherInfo = {
value: T | undefined;
refetching?: unknown;
};
export type ResourceOptions = undefined extends T ? {
initialValue?: T;
name?: string;
deferStream?: boolean;
ssrLoadFrom?: "initial" | "server";
storage?: () => Signal;
onHydrated?: (k: S, info: ResourceFetcherInfo) => void;
} : {
initialValue: T;
name?: string;
deferStream?: boolean;
ssrLoadFrom?: "initial" | "server";
storage?: (v?: T) => Signal;
onHydrated?: (k: S, info: ResourceFetcherInfo) => void;
};
export declare function createResource(fetcher: ResourceFetcher, options?: ResourceOptions): ResourceReturn;
export declare function createResource(fetcher: ResourceFetcher, options: ResourceOptions): ResourceReturn;
export declare function createResource(source: ResourceSource, fetcher: ResourceFetcher, options?: ResourceOptions): ResourceReturn;
export declare function createResource(source: ResourceSource, fetcher: ResourceFetcher, options: ResourceOptions): ResourceReturn;
export declare function lazy>(fn: () => Promise<{
default: T;
}>): T & {
preload: () => Promise<{
default: T;
}>;
};
export declare function enableScheduling(): void;
export declare function enableHydration(): void;
export declare function startTransition(fn: () => any): void;
export declare function useTransition(): [() => boolean, (fn: () => any) => void];
type HydrationContext = {
id: string;
count: number;
writeResource: (id: string, v: Promise | any, error?: boolean, deferStream?: boolean) => void;
replace: (id: string, replacement: () => any) => void;
block: (p: Promise) => void;
resources: Record;
suspense: Record;
registerFragment: (v: string) => (v?: string, err?: any) => boolean;
lazy: Record>;
async?: boolean;
noHydrate: boolean;
};
export declare function SuspenseList(props: {
children: string;
revealOrder: "forwards" | "backwards" | "together";
tail?: "collapsed" | "hidden";
}): string;
export declare function Suspense(props: {
fallback?: string;
children: string;
}): string | number | boolean | Node | JSX.ArrayElement | {
t: string;
} | null | undefined;
export {};