type NodeResolver = (root: Node) => Node; type NodeBinding = Readonly<{ type: "node"; resolver: NodeResolver; index: number; }>; type AttributeBinding = Readonly<{ type: "attribute"; resolver: NodeResolver; attributeName: string; indexes: ReadonlyArray; segments: string[]; }>; type CompiledTemplate = Readonly<{ template: HTMLTemplateElement; nodeBindings: ReadonlyArray; attributeBindings: ReadonlyArray; attributeUpdater?: (values: readonly unknown[]) => void; }>; export type { AttributeBinding, CompiledTemplate, NodeBinding, NodeResolver };