syntax = "proto3";

package proto;

option java_package = "com.hederahashgraph.api.proto.java";
option java_multiple_files = true;

import "Timestamp.proto";
import "BasicTypes.proto";
import "TransactionReceipt.proto";
import "CryptoTransfer.proto";
import "ContractCallLocal.proto";

/* Response when the client sends the node TransactionGetRecordResponse */
message TransactionRecord {
    TransactionReceipt receipt = 1; // the status (reach consensus, or failed, or is unknown) and the ID of any new account/file/instance created.
    bytes transactionHash = 2; // the hash of the Transaction that executed (not the hash of any Transaction that failed for having a duplicate TransactionID)_
    Timestamp consensusTimestamp = 3; // the consensus timestamp (or null if didn't reach consensus yet)
    TransactionID transactionID = 4; // the ID of the transaction this record represents
    string memo = 5; // the memo that was submitted as part of the transaction (max 100 bytes)
    uint64 transactionFee = 6; // the transaction fee in the transaction
    oneof body {
        ContractFunctionResult contractCallResult = 7; // record of the value returned by the smart contract function (if it completed and didn't fail) from ContractCallTransaction
        ContractFunctionResult contractCreateResult = 8; // record of the value returned by the smart contract constructor (if it completed and didn't fail) from ContractCreateTransaction
        TransferList transferList = 9; // record of results of a CryptoTransferTransaction
    }
}
