import { IActorModelOptionalFunctions, } from './IActorModelOptionalFunctions'; import { IEpistemology, } from '../epistemology/IEpistemology'; import { ILocationModel, } from './ILocationModel'; import { IModel, } from './IModel'; import { IObjectModel, } from './IObjectModel'; import { IOntology, } from '../ontology/IOntology'; import { ModelType, } from './ModelType'; import { OnticTypes, } from '../ontology/OnticTypes'; export interface IActorModel< Being extends OnticTypes, Knowledge extends ModelType, > extends IModel, Partial> { readonly being: IOntology; readonly knowledge: IEpistemology; readonly type: ModelType.Actor; readonly drop: ( self: IActorModel, target: IObjectModel, ) => void; readonly move: ( self: IActorModel, destination: ILocationModel, ) => void; readonly observe: ( self: IActorModel, target: IModel, ) => void; readonly take: ( self: IActorModel, target: IObjectModel, ) => void; readonly unobserve: ( self: IActorModel, target: IModel, ) => void; readonly unwant: ( self: IActorModel, target: IModel, ) => void; readonly want: ( self: IActorModel, target: IModel, ) => void; }