///
import { Uint256 } from '../common/uint256';
import { LedgerStore } from '../core/ledgerStore';
import { StateStore } from '../core/state/stateStore';
import { Transaction } from '../core/transaction';
import { LogCallback, LogEventInfo, NotificationCallback, NotifyEventInfo } from '../event/notifyEvents';
import { ExecutionEngine } from '../vm/interfaces/engine';
import { StackItem } from '../vm/types/stackItem';
import { ContextRef, InvokeOptions, VmService } from './context';
interface NeoVmServiceOptions {
store: LedgerStore;
stateStore: StateStore;
contextRef: ContextRef;
code: Buffer;
tx: Transaction;
time: number;
randomHash: Uint256;
engine: ExecutionEngine;
notificationCallback?: NotificationCallback;
logCallback?: LogCallback;
}
export declare class NeoVmService implements VmService {
private store;
private stateStore;
private contextRef;
private notifications;
private logs;
private code;
private tx;
private time;
private randomHash;
private engine;
private notificationCallback?;
private logCallback?;
constructor(options: NeoVmServiceOptions);
getTx(): Transaction;
getTime(): number;
getEngine(): ExecutionEngine;
getContextRef(): ContextRef;
getStateStore(): StateStore;
getStore(): LedgerStore;
getNotifications(): NotifyEventInfo[];
getLogs(): LogEventInfo[];
getRandomHash(): Uint256;
invoke({ inspect }: InvokeOptions): Promise;
/**
* SystemCall provide register service for smart contract to interaction with blockchain
*/
systemCall(): void;
/**
* DUMMY: this method will call other SC.
* Need to devise a way how to use it in test VM
* @param address
*/
getContract(address: Buffer): Buffer;
checkStackSize(): boolean;
addNotification(event: NotifyEventInfo): void;
addLog(event: LogEventInfo): void;
getNotificationCallback(): NotificationCallback | undefined;
}
export {};