/// import { EventEmitter } from 'events'; import { ChangePlantBlueprint, ChangePlantProcessingResultWithClock, IChangePlantBlueprintGenericParams, IContext, IRPCDefinition, ISyncable, ISyncableAdapter, ISyncableObject, IViewQuery, RefDictToSyncableObjectDict, ViewQueryFilter, ViewQueryUpdateObject } from '@syncable/core'; import { Dict, OmitValueOfKey } from 'tslang'; import { IServerAdapter } from './server-adapter'; export interface LoadOptions { context?: IContext; loadRequisiteDependencyOnly?: boolean; } export interface LoadSyncablesByRefsOptions { loadedKeySet?: Set; changeType?: string; loadRequisiteDependencyOnly?: boolean; skipReadableFilter?: boolean; } export interface LoadDependentSyncablesOptions { loadedKeySet?: Set; changeType?: string; requisiteOnly?: boolean; skipReadableFilter?: boolean; } export interface IServerGenericParams extends IChangePlantBlueprintGenericParams { syncableObject: ISyncableObject; viewQueryDict: object; customClientRPCDefinition: IRPCDefinition; } export declare type SyncableTypeToSyncableObjectsDict = { [TKey in TSyncableObject['ref']['type']]?: Extract[]; }; export interface ViewQueryInfo { filter: ViewQueryFilter; query: IViewQuery; } export interface ServerApplyChangeResult extends OmitValueOfKey { subsequent?: Promise[]; } export declare class Server extends EventEmitter { private context; private serverAdapter; private syncableAdapter; private groupToConnectionSetMap; private changePlant; constructor( /** * Non-user context for server-side initiated changes. */ context: TGenericParams['context'], serverAdapter: IServerAdapter, syncableAdapter: ISyncableAdapter, blueprint: ChangePlantBlueprint); load(group: string, refDict: TRefDict, { context, loadRequisiteDependencyOnly, }?: LoadOptions): Promise>; query(group: string, update: ViewQueryUpdateObject): Promise>; applyChange(group: string, change: TGenericParams['change'], context?: IContext>, Dict>): Promise; protected log(event: string, data: object): void; private onConnection; private onBroadcast; private addConnection; private removeConnection; private broadcastChangeResult; }