import { Chain, Block } from '@liskhq/lisk-chain';
import { BaseSynchronizer } from './base_synchronizer';
import { Logger } from '../../../logger';
import { BlockExecutor } from './type';
import { Network } from '../../network';
interface FastChainSwitchingMechanismInput {
    readonly logger: Logger;
    readonly chain: Chain;
    readonly blockExecutor: BlockExecutor;
    readonly network: Network;
}
export declare class FastChainSwitchingMechanism extends BaseSynchronizer {
    private readonly blockExecutor;
    constructor({ logger, chain, blockExecutor, network }: FastChainSwitchingMechanismInput);
    run(receivedBlock: Block, peerId: string): Promise<void>;
    isValidFor(receivedBlock: Block, peerId: string): Promise<boolean>;
    private _requestBlocksWithinIDs;
    private _queryBlocks;
    private _validateBlocks;
    private _applyBlocks;
    private _handleBlockProcessingFailure;
    private _switchChain;
    private _computeLastTwoRoundsHeights;
    private _requestLastCommonBlock;
}
export {};
