/// <reference types="node" />
import { VMProtocolSettingsIn, VMProtocolSettingsReturn } from '@neo-one/node-core';
import { ApplicationEngine, CreateOptions } from './ApplicationEngine';
import { BaseMethods, EngineMethods, SnapshotMethods, TestMethods } from './Methods';
import { SnapshotHandler } from './SnapshotHandler';
import { DispatcherFunc } from './types';
export interface DispatcherMethods extends BaseMethods, SnapshotMethods, EngineMethods, TestMethods {
}
export declare const createDispatcher: () => DispatcherFunc<DispatcherMethods>;
export interface DispatcherOptions {
    readonly levelDBPath?: string;
    readonly protocolSettings?: VMProtocolSettingsIn;
}
export declare class Dispatcher {
    readonly init: boolean;
    readonly dispatch: DispatcherFunc<DispatcherMethods>;
    readonly options: DispatcherOptions;
    constructor(options?: DispatcherOptions);
    withSnapshots<T = void>(func: (snapshots: {
        readonly main: SnapshotHandler;
        readonly clone: Omit<SnapshotHandler, 'clone'>;
    }) => T): T;
    withApplicationEngine<T = void>(options: CreateOptions, func: (engine: Omit<ApplicationEngine, 'create'>) => T): T;
    disposeEngine(): void;
    updateSnapshots(): void;
    dispose(): void;
    reset(): void;
    getConfig(): VMProtocolSettingsReturn;
    updateSnapshot(key: Buffer, id: number, value: Buffer): boolean;
    readSnapshot(key: Buffer, id: number): Buffer | undefined;
    updateStore(storage: ReadonlyArray<{
        readonly key: Buffer;
        readonly value: Buffer;
    }>): void;
    readStore(key: Buffer): Buffer;
    test(): any;
    private initialize;
}
