///
import { EntityToJson } from "./EntityToJson";
import { IDisposable } from "../../Types/Contracts";
import { SessionInfo, ConcurrencyCheckMode, StoreOptions } from "./IDocumentSession";
import { IMetadataDictionary } from "./IMetadataDictionary";
import { ObjectTypeDescriptor, ServerResponse } from "../../Types";
import { SessionEventsEmitter } from "./SessionEvents";
import { RequestExecutor } from "../../Http/RequestExecutor";
import { IDocumentStore } from "../IDocumentStore";
import { ServerNode } from "../../Http/ServerNode";
import { DocumentsById, EntityInfo } from "./DocumentsById";
import { DocumentInfo } from "./DocumentInfo";
import { DocumentStoreBase } from "../DocumentStoreBase";
import { ICommandData, SaveChangesData } from "../Commands/CommandData";
import { GenerateEntityIdOnTheClient } from "../Identity/GenerateEntityIdOnTheClient";
import { DocumentType } from "../DocumentAbstractions";
import { DocumentsChanges } from "./DocumentsChanges";
import { EventEmitter } from "events";
import { IRavenObject } from "../../Types/IRavenObject";
import { GetDocumentsCommand } from "../Commands/GetDocumentsCommand";
import { DocumentConventions } from "../Conventions/DocumentConventions";
import { JsonSerializer } from "../../Mapping/Json/Serializer";
import { OperationExecutor } from "../Operations/OperationExecutor";
import { IndexBatchOptions, ReplicationBatchOptions } from "./IAdvancedSessionOperations";
import { ILazyOperation } from "./Operations/Lazy/ILazyOperation";
import { TransactionMode } from "./TransactionMode";
import { CounterTracking } from "./CounterInternalTypes";
import { DocumentStore } from "../DocumentStore";
import { SessionOptions } from "./SessionOptions";
import { ClusterTransactionOperationsBase } from "./ClusterTransactionOperationsBase";
import { BatchCommandResult } from "./Operations/BatchCommandResult";
import { Reference } from "../../Utility/Reference";
import { ForceRevisionStrategy } from "./ForceRevisionStrategy";
import { TimeSeriesRangeResult } from "../Operations/TimeSeries/TimeSeriesRangeResult";
import { TimeSeriesEntry } from "./TimeSeries/TimeSeriesEntry";
export declare abstract class InMemoryDocumentSessionOperations extends EventEmitter implements IDisposable, SessionEventsEmitter {
protected _requestExecutor: RequestExecutor;
private _operationExecutor;
protected _pendingLazyOperations: ILazyOperation[];
protected static _instancesCounter: number;
private _hash;
private _disposed;
protected _jsonSerializer: JsonSerializer;
private readonly _id;
get id(): string;
protected _knownMissingIds: Set;
private _externalState;
disableAtomicDocumentWritesInClusterWideTransaction: boolean;
private _transactionMode;
get externalState(): Map;
getCurrentSessionNode(): Promise;
documentsById: DocumentsById;
get countersByDocId(): Map;
private _countersByDocId;
private _timeSeriesByDocId;
get timeSeriesByDocId(): Map>;
readonly noTracking: boolean;
idsForCreatingForcedRevisions: Map;
includedDocumentsById: Map;
includeRevisionsByChangeVector: Map;
includeRevisionsIdByDateTimeBefore: Map>;
documentsByEntity: DocumentsByEntityHolder;
deletedEntities: DeletedEntitiesHolder;
protected _documentStore: DocumentStoreBase;
private readonly _databaseName;
private _saveChangesOptions;
get databaseName(): string;
get documentStore(): IDocumentStore;
get requestExecutor(): RequestExecutor;
get sessionInfo(): SessionInfo;
get operations(): OperationExecutor;
private _numberOfRequests;
get numberOfRequests(): number;
getNumberOfEntitiesInUnitOfWork(): number;
get storeIdentifier(): string;
get conventions(): DocumentConventions;
maxNumberOfRequestsPerSession: number;
useOptimisticConcurrency: boolean;
protected _deferredCommands: ICommandData[];
deferredCommandsMap: Map;
get deferredCommands(): ICommandData[];
get deferredCommandsCount(): number;
private readonly _generateEntityIdOnTheClient;
get generateEntityIdOnTheClient(): GenerateEntityIdOnTheClient;
private readonly _entityToJson;
get entityToJson(): EntityToJson;
protected _sessionInfo: SessionInfo;
protected constructor(documentStore: DocumentStore, id: string, options: SessionOptions);
protected abstract _generateId(entity: object): Promise;
getMetadataFor(instance: T): IMetadataDictionary;
getCountersFor(instance: T): string[];
getTimeSeriesFor(instance: T): string[];
private _makeMetadataInstance;
private _getDocumentInfo;
protected _assertNoNonUniqueInstance(entity: object, id: string): void;
getChangeVectorFor(instance: T): string;
getLastModifiedFor(instance: T): Date;
isLoaded(id: string): boolean;
isLoadedOrDeleted(id: string): boolean;
isDeleted(id: string): boolean;
getDocumentId(instance: object): string;
incrementRequestCount(): void;
checkIfAllChangeVectorsAreAlreadyIncluded(changeVectors: string[]): boolean;
checkIfRevisionByDateTimeBeforeAlreadyIncluded(id: string, dateTime: Date): boolean;
checkIfIdAlreadyIncluded(ids: string[], includes: string[]): boolean;
trackEntity(entityType: ObjectTypeDescriptor, documentFound: DocumentInfo): T;
trackEntity(entityType: ObjectTypeDescriptor, id: string, document: object, metadata: object, noTracking: boolean): object;
registerExternalLoadedIntoTheSession(info: DocumentInfo): void;
private _deserializeFromTransformer;
registerIncludes(includes: object): void;
registerRevisionIncludes(revisionIncludes: any[]): void;
registerMissingIncludes(results: object[], includes: object, includePaths: string[]): void;
registerMissing(idOrIds: string | string[]): void;
unregisterMissing(id: string): void;
registerCounters(resultCounters: object, countersToInclude: {
[key: string]: string[];
}): void;
registerCounters(resultCounters: object, ids: string[], countersToInclude: string[], gotAll: boolean): void;
private _registerCountersWithIdsList;
private _registerCountersWithCountersToIncludeObj;
private _registerCountersInternal;
private _registerCountersForDocument;
private _setGotAllInCacheIfNeeded;
private _setGotAllCountersForDocument;
private _registerMissingCounters;
registerTimeSeries(resultTimeSeries: Record[]>>): void;
private static _addToCache;
static addToCache(timeseries: string, from: Date, to: Date, fromRangeIndex: number, toRangeIndex: number, ranges: TimeSeriesRangeResult[], cache: Map, values: TimeSeriesEntry[]): void;
private static _parseTimeSeriesRangeResult;
private static _mergeRanges;
private static _updateExistingRange;
private _registerMissingCountersWithCountersToIncludeObj;
private _registerMissingCountersWithIdsList;
store(entity: TEntity): Promise;
store(entity: TEntity, id?: string): Promise;
store(entity: TEntity, id?: string, documentType?: DocumentType): Promise;
store(entity: TEntity, id?: string, options?: StoreOptions): Promise;
protected _generateDocumentKeysOnStore: boolean;
private _storeInternal;
protected _storeEntityInUnitOfWork(id: string, entity: object, changeVector: string, metadata: object, forceConcurrencyCheck: ConcurrencyCheckMode, documentType: DocumentType): void;
protected _rememberEntityForDocumentIdGeneration(entity: object): void;
prepareForSaveChanges(): SaveChangesData;
validateClusterTransaction(result: SaveChangesData): void;
protected _updateSessionAfterSaveChanges(result: BatchCommandResult): void;
onBeforeConversionToDocumentInvoke(id: string, entity: object): void;
onAfterConversionToDocumentInvoke(id: string, entity: object, document: Reference