///
///
import { EventEmitter } from 'events';
import { StateDB, Database } from '@liskhq/lisk-db';
import { ABI, InitStateMachineRequest, InitStateMachineResponse, InitGenesisStateRequest, InitGenesisStateResponse, InsertAssetsRequest, InsertAssetsResponse, VerifyAssetsRequest, VerifyAssetsResponse, BeforeTransactionsExecuteRequest, BeforeTransactionsExecuteResponse, AfterTransactionsExecuteRequest, AfterTransactionsExecuteResponse, VerifyTransactionRequest, VerifyTransactionResponse, ExecuteTransactionRequest, ExecuteTransactionResponse, CommitRequest, CommitResponse, RevertRequest, RevertResponse, ClearRequest, ClearResponse, FinalizeRequest, FinalizeResponse, MetadataRequest, MetadataResponse, QueryRequest, QueryResponse, ProveRequest, ProveResponse, InitRequest, InitResponse } from '../abi';
import { Logger } from '../logger';
import { BaseModule } from '../modules';
import { StateMachine } from '../state_machine';
import { ApplicationConfig } from '../types';
import { BaseChannel } from '../controller/channels';
export interface ABIHandlerConstructor {
config: ApplicationConfig;
logger: Logger;
stateMachine: StateMachine;
stateDB: StateDB;
moduleDB: Database;
modules: BaseModule[];
channel: BaseChannel;
chainID: Buffer;
}
export declare const EVENT_ENGINE_READY = "EVENT_ENGINE_READY";
export declare class ABIHandler implements ABI {
readonly event: EventEmitter;
private readonly _logger;
private readonly _stateMachine;
private readonly _stateDB;
private readonly _moduleDB;
private readonly _modules;
private readonly _channel;
private readonly _config;
private _executionContext;
private _chainID?;
private _cachedGenesisState;
constructor(args: ABIHandlerConstructor);
get chainID(): Buffer;
cacheGenesisState(): Promise;
init(req: InitRequest): Promise;
initStateMachine(req: InitStateMachineRequest): Promise;
initGenesisState(req: InitGenesisStateRequest): Promise;
insertAssets(req: InsertAssetsRequest): Promise;
verifyAssets(req: VerifyAssetsRequest): Promise;
beforeTransactionsExecute(req: BeforeTransactionsExecuteRequest): Promise;
afterTransactionsExecute(req: AfterTransactionsExecuteRequest): Promise;
verifyTransaction(req: VerifyTransactionRequest): Promise;
executeTransaction(req: ExecuteTransactionRequest): Promise;
commit(req: CommitRequest): Promise;
revert(req: RevertRequest): Promise;
clear(_req: ClearRequest): Promise;
finalize(req: FinalizeRequest): Promise;
getMetadata(_req: MetadataRequest): Promise;
query(req: QueryRequest): Promise;
prove(req: ProveRequest): Promise;
}