import * as Shardus from '../shardus/shardus-types'; import Profiler from '../utils/profiler'; import { P2PModuleContext as P2P } from '../p2p/Context'; import Storage from '../storage'; import Crypto from '../crypto'; import Logger from '../logger'; import StateManager from '.'; import { Logger as Log4jsLogger } from 'log4js'; declare class AccountGlobals { app: Shardus.App; crypto: Crypto; config: Shardus.StrictServerConfiguration; profiler: Profiler; logger: Logger; p2p: P2P; storage: Storage; stateManager: StateManager; mainLogger: Log4jsLogger; fatalLogger: Log4jsLogger; shardLogger: Log4jsLogger; statsLogger: Log4jsLogger; statemanager_fatal: (key: string, log: string) => void; globalAccountSet: Set; hasknownGlobals: boolean; /** Need the ablity to get account copies and use them later when applying a transaction. how to use the right copy or even know when to use this at all? */ /** Could go by cycle number. if your cycle matches the one in is list use it? */ /** What if the global account is transformed several times durring that cycle. oof. */ /** ok best thing to do is to store the account every time it changes for a given period of time. */ /** how to handle reparing a global account... yikes that is hard. */ constructor(stateManager: StateManager, profiler: Profiler, app: Shardus.App, logger: Logger, storage: Storage, p2p: P2P, crypto: Crypto, config: Shardus.StrictServerConfiguration); setupHandlers(): void; /** * isGlobalAccount * is the account global * @param accountID */ isGlobalAccount(accountID: string): boolean; setGlobalAccount(accountID: string): void; /** * getGlobalListEarly * sync requires having knowlege of what accounts are global very early in the process. * This will get an early global report (note does not have account data, just id,hash,timestamp) */ getGlobalListEarly(syncFromArchiver?: boolean): Promise; getGlobalDebugReport(): { globalAccountSummary: { id: string; state: string; ts: number; }[]; globalStateHash: string; }; } export default AccountGlobals;