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<string>;
    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<void>;
    getGlobalDebugReport(): {
        globalAccountSummary: {
            id: string;
            state: string;
            ts: number;
        }[];
        globalStateHash: string;
    };
}
export default AccountGlobals;
