{
  "id": "@typed/template/RenderEvent#HtmlRenderEvent",
  "canonicalId": "@typed/template#HtmlRenderEvent",
  "symbol": {
    "id": "@typed/template/RenderEvent#HtmlRenderEvent",
    "packageName": "@typed/template",
    "moduleName": "RenderEvent",
    "exportName": "HtmlRenderEvent",
    "kind": "interface",
    "signatures": [
      "export interface HtmlRenderEvent {\n    readonly [RenderEventTypeId]: \"html\";\n    readonly [HtmlRenderTransportBrand]: true;\n    readonly html: string;\n    readonly last: boolean;\n    readonly toString: () => string;\n    readonly valueOf: () => string;\n}",
      "export declare const HtmlRenderEvent: (html: string, last: boolean) => HtmlRenderEvent;"
    ],
    "summary": "A RenderEvent containing an HTML string.",
    "sections": {
      "Why": "`HtmlRenderEvent` allows an HTML-producing renderer or stream to join Typed's\nordered SSR output without pretending its chunks are DOM nodes. This is the\nHTML counterpart to `DomRenderEvent`, not a framework-specific adapter.",
      "Ownership and lifetime": "The producing Fx owns chunk order, interruption, resource finalization, and\nthe decision to mark the final event. `last` is `true` only for the terminal\nchunk. The event itself retains only its string and completion marker.",
      "Trust boundary": "The HTML is branded renderer-owned transport. It is not sanitized and must\nnever be constructed from arbitrary application or user data. Ordinary\n`html` template interpolations remain escaped; only a renderer that already\nowns safe HTML serialization should call this constructor.",
      "Property: [[computed:[HtmlRenderTransportBrand]]]": "Evidence that the string came from a renderer-owned serialization path.",
      "Property: [[computed:[HtmlRenderTransportBrand]]]: Why": "Rejects structurally similar raw application objects at runtime.",
      "Property: [[computed:[HtmlRenderTransportBrand]]]: Ownership and lifetime": "Immutable metadata; it does not sanitize or retain another value.",
      "Property: [[computed:[RenderEventTypeId]]]": "HTML-output discriminant stored at the public RenderEvent key.",
      "Property: [[computed:[RenderEventTypeId]]]: Why": "Separates server strings from DOM output.",
      "Property: [[computed:[RenderEventTypeId]]]: Ownership and lifetime": "Immutable metadata owned by the event.",
      "Property: html": "The rendered HTML string.",
      "Property: html: Why": "Carries one ordered output chunk without pretending it is DOM.",
      "Property: html: Ownership and lifetime": "The event owns the string; the producer owns stream ordering and cleanup.",
      "Property: last": "Indicates if this is the last part of a chunked render.",
      "Property: last: Why": "Ordered consumers can finalize one logical render without inspecting content.",
      "Property: last: Ownership and lifetime": "Immutable producer-supplied metadata.",
      "Property: toString": "Returns the HTML chunk for string-oriented consumers.",
      "Property: toString: Why": "Integrates with ordinary serialization protocols.",
      "Property: toString: Ownership and lifetime": "Returns the event-owned immutable string.",
      "Property: valueOf": "Returns the HTML chunk as the event's primitive value.",
      "Property: valueOf: Why": "Keeps HTML transport ergonomic without weakening its brand.",
      "Property: valueOf: Ownership and lifetime": "Returns the event-owned immutable string."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import { HtmlRenderEvent } from \"@typed/template/RenderEvent\"\n\nconst event = HtmlRenderEvent(\"<div>Hello</div>\", true)\n\n// Get the HTML string\nconst html = event.toString()\n\n// Check if it's the last chunk\nif (event.last) {\n  console.log(\"Final chunk\")\n}"
      },
      {
        "language": "ts",
        "code": "import { HtmlRenderEvent } from \"@typed/template/RenderEvent\"\n\n// Create a single-chunk HTML event\nconst event = HtmlRenderEvent(\"<div>Hello</div>\", true)\n\n// Create a multi-chunk HTML event\nconst chunk1 = HtmlRenderEvent(\"<div>\", false)\nconst chunk2 = HtmlRenderEvent(\"Hello\", false)\nconst chunk3 = HtmlRenderEvent(\"</div>\", true)"
      }
    ],
    "relations": [
      {
        "kind": "glossary",
        "target": "html-render-event"
      }
    ],
    "source": {
      "file": "packages/template/src/RenderEvent.ts",
      "line": 319
    },
    "since": "1.0.0",
    "category": "Serialized HTML output"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/template/RenderEvent#HtmlRenderEvent",
    "packageName": "@typed/template",
    "packageVersion": "1.0.0-beta.7",
    "moduleName": "RenderEvent",
    "consumerSpecifier": "@typed/template/RenderEvent",
    "exportName": "HtmlRenderEvent",
    "qualifiedName": "HtmlRenderEvent",
    "declarationKey": "declaration:fde54d9547915cc294dbc93c",
    "family": "interface",
    "signatures": [
      "export interface HtmlRenderEvent {\n    readonly [RenderEventTypeId]: \"html\";\n    readonly [HtmlRenderTransportBrand]: true;\n    readonly html: string;\n    readonly last: boolean;\n    readonly toString: () => string;\n    readonly valueOf: () => string;\n}",
      "export declare const HtmlRenderEvent: (html: string, last: boolean) => HtmlRenderEvent;"
    ],
    "sourceSpans": [
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 319,
          "column": 1
        },
        "end": {
          "line": 400,
          "column": 2
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 440,
          "column": 14
        },
        "end": {
          "line": 447,
          "column": 3
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 345,
          "column": 3
        },
        "end": {
          "line": 345,
          "column": 45
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 332,
          "column": 3
        },
        "end": {
          "line": 332,
          "column": 40
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 359,
          "column": 3
        },
        "end": {
          "line": 359,
          "column": 25
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 373,
          "column": 3
        },
        "end": {
          "line": 373,
          "column": 26
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 386,
          "column": 3
        },
        "end": {
          "line": 386,
          "column": 35
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 399,
          "column": 3
        },
        "end": {
          "line": 399,
          "column": 34
        }
      }
    ],
    "aliases": [
      "@typed/template#HtmlRenderEvent"
    ],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:fde54d9547915cc294dbc93c",
    "name": "HtmlRenderEvent",
    "family": "interface",
    "facets": [
      {
        "family": "interface",
        "syntaxKind": "InterfaceDeclaration",
        "signatures": [
          "export interface HtmlRenderEvent {\n    readonly [RenderEventTypeId]: \"html\";\n    readonly [HtmlRenderTransportBrand]: true;\n    readonly html: string;\n    readonly last: boolean;\n    readonly toString: () => string;\n    readonly valueOf: () => string;\n}"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 319,
              "column": 1
            },
            "end": {
              "line": 400,
              "column": 2
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "variable",
        "syntaxKind": "VariableDeclaration",
        "signatures": [
          "export declare const HtmlRenderEvent: (html: string, last: boolean) => HtmlRenderEvent;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 440,
              "column": 14
            },
            "end": {
              "line": 447,
              "column": 3
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly [HtmlRenderTransportBrand]: true;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 345,
              "column": 3
            },
            "end": {
              "line": 345,
              "column": 45
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly [RenderEventTypeId]: \"html\";"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 332,
              "column": 3
            },
            "end": {
              "line": 332,
              "column": 40
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly html: string;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 359,
              "column": 3
            },
            "end": {
              "line": 359,
              "column": 25
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly last: boolean;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 373,
              "column": 3
            },
            "end": {
              "line": 373,
              "column": 26
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly toString: () => string;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 386,
              "column": 3
            },
            "end": {
              "line": 386,
              "column": 35
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly valueOf: () => string;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/RenderEvent.ts",
            "start": {
              "line": 399,
              "column": 3
            },
            "end": {
              "line": 399,
              "column": 34
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      }
    ],
    "signatures": [
      "export interface HtmlRenderEvent {\n    readonly [RenderEventTypeId]: \"html\";\n    readonly [HtmlRenderTransportBrand]: true;\n    readonly html: string;\n    readonly last: boolean;\n    readonly toString: () => string;\n    readonly valueOf: () => string;\n}",
      "export declare const HtmlRenderEvent: (html: string, last: boolean) => HtmlRenderEvent;"
    ],
    "typeParameters": [],
    "summary": "A RenderEvent containing an HTML string.",
    "sections": {
      "Why": "`HtmlRenderEvent` allows an HTML-producing renderer or stream to join Typed's\nordered SSR output without pretending its chunks are DOM nodes. This is the\nHTML counterpart to `DomRenderEvent`, not a framework-specific adapter.",
      "Ownership and lifetime": "The producing Fx owns chunk order, interruption, resource finalization, and\nthe decision to mark the final event. `last` is `true` only for the terminal\nchunk. The event itself retains only its string and completion marker.",
      "Trust boundary": "The HTML is branded renderer-owned transport. It is not sanitized and must\nnever be constructed from arbitrary application or user data. Ordinary\n`html` template interpolations remain escaped; only a renderer that already\nowns safe HTML serialization should call this constructor.",
      "Property: [[computed:[HtmlRenderTransportBrand]]]": "Evidence that the string came from a renderer-owned serialization path.",
      "Property: [[computed:[HtmlRenderTransportBrand]]]: Why": "Rejects structurally similar raw application objects at runtime.",
      "Property: [[computed:[HtmlRenderTransportBrand]]]: Ownership and lifetime": "Immutable metadata; it does not sanitize or retain another value.",
      "Property: [[computed:[RenderEventTypeId]]]": "HTML-output discriminant stored at the public RenderEvent key.",
      "Property: [[computed:[RenderEventTypeId]]]: Why": "Separates server strings from DOM output.",
      "Property: [[computed:[RenderEventTypeId]]]: Ownership and lifetime": "Immutable metadata owned by the event.",
      "Property: html": "The rendered HTML string.",
      "Property: html: Why": "Carries one ordered output chunk without pretending it is DOM.",
      "Property: html: Ownership and lifetime": "The event owns the string; the producer owns stream ordering and cleanup.",
      "Property: last": "Indicates if this is the last part of a chunked render.",
      "Property: last: Why": "Ordered consumers can finalize one logical render without inspecting content.",
      "Property: last: Ownership and lifetime": "Immutable producer-supplied metadata.",
      "Property: toString": "Returns the HTML chunk for string-oriented consumers.",
      "Property: toString: Why": "Integrates with ordinary serialization protocols.",
      "Property: toString: Ownership and lifetime": "Returns the event-owned immutable string.",
      "Property: valueOf": "Returns the HTML chunk as the event's primitive value.",
      "Property: valueOf: Why": "Keeps HTML transport ergonomic without weakening its brand.",
      "Property: valueOf: Ownership and lifetime": "Returns the event-owned immutable string."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import { HtmlRenderEvent } from \"@typed/template/RenderEvent\"\n\nconst event = HtmlRenderEvent(\"<div>Hello</div>\", true)\n\n// Get the HTML string\nconst html = event.toString()\n\n// Check if it's the last chunk\nif (event.last) {\n  console.log(\"Final chunk\")\n}"
      },
      {
        "language": "ts",
        "code": "import { HtmlRenderEvent } from \"@typed/template/RenderEvent\"\n\n// Create a single-chunk HTML event\nconst event = HtmlRenderEvent(\"<div>Hello</div>\", true)\n\n// Create a multi-chunk HTML event\nconst chunk1 = HtmlRenderEvent(\"<div>\", false)\nconst chunk2 = HtmlRenderEvent(\"Hello\", false)\nconst chunk3 = HtmlRenderEvent(\"</div>\", true)"
      }
    ],
    "sourceSpans": [
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 319,
          "column": 1
        },
        "end": {
          "line": 400,
          "column": 2
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 440,
          "column": 14
        },
        "end": {
          "line": 447,
          "column": 3
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 345,
          "column": 3
        },
        "end": {
          "line": 345,
          "column": 45
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 332,
          "column": 3
        },
        "end": {
          "line": 332,
          "column": 40
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 359,
          "column": 3
        },
        "end": {
          "line": 359,
          "column": 25
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 373,
          "column": 3
        },
        "end": {
          "line": 373,
          "column": 26
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 386,
          "column": 3
        },
        "end": {
          "line": 386,
          "column": 35
        }
      },
      {
        "file": "packages/template/src/RenderEvent.ts",
        "start": {
          "line": 399,
          "column": 3
        },
        "end": {
          "line": 399,
          "column": 34
        }
      }
    ],
    "since": "1.0.0",
    "category": "Serialized HTML output"
  }
}
