import type {ReferenceReceiver} from '@revideo/core'; import type {Node} from './Node'; export type ComponentChild = | Node | object | string | number | bigint | boolean | null | undefined; export type ComponentChildren = ComponentChild | ComponentChild[]; export type NodeChildren = Node | Node[]; export type PropsOf = T extends NodeConstructor ? P : T extends FunctionComponent ? P : never; export interface JSXProps { children?: ComponentChildren; ref?: ReferenceReceiver; } export interface FunctionComponent { (props: T): Node | null; } export interface NodeConstructor { new (props: TProps): TNode; }