/// <reference types="node" />
import { EventEmitter } from 'events';
import { Chain, Block, Transaction } from '@liskhq/lisk-chain';
import { Database } from '@liskhq/lisk-db';
import { TransactionPool } from '@liskhq/lisk-transaction-pool';
import { Logger } from '../../logger';
import { EngineConfig } from '../../types';
import { Network } from '../network';
import { Broadcaster } from './broadcaster';
import { Endpoint } from './endpoint';
import { Consensus, BlockGenerateInput } from './types';
import { ABI } from '../../abi';
import { BFTModule } from '../bft';
interface GeneratorArgs {
    config: EngineConfig;
    chain: Chain;
    consensus: Consensus;
    bft: BFTModule;
    abi: ABI;
    network: Network;
}
interface GeneratorInitArgs {
    generatorDB: Database;
    blockchainDB: Database;
    logger: Logger;
    genesisHeight: number;
}
export declare class Generator {
    readonly events: EventEmitter;
    private readonly _pool;
    private readonly _config;
    private readonly _chain;
    private readonly _consensus;
    private readonly _bft;
    private readonly _abi;
    private readonly _network;
    private readonly _endpoint;
    private readonly _networkEndpoint;
    private readonly _generationJob;
    private readonly _keypairs;
    private readonly _broadcaster;
    private readonly _forgingStrategy;
    private readonly _blockTime;
    private readonly _metrics;
    private _logger;
    private _generatorDB;
    private _blockchainDB;
    private _genesisHeight;
    private _singleCommitHandler;
    constructor(args: GeneratorArgs);
    init(args: GeneratorInitArgs): Promise<void>;
    get endpoint(): Endpoint;
    get txpool(): TransactionPool;
    get broadcaster(): Broadcaster;
    start(): Promise<void>;
    stop(): Promise<void>;
    onNewBlock(block: Block): void;
    getPooledTransactions(): Transaction[];
    onDeleteBlock(block: Block): void;
    generateBlock(input: BlockGenerateInput): Promise<Block>;
    _loadTransactionsFromNetwork(): Promise<void>;
    private _verifyTransaction;
    private _saveKeysFromFile;
    private _loadGenerators;
    private _getUnconfirmedTransactionsFromNetwork;
    private _generateLoop;
    private _generateBlock;
    private _executeTransactions;
}
export {};
