import * as Shardus from '../shardus/shardus-types';
import { StateManager as StateManagerTypes } from '@shardeum-foundation/lib-types';
import { SimpleRange, QueueEntry } from './state-manager-types';
import AccountSync from './AccountSync';
import { P2PModuleContext as P2P } from '../p2p/Context';
import { SyncTrackerInterface } from './NodeSyncTracker';
import ArchiverDataSourceHelper from './ArchiverDataSourceHelper';
export default class ArchiverSyncTracker implements SyncTrackerInterface {
    accountSync: AccountSync;
    p2p: P2P;
    syncStarted: boolean;
    syncFinished: boolean;
    range: StateManagerTypes.shardFunctionTypes.BasicAddressRange;
    cycle: number;
    index: number;
    queueEntries: QueueEntry[];
    isGlobalSyncTracker: boolean;
    globalAddressMap: {
        [address: string]: boolean;
    };
    isPartOfInitialSync: boolean;
    keys: {
        [address: string]: boolean;
    };
    archiverDataSourceHelper: ArchiverDataSourceHelper;
    currentRange: SimpleRange;
    addressRange: SimpleRange;
    combinedAccountData: Shardus.WrappedData[];
    accountsWithStateConflict: Shardus.WrappedData[];
    failedAccounts: string[];
    missingAccountData: string[];
    mapAccountData: {
        [accountID: string]: Shardus.WrappedData;
    };
    combinedAccountStateData: Shardus.StateTableObject[];
    partitionStartTimeStamp: number;
    restartCount: number;
    reset(): void;
    initByRange(accountSync: AccountSync, p2p: P2P, index: number, range: StateManagerTypes.shardFunctionTypes.BasicAddressRange, cycle: number, initalSync?: boolean): void;
    initGlobal(accountSync: AccountSync, p2p: P2P, index: number, cycle: number, initalSync?: boolean): void;
    /***
     *     ######  ##    ## ##    ##  ######   ######  ########    ###    ######## ######## ########     ###    ########    ###    ########  #######  ########  ########     ###    ##    ##  ######   ########
     *    ##    ##  ##  ##  ###   ## ##    ## ##    ##    ##      ## ##      ##    ##       ##     ##   ## ##      ##      ## ##   ##       ##     ## ##     ## ##     ##   ## ##   ###   ## ##    ##  ##
     *    ##         ####   ####  ## ##       ##          ##     ##   ##     ##    ##       ##     ##  ##   ##     ##     ##   ##  ##       ##     ## ##     ## ##     ##  ##   ##  ####  ## ##        ##
     *     ######     ##    ## ## ## ##        ######     ##    ##     ##    ##    ######   ##     ## ##     ##    ##    ##     ## ######   ##     ## ########  ########  ##     ## ## ## ## ##   #### ######
     *          ##    ##    ##  #### ##             ##    ##    #########    ##    ##       ##     ## #########    ##    ######### ##       ##     ## ##   ##   ##   ##   ######### ##  #### ##    ##  ##
     *    ##    ##    ##    ##   ### ##    ## ##    ##    ##    ##     ##    ##    ##       ##     ## ##     ##    ##    ##     ## ##       ##     ## ##    ##  ##    ##  ##     ## ##   ### ##    ##  ##
     *     ######     ##    ##    ##  ######   ######     ##    ##     ##    ##    ######## ########  ##     ##    ##    ##     ## ##        #######  ##     ## ##     ## ##     ## ##    ##  ######   ########
     */
    syncStateDataForRange2(): Promise<void>;
    /***
     *     ######  ##    ## ##    ##  ######   ######  ########    ###    ######## ######## ########     ###    ########    ###     ######   ##        #######  ########     ###    ##        ######
     *    ##    ##  ##  ##  ###   ## ##    ## ##    ##    ##      ## ##      ##    ##       ##     ##   ## ##      ##      ## ##   ##    ##  ##       ##     ## ##     ##   ## ##   ##       ##    ##
     *    ##         ####   ####  ## ##       ##          ##     ##   ##     ##    ##       ##     ##  ##   ##     ##     ##   ##  ##        ##       ##     ## ##     ##  ##   ##  ##       ##
     *     ######     ##    ## ## ## ##        ######     ##    ##     ##    ##    ######   ##     ## ##     ##    ##    ##     ## ##   #### ##       ##     ## ########  ##     ## ##        ######
     *          ##    ##    ##  #### ##             ##    ##    #########    ##    ##       ##     ## #########    ##    ######### ##    ##  ##       ##     ## ##     ## ######### ##             ##
     *    ##    ##    ##    ##   ### ##    ## ##    ##    ##    ##     ##    ##    ##       ##     ## ##     ##    ##    ##     ## ##    ##  ##       ##     ## ##     ## ##     ## ##       ##    ##
     *     ######     ##    ##    ##  ######   ######     ##    ##     ##    ##    ######## ########  ##     ##    ##    ##     ##  ######   ########  #######  ########  ##     ## ########  ######
     */
    /**
     * syncStateDataGlobals
     * @param syncTracker
     */
    syncStateDataGlobals(): Promise<void>;
    syncAccountData2(lowAddress: string, highAddress: string): Promise<number>;
    processAccountDataNoStateTable2(): Promise<number>;
    tryRetry(message: string): Promise<boolean>;
}
