///
import { ArgsToData, ArgTypes, GetEntity, UUID } from "./arg_types";
import { AsyncSystem } from "./async_system";
import { Component } from "./component";
import { EcsEvent } from "./events";
import { Plugin } from "./plugin";
import { Resource } from "./resource";
import { System, SystemArgs } from "./system";
import { DefaultMap } from "./utils";
export declare const ChangeEvents: DefaultMap, EcsEvent>;
declare type Without = Pick>;
declare type ProvideArgs = Without, 'step' | 'events'> & {
provided: Component;
factory: (...args: ArgsToData) => Data;
update?: Iterable>;
};
export declare function Provide({ name, provided, update, factory, args, before, after }: ProvideArgs): System | undefined>, typeof GetEntity, import("nova_ecs/arg_modifier").ArgModifier | undefined>, ...Args]>;
declare type AsyncProviderData = Map>;
declare type ProvideAsyncArgs = Without, 'step' | 'events'> & {
provided: Component;
factory: (...args: ArgsToData) => Data | Promise;
update?: Iterable>;
onError?: (err: Error) => void;
};
export declare function ProvideAsync({ name, provided, update, factory, args, before, after, onError }: ProvideAsyncArgs): AsyncSystem | undefined>, Resource, typeof UUID, typeof GetEntity, import("nova_ecs/arg_modifier").ArgModifier | undefined>, ...Args]>;
export declare const ProvidePlugin: Plugin;
export {};