using System;
using System.Threading.Tasks;
using Nethereum.Hex.HexConvertors.Extensions;
using Nethereum.JsonRpc.Client;
using Nethereum.RPC.Eth.DTOs;
namespace Nethereum.RPC.Eth.Transactions
{
///
/// Returns the receipt of a transaction by transaction hash.
/// Note That the receipt is not available for pending transactions.
/// Parameters
/// DATA, 32 Bytes - hash of a transaction
/// params: [
/// '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
/// ]
/// Returns
/// Object - A transaction receipt object, or null when no receipt was found:
/// transactionHash: DATA, 32 Bytes - hash of the transaction.
/// transactionIndex: QUANTITY - integer of the transactions index position in the block.
/// blockHash: DATA, 32 Bytes - hash of the block where this transaction was in.
/// blockNumber: QUANTITY - block number where this transaction was in.
/// cumulativeGasUsed: QUANTITY - The total amount of gas used when this transaction was executed in the block.
/// gasUsed: QUANTITY - The amount of gas used by this specific transaction alone.
/// contractAddress: DATA, 20 Bytes - The contract address created, if the transaction was a contract creation,
/// otherwise null.
/// logs: Array - Array of log objects, which this transaction generated.
/// Example
/// Request
/// curl -X POST --data
/// '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
/// Result
/// {
/// "id":1,
/// "jsonrpc":"2.0",
/// "result": {
/// transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238',
/// transactionIndex: '0x1', // 1
/// blockNumber: '0xb', // 11
/// blockHash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
/// cumulativeGasUsed: '0x33bc', // 13244
/// gasUsed: '0x4dc', // 1244
/// contractAddress: '0xb60e8dd61c5d32be8058bb8eb970870f07233155' // or null, if none was created
/// logs: [{
/// // logs as returned by getFilterLogs, etc.
/// }, ...]
/// }
/// }
///
public class EthGetTransactionReceipt : RpcRequestResponseHandler, IEthGetTransactionReceipt
{
public EthGetTransactionReceipt(IClient client) : base(client, ApiMethods.eth_getTransactionReceipt.ToString())
{
}
public Task SendRequestAsync(string transactionHash, object id = null)
{
if (transactionHash == null) throw new ArgumentNullException(nameof(transactionHash));
return base.SendRequestAsync(id, transactionHash.EnsureHexPrefix());
}
public RpcRequest BuildRequest(string transactionHash, object id = null)
{
if (transactionHash == null) throw new ArgumentNullException(nameof(transactionHash));
return base.BuildRequest(id, transactionHash.EnsureHexPrefix());
}
}
}