import * as Shardus from '../shardus/shardus-types'; import Profiler from '../utils/profiler'; import Crypto from '../crypto'; import Logger from '../logger'; import StateManager from '.'; import { AccountHashCache, AccountHashCacheMain3, CycleShardData, AccountHashCacheHistory, AccountHashCacheList } from './state-manager-types'; import { Logger as Log4jsLogger } from 'log4js'; declare class AccountCache { app: Shardus.App; crypto: Crypto; config: Shardus.StrictServerConfiguration; profiler: Profiler; logger: Logger; mainLogger: Log4jsLogger; fatalLogger: Log4jsLogger; shardLogger: Log4jsLogger; statsLogger: Log4jsLogger; accountsHashCache3: AccountHashCacheMain3; cacheUpdateQueue: AccountHashCacheList; statemanager_fatal: (key: string, log: string) => void; stateManager: StateManager; constructor(stateManager: StateManager, profiler: Profiler, app: Shardus.App, logger: Logger, crypto: Crypto, config: Shardus.StrictServerConfiguration); resetAccountCache(): void; /** * updateAccountHash * This takes an accountID, hash, timestamp and cycle and updates the cache. * if this is for a future cycle then the data goes into queue to get processed later in buildPartitionHashesForNode METHOD 3 More simple than method 2, but higher perf and some critical feature advantages over method 1 like the history working list and queue */ updateAccountHash(accountId: string, accountHash: string, timestamp: number, cycle: number): void; hasAccount(accountId: string): boolean; getAccountHash(accountId: string): AccountHashCache; sortByTimestampIdAsc(first: any, second: any): number; processCacheUpdates(cycleShardData: CycleShardData): void; getAccountDebugObject(id: string): AccountHashCacheHistory; getDebugStats(): [number, number]; getAccountHashHistoryItem(accountID: string): AccountHashCacheHistory; } export default AccountCache;