import { ReactiveUI } from '../ui/ReactiveUI'; import { MultiContextObject } from './MultiContextObject'; import { Context, ComponentState, ComponentProps, PeerMessage, ComponentInstance, SchemaDefinition } from '../Types'; import { DistributedState } from '../data/DistributedState'; import { PeerManager } from '../net/PeerManager'; import { SyncManager } from '../net/SyncManager'; import { Logger } from '../Logger'; import { ComponentRegistry } from './ComponentRegistry'; import { GunDataProvider } from '../data/GunDataProvider'; export declare abstract class Component extends MultiContextObject { protected ui: ReactiveUI; protected state: DistributedState; props: P; protected peerManager: PeerManager; protected syncManager: SyncManager; protected logger: Logger; private eventEmitter; private childComponents; private metadata; private stateUnsubscribe; constructor(contexts: Context[], dataProvider: GunDataProvider, schema: SchemaDefinition, initialState: S, props: P, peerManager: PeerManager, syncManager: SyncManager); private getPath; private setupStateSubscription; private setupPeerMessageHandler; abstract render(): string; publish(registry: ComponentRegistry, currentUserPair: any, schema: SchemaDefinition): Promise; static load(address: string, registry: ComponentRegistry, userPair: any, dataProvider: GunDataProvider, syncManager: SyncManager, schema: SchemaDefinition): Promise; private serialize; onMount(): void; onUnmount(): void; onUpdate(prevProps: any, prevState: any): void; protected setState(newState: Partial, broadcast?: boolean): void; private handleStateChange; protected handlePeerMessage(message: PeerMessage): void; update(): void; mount(element: HTMLElement): void; unmount(): void; updateProps(newProps: Partial

): void; protected registerChildComponent(key: string, component: Component): void; protected getChildComponent(key: string): Component | undefined; protected removeChildComponent(key: string): void; on(event: string, listener: (...args: any[]) => void): void; off(event: string, listener: (...args: any[]) => void): void; emit(event: string, ...args: any[]): void; sendToPeer(peerId: string, message: any): void; broadcastToPeers(message: any): void; syncState(): void; fetchStateFromPeers(): Promise; executeInContext(context: Context, method: () => any): Promise; protected log(level: 'debug' | 'info' | 'warn' | 'error', message: string, data?: any): void; protected saveState(): Promise; protected loadState(): Promise; protected importComponent(path: string): Promise; protected catchError(error: Error): void; }