import { TriggerType, VMState } from '@neo-one/client-common';
import { Block, LoadContractOptions, LoadScriptOptions, SerializableContainer, SnapshotName, VMProtocolSettingsIn } from '@neo-one/node-core';
import BN from 'bn.js';
import { EngineMethods } from './Methods';
import { DispatcherFunc } from './types';
export interface CreateOptions {
    readonly trigger: TriggerType;
    readonly container?: SerializableContainer;
    readonly snapshot?: SnapshotName;
    readonly persistingBlock?: Block;
    readonly gas: BN;
    readonly settings: VMProtocolSettingsIn;
}
interface ApplicationEngineDispatcher {
    readonly dispatch: DispatcherFunc<EngineMethods>;
}
export declare class ApplicationEngine {
    private readonly dispatch;
    constructor(dispatcher: ApplicationEngineDispatcher);
    get trigger(): TriggerType;
    get gasConsumed(): BN;
    get state(): VMState;
    get resultStack(): readonly import("@neo-one/node-core").StackItem[];
    get notifications(): readonly import("@neo-one/node-core").StackItem[];
    get logs(): import("@neo-one/node-core").VMLog[];
    get faultException(): string | undefined;
    create({ trigger, container, persistingBlock, gas, snapshot, settings }: CreateOptions): boolean;
    execute(): VMState;
    loadScript({ script, rvcount, flags, scriptHash, initialPosition }: LoadScriptOptions): boolean;
    push(item: string): boolean;
    loadContract({ hash, method, pcount, flags }: LoadContractOptions): boolean;
    checkScript(): any;
}
export {};
