import { AwareTypes, } from './AwareTypes'; import { EpistemicTypes, } from '../epistemology/EpistemicTypes'; import { FindAwarenessArgs, IFindBaseArgs, } from '../querying/FindModelArgs'; import { IModel, } from '../models/IModel'; import { IRelation, } from './IRelation'; import { ISerializedAwarenessRelation, } from './ISerializedAwarenessRelation'; import { ModelType, } from '../models/ModelType'; import { OnticTypes, } from '../ontology/OnticTypes'; export interface IAwarenessRelation< Type extends EpistemicTypes & OnticTypes, Knowledge extends ModelType, > extends IRelation { readonly perceptions: readonly IModel[]; readonly addPerception: ( model: IModel, ) => void; readonly clone: ( self: IAwarenessRelation, ) => IAwarenessRelation; readonly destroy: ( self: IAwarenessRelation, ) => void; readonly find: ( args: string | IFindBaseArgs & FindAwarenessArgs, ) => IModel | null; readonly findAll: ( args: '*' | IFindBaseArgs & FindAwarenessArgs, ) => readonly IModel[]; readonly findAllGenerator: ( args: '*' | IFindBaseArgs & FindAwarenessArgs, ) => IterableIterator>; readonly removePerception: ( tag: IModel, ) => void; readonly serializeToObject: ( self: IAwarenessRelation, ) => ISerializedAwarenessRelation; }