/// <reference types="node" />
import { ServerIdentity } from "../network";
import { CallResponse, TransactionHashResponse, TransactionResponse } from "./proto";
/**
 * BEvm service
 */
export declare class BEvmService {
    static serviceName: string;
    private conn;
    private timeout;
    constructor(srvid: ServerIdentity);
    /**
     * Set a new timeout value for future requests.
     *
     * @param value Timeout in [ms]
     */
    setTimeout(value: number): void;
    /**
     * Prepare an EVM transaction to deploy a contract.
     *
     * @param gasLimit  Gas limit for the transaction
     * @param gasPrice  Gas price for the transaction
     * @param amount    Amount transferred during the transaction
     * @param nonce     Nonce for the transaction
     * @param bytecode  Compiled bytecode of the smart contract to be deployed
     * @param abi       ABI of the smart contract to be deployed
     * @param args      Arguments for the smart contract contractor
     *
     * @return Prepared transaction and its hash to be signed
     */
    prepareDeployTx(gasLimit: number, gasPrice: number, amount: number, nonce: number, bytecode: Buffer, abi: string, args: string[]): Promise<TransactionHashResponse>;
    /**
     * Prepare an EVM transaction for a R/W method execution
     *
     * @param gasLimit          Gas limit for the transaction
     * @param gasPrice          Gas price for the transaction
     * @param amount            Amount transferred during the transaction
     * @param contractAddress   Address of the smart contract
     * @param nonce             Nonce for the transaction
     * @param abi               ABI of the smart contract to be deployed
     * @param method            Name of the method to execute
     * @param args              Arguments for the smart contract method
     *
     * @return Prepared transaction and its hash to be signed
     */
    prepareTransactionTx(gasLimit: number, gasPrice: number, amount: number, contractAddress: Buffer, nonce: number, abi: string, method: string, args: string[]): Promise<TransactionHashResponse>;
    /**
     * Finalize a transaction
     *
     * @param transaction   Transaction to finalize
     * @param signature     Transaction signature
     *
     * @return Signed transaction
     */
    finalizeTx(transaction: Buffer, signature: Buffer): Promise<TransactionResponse>;
    /**
     * Execute a view method (read-only)
     *
     * @param byzcoinId         ByzCoin ID
     * @param serverConfig      Cothority server config in TOML
     * @param bevmInstanceId    BEvm instance ID
     * @param accountAddress    Address of the EVM account
     * @param contractAddress   Address of the smart contract
     * @param abi               ABI of the smart contract to be deployed
     * @param method            Name of the view method to execute
     * @param args              Arguments for the smart contract method
     *
     * @return Result of the view method execution
     */
    performCall(byzcoinId: Buffer, serverConfig: string, bevmInstanceId: Buffer, accountAddress: Buffer, contractAddress: Buffer, abi: string, method: string, args: string[]): Promise<CallResponse>;
}
