import { Module } from "./Module"; import { ECSContext } from "../core/ecs"; import * as THREE from "three"; import { Effect, ActionEffect, EffectBase, EffectType } from "../core/schema"; export type EffectContext = { hitPosition?: THREE.Vector3; }; type EffectResolutionContext = { self: number; other?: number; user?: number; }; export interface EffectResolved { apply: (actor: number | undefined, target?: number, context?: EffectContext, resolutionContext?: EffectResolutionContext) => boolean; } export declare const RUNTIME_EFFECT_TYPES: EffectType[]; declare class EffectModule extends Module { constructor(ctx: ECSContext); } export declare function applyEffect(ctx: ECSContext, effect: Effect, self: number, other?: number, context?: EffectContext, user?: number): boolean; export declare function applyActionEffect(ctx: ECSContext, effect: ActionEffect, self: number, user: number, other?: number, context?: EffectContext): boolean; export declare function applyEffects(ctx: ECSContext, effects: Effect[], self: number, other?: number): boolean; export declare function applyEffectWithRange(ctx: ECSContext, effect: Effect & { range?: number; }, self: number, other?: number, actualRange?: number, user?: number): boolean; export declare const effectModule: (ctx: ECSContext) => EffectModule; export {}; //# sourceMappingURL=effect.d.ts.map