/// <reference types="node" />
import { EventEmitter } from 'events';
import { Block, Chain, StateStore, BlockHeader } from '@liskhq/lisk-chain';
import { Database } from '@liskhq/lisk-db';
import { Logger } from '../../logger';
import { Network } from '../network';
import { GenesisConfig, SystemConfig } from '../../types';
import { AggregateCommit } from './types';
import { ValidatorInfo } from './certificate_generation/types';
import { BFTModule } from '../bft';
import { ABI } from '../../abi';
interface ConsensusArgs {
    chain: Chain;
    network: Network;
    genesisConfig: GenesisConfig;
    systemConfig: SystemConfig;
    abi: ABI;
    bft: BFTModule;
}
interface InitArgs {
    logger: Logger;
    genesisBlock: Block;
    db: Database;
    legacyDB: Database;
}
export declare class Consensus {
    readonly events: EventEmitter;
    private readonly _abi;
    private readonly _chain;
    private readonly _network;
    private readonly _mutex;
    private readonly _bft;
    private readonly _genesisConfig;
    private readonly _systemConfig;
    private readonly _inclusionProofKeys;
    private _logger;
    private _db;
    private _commitPool;
    private _endpoint;
    private _legacyEndpoint;
    private _synchronizer;
    private readonly _metrics;
    private _stop;
    constructor(args: ConsensusArgs);
    init(args: InitArgs): Promise<void>;
    syncing(): boolean;
    finalizedHeight(): number;
    onBlockReceive(data: unknown, peerId: string): Promise<void>;
    execute(block: Block): Promise<void>;
    start(): Promise<void>;
    stop(): Promise<void>;
    getAggregateCommit(methodContext: StateStore): Promise<AggregateCommit>;
    certifySingleCommit(blockHeader: BlockHeader, validatorInfo: ValidatorInfo): void;
    isSynced(height: number, maxHeightPrevoted: number): boolean;
    getMaxRemovalHeight(): Promise<number>;
    private _execute;
    private _executeValidated;
    private _verify;
    private _verifyTimestamp;
    private _verifyPreviousBlockID;
    private _verifyBlockHeight;
    private _verifyGeneratorAddress;
    private _verifyBFTProperties;
    private _verifyBlockSignature;
    private _verifyAggregateCommit;
    private _verifyValidatorsHash;
    private _verifyEventRoot;
    private _deleteBlock;
    private _deleteLastBlock;
    private _sync;
    private _createBlockExecutor;
    private _verifyAssets;
    private _executeBlock;
    private _commitBlock;
    private _executeGenesisBlock;
}
export {};
