import ts from "typescript"; import { PureComponent, ReactText } from "react"; import { IBasicEntityProvider, SourceFileContext } from "./base"; import { IInnerComponent } from "./component"; import { IConstructor } from "./decorators"; import { IInnerDirective } from "./directive"; import { IInnerCompnentChildRef, IInnerCompositionChildRef } from "./child-ref"; import { PropAttach } from "./libs"; export declare type IChildNodes = T | T[]; export declare type ReconcilerInputMap = T extends [infer K, infer V][] ? K extends string | number | symbol ? Partial> | [K, V][] : never : never; export declare type ReconcilerInputValue = T extends PropAttach ? P : T; export interface IReconcilerChildNode extends IConstructor; map?: ReconcilerInputMap; children?: ReconcilerInputValue; }, {}, {}>> { } export declare type ReconcilerChildNodes = { [key in keyof T]: IReconcilerChildNode; }; export interface IReconcilerContainer { /** * ## Children Attach Properties Container */ Attaches: IConstructor>; /** * ## Template Input Properties Container */ Inputs: IConstructor>; } export interface IReconcilerDefinition extends IConstructor>, IReconcilerContainer { } export declare type ReconcilerElement = ReconcilerChildNodes & IReconcilerDefinition; export interface IProxyEntity { __useReconciler?: true; __key?: string; __parent?: IConstructor; __target: IConstructor; } export interface IEngineOptions { context: SourceFileContext; } export interface IReactEntityPayload { $$typeof: symbol; type: IProxyEntity; key: string | null; ref: null; props: Record>; _owner: null; _store: null; } export interface IReconcilerExtends { parent?: IInnerCompnentChildRef; children?: (IInnerCompnentChildRef | IInnerCompositionChildRef)[]; key?: string; } export interface IEngine { parseComposite(element: JSX.Element, options?: IReconcilerExtends): IInnerCompnentChildRef; parseGenerator(element: JSX.Element): ts.Node; } export declare function useReconciler(ctor: IConstructor): ReconcilerElement; export declare class ChildrenSlotComponent extends PureComponent<{}, {}, {}> { } /** * ## Reconciler ChildNodes Slot Container * @support `Component` | `Composition` **/ export declare const ChildrenSlot: ReconcilerElement; export declare abstract class ReconcilerEngine { abstract createEngine(options: IEngineOptions): IEngine; }