import { EpistemicTypes, } from '../epistemology/EpistemicTypes'; import { IFindBaseArgs, FindThoughtArgs, } from '../querying/FindModelArgs'; import { IModel, } from '../models/IModel'; import { IRelation, } from './IRelation'; import { ISerializedThoughtRelation, } from './ISerializedThoughtRelation'; import { ModelType, } from '../models/ModelType'; import { OnticTypes, } from '../ontology/OnticTypes'; export interface IThoughtRelation< Type extends EpistemicTypes | ModelType.Thought, Knowledge extends ModelType, > extends IRelation { readonly knowledge: readonly IModel[]; readonly modelType: Type; readonly wants: readonly IModel[]; readonly addKnowledge: ( model: IModel, ) => void; readonly addWant: ( model: IModel, ) => void; readonly find: ( args: string | IFindBaseArgs & FindThoughtArgs, ) => IModel | null; readonly findAll: ( args: '*' | IFindBaseArgs & FindThoughtArgs, ) => readonly IModel[]; readonly findAllGenerator: ( args: '*' | IFindBaseArgs & FindThoughtArgs, ) => IterableIterator>; readonly removeKnowledge: ( model: IModel, ) => void; readonly removeWant: ( model: IModel, ) => void; readonly serializeToObject: ( self: IThoughtRelation, ) => ISerializedThoughtRelation; }