import { StateTree, ChildMap, EventHandler } from "./purview"; import { PNodeRegular } from "./types/ws"; import { JSX } from "./purview"; declare type UpdateFn = (state: Readonly) => Partial; export interface ComponentConstructor { _stateless: boolean; getUniqueName(): string; new (props: P): Component; } interface Component { getInitialState?(): Promise; } export declare const MAX_SET_STATE_AFTER_UNMOUNT = 10; declare abstract class Component { protected props: Readonly

; _id: string; _childMap: ChildMap | StateTree>; _newChildMap: ChildMap | null>; _handleUpdate?: () => Promise; _eventHandlers: Record; _newEventHandlers: Record; _pNode: PNodeRegular; _unmounted: boolean; _directlyNests: boolean; _isPurviewComponent: boolean; protected state: Readonly; private _changesets; private _lockedPromise; private _numSetStateAfterUnmount; static getUniqueName(): string; static _stateless: boolean; static _statelessName: string | undefined; constructor(props: Readonly

); abstract render(): JSX.Element; componentDidMount(): void; componentWillUnmount(): void; componentWillReceiveProps(_: P): void; setState(changes: Partial | UpdateFn): Promise; _applyChangesetsLocked(): boolean; _lock(callback: () => T | Promise): Promise; _initState(savedState?: S, reload?: boolean): Promise; _triggerMount(allComponentsMap: Record | undefined> | null): Promise; _mountSelfLocked(allComponentsMap: Record | undefined> | null): void; _triggerUnmount(allComponentsMap: Record | undefined> | null): Promise; _setProps(props: Readonly

): void; } export default Component;