// Types for the HTML binding.
//
// Every component is `(props) => string`, where the string is HTML. Slots take
// text (escaped for you) or `raw()` markup, so the unsafe path has to be chosen
// rather than reached by forgetting to escape.
/** Markup that has already been escaped, for composing into a slot. */
export interface RawHtml {
__html: string;
}
/** A slot takes text (escaped) or `raw()` markup. */
export type Slot = string | number | RawHtml | null | undefined | false;
/** Escapes text for HTML. */
export declare function escapeHtml(value: unknown): string;
/**
* Marks a string as already-safe HTML so it can be composed into a slot.
* An unmarked string is always treated as text and escaped.
*/
export declare function raw(html: string): RawHtml;
/** Resolves a slot: `raw()` passes through, anything else is escaped text. */
export declare function slot(value: unknown): string;
/** Joins class names, dropping the falsy ones. */
export declare function cx(...parts: unknown[]): string;
/** Serialises a prop bag to HTML attributes. `tag` defers value/checked on form controls. */
export declare function attrs(props: Record | null | undefined, tag?: string): string;
/** Serialises a style object to a CSS declaration list. */
export declare function styleAttr(style: Record | string | null | undefined): string;
/** One `