/** * The tagged-template HTML engine - `html` builds an escaped-by-construction {@link Template}. * * Security model (the part that matters): every interpolated value is HTML-escaped by default. * The ONLY ways to emit unescaped markup are (1) nesting another `html` template - already escaped * by construction - and (2) an explicit {@link raw} wrapper, which is the audit-greppable opt-out. * The escaper covers text and double-quoted attribute contexts (`& < > " '`); interpolations into * unquoted attributes or inline scripts are NOT safe by design - the docs say "always quote". */ /** Branded wrapper marking a string as pre-trusted markup. Construct only via {@link raw}. */ export declare class RawHtml { readonly value: string; constructor(value: string); } /** * Mark a string as trusted, pre-escaped markup - it is emitted verbatim. The deliberate escape * hatch (CMS-sanitized HTML, pre-rendered markdown): every call site is greppable, exactly like * React's dangerouslySetInnerHTML, without the JSX. */ export declare function raw(trusted: string): RawHtml; /** A rendered HTML fragment - what `html` returns and components produce. Stringified once. */ export declare class Template { /** The final markup. Built eagerly at tag time (interpolations are already values by then). */ readonly html: string; constructor(htmlString: string); toString(): string; } /** What an interpolation may be: escaped primitives, nested templates/raw, arrays of the same. * `null`/`undefined`/`false` render as nothing (conditional rendering: `cond && html\`…\``). */ export type HtmlValue = string | number | bigint | boolean | null | undefined | Template | RawHtml | ReadonlyArray; /** The tag: `` html`

${user.name}

` `` → an escaped {@link Template}. */ export declare function html(strings: TemplateStringsArray, ...values: HtmlValue[]): Template; //# sourceMappingURL=html.d.ts.map