{
  "id": "@typed/template#Wire",
  "canonicalId": "@typed/template#Wire",
  "symbol": {
    "id": "@typed/template#Wire",
    "packageName": "@typed/template",
    "moduleName": ".",
    "exportName": "Wire",
    "kind": "interface",
    "signatures": [
      "export interface Wire {\n    readonly ELEMENT_NODE: 1;\n    readonly DOCUMENT_FRAGMENT_NODE: 11;\n    readonly nodeType: 111;\n    readonly firstChild: Node | null;\n    readonly lastChild: Node | null;\n    readonly childNodes: Array<Node>;\n    readonly valueOf: () => DocumentFragment;\n}"
    ],
    "summary": "Wire is a data type that serves as a persistent, reusable DocumentFragment.\n\nUnlike a standard `DocumentFragment`, which empties itself when appended to the DOM,\na `Wire` retains references to its child nodes. This allows it to be moved around\nthe DOM or updated without losing track of its content.\n\nIt is used internally to manage the lifecycle of template instances.",
    "sections": {
      "Why": "Multiple concrete nodes need one stable, movable identity after their source\n`DocumentFragment` has been inserted and emptied. Boundary comments make that\nrange explicit without wrapping it in an extra element.",
      "Ownership and lifetime": "A Wire retains its exact boundary and child nodes but claims no ancestors or\nexternal siblings. The render Scope decides when its range is moved or\nremoved; browser-owned state remains attached to the same nodes.",
      "Property: DOCUMENT_FRAGMENT_NODE": "Native DocumentFragment node constant exposed for DOM-diff compatibility.",
      "Property: DOCUMENT_FRAGMENT_NODE: Why": "Supports algorithms branching on fragment behavior.",
      "Property: DOCUMENT_FRAGMENT_NODE: Ownership and lifetime": "Immutable numeric metadata.",
      "Property: ELEMENT_NODE": "Native Element node constant exposed for DOM-diff compatibility.",
      "Property: ELEMENT_NODE: Why": "Lets node algorithms treat Wire as a fragment-like DOM value.",
      "Property: ELEMENT_NODE: Ownership and lifetime": "Immutable numeric metadata.",
      "Property: childNodes": "Current concrete nodes in the represented range.",
      "Property: childNodes: Why": "Reflects moves performed after the source fragment was inserted.",
      "Property: childNodes: Ownership and lifetime": "Returns borrowed node identities in current DOM order.",
      "Property: firstChild": "Opening boundary of the represented DOM range.",
      "Property: firstChild: Why": "Gives bounded diff and move operations an exact start.",
      "Property: firstChild: Ownership and lifetime": "Borrowed node identity retained by the Wire.",
      "Property: lastChild": "Closing boundary of the represented DOM range.",
      "Property: lastChild: Why": "Gives bounded diff and move operations an exact end.",
      "Property: lastChild: Ownership and lifetime": "Borrowed node identity retained by the Wire.",
      "Property: nodeType": "Wire-specific node sentinel used by public guards and reconciliation.",
      "Property: nodeType: Why": "Distinguishes a transparent multi-node range from native Nodes.",
      "Property: nodeType: Ownership and lifetime": "Immutable numeric metadata.",
      "Property: valueOf": "Reassembles the current range as a DocumentFragment for native insertion.",
      "Property: valueOf: Why": "Native DOM insertion can move every represented node without a wrapper.",
      "Property: valueOf: Ownership and lifetime": "Moves the Wire's exact nodes into its retained fragment; no clones are made."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import { persistent } from \"@typed/template/Wire\"\n\n// Wire is created internally by the template renderer\n// It wraps DocumentFragments with multiple children\n// to maintain references after DOM operations"
      }
    ],
    "relations": [],
    "source": {
      "file": "packages/template/src/Wire.ts",
      "line": 35
    },
    "since": "1.0.0",
    "category": "Persistent DOM ranges"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/template#Wire",
    "packageName": "@typed/template",
    "packageVersion": "1.0.0-beta.13",
    "moduleName": ".",
    "consumerSpecifier": "@typed/template",
    "exportName": "Wire",
    "qualifiedName": "Wire",
    "declarationKey": "declaration:864caddf9c600fd6cdd298f4",
    "family": "interface",
    "signatures": [
      "export interface Wire {\n    readonly ELEMENT_NODE: 1;\n    readonly DOCUMENT_FRAGMENT_NODE: 11;\n    readonly nodeType: 111;\n    readonly firstChild: Node | null;\n    readonly lastChild: Node | null;\n    readonly childNodes: Array<Node>;\n    readonly valueOf: () => DocumentFragment;\n}"
    ],
    "sourceSpans": [
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 35,
          "column": 1
        },
        "end": {
          "line": 127,
          "column": 2
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 61,
          "column": 3
        },
        "end": {
          "line": 61,
          "column": 39
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 48,
          "column": 3
        },
        "end": {
          "line": 48,
          "column": 28
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 113,
          "column": 3
        },
        "end": {
          "line": 113,
          "column": 36
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 87,
          "column": 3
        },
        "end": {
          "line": 87,
          "column": 36
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 100,
          "column": 3
        },
        "end": {
          "line": 100,
          "column": 35
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 74,
          "column": 3
        },
        "end": {
          "line": 74,
          "column": 26
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 126,
          "column": 3
        },
        "end": {
          "line": 126,
          "column": 44
        }
      }
    ],
    "aliases": [
      "@typed/template/Wire#Wire"
    ],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:864caddf9c600fd6cdd298f4",
    "name": "Wire",
    "family": "interface",
    "facets": [
      {
        "family": "interface",
        "syntaxKind": "InterfaceDeclaration",
        "signatures": [
          "export interface Wire {\n    readonly ELEMENT_NODE: 1;\n    readonly DOCUMENT_FRAGMENT_NODE: 11;\n    readonly nodeType: 111;\n    readonly firstChild: Node | null;\n    readonly lastChild: Node | null;\n    readonly childNodes: Array<Node>;\n    readonly valueOf: () => DocumentFragment;\n}"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 35,
              "column": 1
            },
            "end": {
              "line": 127,
              "column": 2
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly DOCUMENT_FRAGMENT_NODE: 11;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 61,
              "column": 3
            },
            "end": {
              "line": 61,
              "column": 39
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly ELEMENT_NODE: 1;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 48,
              "column": 3
            },
            "end": {
              "line": 48,
              "column": 28
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly childNodes: Array<Node>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 113,
              "column": 3
            },
            "end": {
              "line": 113,
              "column": 36
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly firstChild: Node | null;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 87,
              "column": 3
            },
            "end": {
              "line": 87,
              "column": 36
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly lastChild: Node | null;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 100,
              "column": 3
            },
            "end": {
              "line": 100,
              "column": 35
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly nodeType: 111;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 74,
              "column": 3
            },
            "end": {
              "line": 74,
              "column": 26
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly valueOf: () => DocumentFragment;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/template/src/Wire.ts",
            "start": {
              "line": 126,
              "column": 3
            },
            "end": {
              "line": 126,
              "column": 44
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      }
    ],
    "signatures": [
      "export interface Wire {\n    readonly ELEMENT_NODE: 1;\n    readonly DOCUMENT_FRAGMENT_NODE: 11;\n    readonly nodeType: 111;\n    readonly firstChild: Node | null;\n    readonly lastChild: Node | null;\n    readonly childNodes: Array<Node>;\n    readonly valueOf: () => DocumentFragment;\n}"
    ],
    "typeParameters": [],
    "summary": "Wire is a data type that serves as a persistent, reusable DocumentFragment.\n\nUnlike a standard `DocumentFragment`, which empties itself when appended to the DOM,\na `Wire` retains references to its child nodes. This allows it to be moved around\nthe DOM or updated without losing track of its content.\n\nIt is used internally to manage the lifecycle of template instances.",
    "sections": {
      "Why": "Multiple concrete nodes need one stable, movable identity after their source\n`DocumentFragment` has been inserted and emptied. Boundary comments make that\nrange explicit without wrapping it in an extra element.",
      "Ownership and lifetime": "A Wire retains its exact boundary and child nodes but claims no ancestors or\nexternal siblings. The render Scope decides when its range is moved or\nremoved; browser-owned state remains attached to the same nodes.",
      "Property: DOCUMENT_FRAGMENT_NODE": "Native DocumentFragment node constant exposed for DOM-diff compatibility.",
      "Property: DOCUMENT_FRAGMENT_NODE: Why": "Supports algorithms branching on fragment behavior.",
      "Property: DOCUMENT_FRAGMENT_NODE: Ownership and lifetime": "Immutable numeric metadata.",
      "Property: ELEMENT_NODE": "Native Element node constant exposed for DOM-diff compatibility.",
      "Property: ELEMENT_NODE: Why": "Lets node algorithms treat Wire as a fragment-like DOM value.",
      "Property: ELEMENT_NODE: Ownership and lifetime": "Immutable numeric metadata.",
      "Property: childNodes": "Current concrete nodes in the represented range.",
      "Property: childNodes: Why": "Reflects moves performed after the source fragment was inserted.",
      "Property: childNodes: Ownership and lifetime": "Returns borrowed node identities in current DOM order.",
      "Property: firstChild": "Opening boundary of the represented DOM range.",
      "Property: firstChild: Why": "Gives bounded diff and move operations an exact start.",
      "Property: firstChild: Ownership and lifetime": "Borrowed node identity retained by the Wire.",
      "Property: lastChild": "Closing boundary of the represented DOM range.",
      "Property: lastChild: Why": "Gives bounded diff and move operations an exact end.",
      "Property: lastChild: Ownership and lifetime": "Borrowed node identity retained by the Wire.",
      "Property: nodeType": "Wire-specific node sentinel used by public guards and reconciliation.",
      "Property: nodeType: Why": "Distinguishes a transparent multi-node range from native Nodes.",
      "Property: nodeType: Ownership and lifetime": "Immutable numeric metadata.",
      "Property: valueOf": "Reassembles the current range as a DocumentFragment for native insertion.",
      "Property: valueOf: Why": "Native DOM insertion can move every represented node without a wrapper.",
      "Property: valueOf: Ownership and lifetime": "Moves the Wire's exact nodes into its retained fragment; no clones are made."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import { persistent } from \"@typed/template/Wire\"\n\n// Wire is created internally by the template renderer\n// It wraps DocumentFragments with multiple children\n// to maintain references after DOM operations"
      }
    ],
    "sourceSpans": [
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 35,
          "column": 1
        },
        "end": {
          "line": 127,
          "column": 2
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 61,
          "column": 3
        },
        "end": {
          "line": 61,
          "column": 39
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 48,
          "column": 3
        },
        "end": {
          "line": 48,
          "column": 28
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 113,
          "column": 3
        },
        "end": {
          "line": 113,
          "column": 36
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 87,
          "column": 3
        },
        "end": {
          "line": 87,
          "column": 36
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 100,
          "column": 3
        },
        "end": {
          "line": 100,
          "column": 35
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 74,
          "column": 3
        },
        "end": {
          "line": 74,
          "column": 26
        }
      },
      {
        "file": "packages/template/src/Wire.ts",
        "start": {
          "line": 126,
          "column": 3
        },
        "end": {
          "line": 126,
          "column": 44
        }
      }
    ],
    "since": "1.0.0",
    "category": "Persistent DOM ranges"
  }
}
