import type { KubbFile } from '@kubb/fabric-core/types' import type React from 'react' import type { JSX, ReactNode } from 'react' export type Key = string | number | bigint export type ElementNames = | 'br' | 'div' | 'indent' | 'dedent' | 'kubb-text' | 'kubb-file' | 'kubb-source' | 'kubb-import' | 'kubb-export' | 'kubb-function' | 'kubb-const' | 'kubb-type' | 'kubb-root' | 'kubb-app' type Node = { parentNode: DOMElement | undefined internal_static?: boolean } export type DOMNodeAttribute = boolean | string | number type TextName = '#text' export type TextNode = { nodeName: TextName nodeValue: string } & Node export type DOMNode = T extends { nodeName: infer U } ? U extends '#text' ? TextNode : DOMElement : never type OutputTransformer = (s: string, index: number) => string export type DOMElement = { nodeName: ElementNames attributes: Map childNodes: DOMNode[] internal_transform?: OutputTransformer // Internal properties isStaticDirty?: boolean staticNode?: DOMElement onComputeLayout?: () => void onRender?: () => void onImmediateRender?: () => void } & Node type NodeNames = ElementNames | TextName export type FabricReactNode = ReactNode export type FabricReactElement = JSX.Element export type FabricTextProps = { children?: FabricReactNode } export type FabricFileProps = { id?: string children?: FabricReactNode baseName: string path: string override?: boolean meta?: KubbFile.File['meta'] } export type FabricSourceProps = KubbFile.Source & { children?: FabricReactNode } export type FabricImportProps = KubbFile.Import export type FabricExportProps = KubbFile.Export export type FabricFunctionProps = KubbFile.FunctionNode & { children?: FabricReactNode } export type FabricConstProps = KubbFile.ConstNode & { children?: FabricReactNode } export type FabricTypeProps = KubbFile.TypeNode & { children?: FabricReactNode } export type LineBreakProps = React.DetailedHTMLProps, HTMLBRElement> export * from '@kubb/fabric-core/types' export type { Param, Params } from './utils/getFunctionParams.ts'