import { ActorModelOptionalFunctionNames, } from './ActorModelOptionalFunctionNames'; import { IActorModel, } from './IActorModel'; import { IModel, } from './IModel'; import { ModelType, } from './ModelType'; import { OnticTypes, } from '../ontology/OnticTypes'; export interface IActorModelOptionalFunctions< Being extends OnticTypes, Knowledge extends ModelType, > { readonly [ActorModelOptionalFunctionNames.Act]?: ( self: IActorModel, target: IModel, ) => void; readonly [ActorModelOptionalFunctionNames.CanAct]?: ( self: IActorModel, ) => boolean; readonly [ActorModelOptionalFunctionNames.CanActOn]?: ( self: IActorModel, target: IModel, ) => boolean; readonly [ActorModelOptionalFunctionNames.GetActionTargets]?: ( self: IActorModel, ) => readonly IModel[]; readonly [ActorModelOptionalFunctionNames.SelectActionTarget]?: ( self: IActorModel, targets: IModel | readonly IModel[], ) => IModel; readonly [ActorModelOptionalFunctionNames.WillAct]?: ( self: IActorModel, ) => boolean; }