import React from "react"; import { AppContainer } from "../../renderer"; import { IControl, Grid as NativeGrid, Window as NativeWindow } from "ave-ui"; export declare type ReactAveTag = string | React.ComponentType; export interface IComponentProps { id?: string; style?: IComponentStyle; langKey?: string; children?: any[] | any; onInit?: (nativeControl: any) => void; onPointerEnter?: Parameters[0]; onPointerLeave?: Parameters[0]; onPointerPress?: Parameters[0]; onPointerRelease?: Parameters[0]; onPointerMove?: Parameters[0]; onPointerHover?: Parameters[0]; } export interface IComponentStyle { area?: IGridArea; margin?: string; } export interface IGridArea { column: number; row: number; columnSpan?: number; rowSpan?: number; } export declare abstract class AveComponent { static tagName: string; props: Props; children: AveComponent[]; parentGrid: NativeGrid; nativeControl: IControl; nodeName: string; nodeId: number; protected window: NativeWindow; constructor(initProps?: Props); setNodeName(name: string): void; createUI(window: NativeWindow): IControl; afterCreateUI(): void; protected abstract onCreateUI(): IControl; setInitialProps(): void; protected onUpdateProp(propName: string, propValue: any): void; private commonOnUpdateProp; get gridControl(): import("ave-ui").IGridControl; get created(): boolean; updateProps(oldProps: Props, newProps: Props, updatePayload: any[]): void; appendChild(child: AveComponent): void; insertBefore(child: AveComponent, beforeChild: AveComponent): void; removeChild(child: AveComponent): void; } export declare abstract class ComponentConfig { abstract tagName: string; abstract createInstance(initProps: any, app: AppContainer, context: any): AveComponent; commitUpdate(instance: AveComponent, updatePayload: any[], type: string, oldProps: any, newProps: any): void; prepareUpdate(instance: any, type: string, oldProps: any, newProps: any, rootContainer: AppContainer, hostContext: any): any[]; finalizeInitialChildren(...args: any[]): boolean; commitMount(...args: any[]): void; } export declare function registerComponent(config: ComponentConfig): ReactAveTag; export declare const getComponentByTagName: (tagName: string) => ComponentConfig;