import { TransactionExecutionResult } from '../abi';
import { Logger } from '../logger';
import { BaseModule } from '../modules';
import { GenesisConfig } from '../types';
import { BlockContext } from './block_context';
import { GenerationContext } from './generator_context';
import { GenesisBlockContext } from './genesis_block_context';
import { TransactionContext } from './transaction_context';
import { VerificationResult } from './types';
export declare class StateMachine {
    private readonly _modules;
    private _logger;
    private _initialized;
    registerModule(mod: BaseModule): void;
    init(logger: Logger, genesisConfig: GenesisConfig, moduleConfig?: Record<string, Record<string, unknown>>): Promise<void>;
    executeGenesisBlock(ctx: GenesisBlockContext): Promise<void>;
    insertAssets(ctx: GenerationContext): Promise<void>;
    verifyTransaction(ctx: TransactionContext, onlyCommand?: boolean): Promise<VerificationResult>;
    executeTransaction(ctx: TransactionContext): Promise<TransactionExecutionResult>;
    verifyAssets(ctx: BlockContext): Promise<void>;
    beforeTransactionsExecute(ctx: BlockContext): Promise<void>;
    afterExecuteBlock(ctx: BlockContext): Promise<void>;
    private _findModule;
    private _getCommand;
    private _validateExisting;
}
