import { ChildPart } from "lit-html";
import { ComponentCreator } from "./component";
import { ContextCreator } from "./create-context";
type Component
= HTMLElement & P;
type ComponentOrVirtualComponent = T extends HTMLElement ? Component
: ChildPart;
type GenericRenderer = (this: ComponentOrVirtualComponent, ...args: any[]) => unknown | void;
type RenderResult = {
setConnected: (isConnected: boolean) => void;
};
type RenderFunction = (result: unknown, container: DocumentFragment | HTMLElement) => RenderResult;
interface Options {
render: RenderFunction;
}
declare function pion({ render }: Options): {
component: ComponentCreator;
createContext: ContextCreator;
};
export { pion as default, Options, GenericRenderer, RenderFunction, RenderResult, ComponentOrVirtualComponent, };
export { useCallback } from "./use-callback";
export { useEffect } from "./use-effect";
export { useLayoutEffect } from "./use-layout-effect";
export { useState } from "./use-state";
export { useReducer } from "./use-reducer";
export { useMemo } from "./use-memo";
export { useContext } from "./use-context";
export { useProperty, lift } from "./use-property";
export { useRef, createRef } from "./use-ref";
export { useHost } from "./use-host";
export { hook, Hook } from "./hook";
export { BaseScheduler } from "./scheduler";
export { State } from "./state";
export type { Ref } from "./use-ref";
export type { Options as ComponentOptions } from "./component";
export type { StateUpdater } from "./use-state";
export { InfiniteLoopError } from "./errors";
/**
* Represents any value that can be rendered by lit-html.
*
* In practice, lit-html can attempt to render almost anything, since it
* stringifies unknown values using their `toString()` method. However, this
* doesn’t mean the output will always be meaningful — for example, interpolating
* a plain object results in `[object Object]`.
*
* This type is intended to annotate content that will be passed to lit-html
* templates or rendering functions.
*
* @example
* ```ts
* function renderButton(buttonBody: Renderable) {
* return html`
*
* `;
* }
* ```
*/
export type Renderable = null | undefined | {
toString: () => string;
};