import { IModelState } from "./IModelState"; import { ILocalOperationData, IServerOperationData } from "./IModelOperationData"; import { IModelCreationData } from "./IModelCreationData"; import { IModelUpdate } from "./IModelUpdate"; import { IModelMetaData } from "./IModelMetaData"; import { IObjectValue } from "../../model"; export interface IModelStore { initiateModelCreation(modelCreationData: IModelCreationData): Promise; completeModelCreation(modelId: string): Promise; getModelCreationData(modelId: string): Promise; initiateModelDeletion(modelId: string): Promise; completeModelDeletion(modelId: string): Promise; deleteModels(modelId: string[]): Promise; getModelState(modelId: string): Promise; setModelState(modelState: IModelState): Promise; modelMetaDataExists(modelId: string): Promise; getModelMetaData(modelId: string): Promise; getAllModelMetaData(): Promise; getModelsRequiringSync(): Promise; getSubscribedModels(): Promise; updateSubscriptions(subscribe: string[], unsubscribe: string[]): Promise; processOfflineModelUpdate(update: IModelUpdate): Promise; processServerOperation(serverOp: IServerOperationData, localOps: ILocalOperationData[]): Promise; processLocalOperation(localOp: ILocalOperationData): Promise; processOperationAck(modelId: string, seqNo: number, serverOp: IServerOperationData): Promise; snapshotModel(modelId: string, version: number, sequenceNumber: number, modelData: IObjectValue): Promise; claimValueIdPrefix(modelId: string): Promise<{ prefix: string; increment: number; }>; }