import { BlockNode, Node, TextNode } from './types.js'; export type InferBlockNode = T extends { children: readonly (infer N extends Node)[]; } ? T | InferBlockNode : never; export type InferLeafBlockNode = T extends { children: readonly (infer N extends Node)[]; } ? N extends BlockNode ? InferLeafBlockNode : T : never; export type InferInlineNode = T extends { children: readonly (infer N extends Node)[]; } ? InferInlineNode : T; export type InferVoidNode = Exclude, TextNode>; export type InferTextNode = Extract, TextNode>; type FlattenAllNodes = T extends any ? T | (T extends { children: readonly (infer N extends Node)[]; } ? FlattenAllNodes : never) : never; export type ExtractAttrValue = FlattenAllNodes extends infer AllNodes extends Node ? AllNodes extends any ? K extends keyof AllNodes ? AllNodes[K] : never : never : never; export {};