///
import { Either } from "fp-ts/Either";
import { ArgsToData, ArgTypes, QueryResults } from "./arg_types";
import { Entity } from "./entity";
import { EntityMapWithEvents } from "./entity_map";
import { EcsEvent } from "./events";
import { Query } from "./query";
import { ResourceMapWrapped } from "./resource_map";
import { DefaultMap } from "./utils";
import { World } from "./world";
interface QueryCacheEntry {
readonly valid: boolean;
unsubscribe: () => void;
getResultForEntity(entity: Entity, event?: readonly [EcsEvent, unknown]): Either>;
getResult(args?: {
entities?: Iterable;
event?: readonly [EcsEvent, unknown];
}): QueryResults>;
}
declare type QueryArgsList = readonly ArgTypes[];
export declare class QueryCache extends DefaultMap {
constructor(entities: EntityMapWithEvents, resources: ResourceMapWrapped, getArg: World['getArg']);
get(query: Query): QueryCacheEntry;
set(query: Query, entry: QueryCacheEntry): this;
has(query: Query): boolean;
delete(query: Query): boolean;
}
export {};