///
import { Component } from "./component";
import { Entity } from "./entity";
import { EntityMapWithEvents } from "./entity_map";
import { EcsEvent, UnknownEvent } from "./events";
import { SyncSubject } from "./event_map";
import { Plugin } from './plugin';
import { Resource } from "./resource";
import { ResourceMapWrapped } from "./resource_map";
import { System } from "./system";
export declare const SingletonComponent: Component;
interface WorldEventsMap extends ReadonlyMap> {
get(event: EcsEvent): SyncSubject;
has(event: EcsEvent): true;
}
export declare class World {
readonly name?: string | undefined;
readonly basePlugins: Set;
private readonly state;
readonly entities: EntityMapWithEvents;
readonly resources: ResourceMapWrapped;
private nameComponentMap;
private nameSystemMap;
private nameResourceMap;
private systems;
singletonEntity: Entity;
private eventQueue;
private queries;
readonly events: WorldEventsMap;
private pluginPromises;
readonly plugins: Set;
constructor(name?: string | undefined, basePlugins?: Set);
emitNow(event: EcsEvent, data: Data, entities?: (string | Entity)[]): void;
emit(event: EcsEvent, data: Data, entities?: (string | Entity)[]): void;
removeAllPlugins(): Promise;
addPlugin(plugin: Plugin): Promise;
removePlugin(plugin: Plugin): Promise;
addResource(resource: Resource): this;
private removeResource;
addSystem(system: System): this;
removeSystem(system: System): this;
addComponent(component: Component): void;
/**
* Flush the event queue.
*/
private flush;
private runEvent;
step(): void;
private getArg;
private runQuery;
toString(): string;
}
export {};