/**
 * # Merkle Leaf
 * A leaf node in a block merkle tree structure.
 *
 * ### Keywords
 * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
 * document are to be interpreted as described in
 * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
 * [RFC8174](https://www.ietf.org/rfc/rfc8174).
 */
syntax = "proto3";

package com.hedera.hapi.node.state.blockstream;

// SPDX-License-Identifier: Apache-2.0
import "services_timestamp.proto";
import "virtual_map_state.proto";
//import "block/stream/block_item.proto";

option java_package = "com.hedera.hapi.block.stream.protoc";
// <<<pbj.java_package = "com.hedera.hapi.node.state.blockstream">>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

message MerkleLeaf {
    /**
     * The content of this merkle leaf node.
     */
    oneof content {
        /**
         * The consensus timestamp of the first round in the current
         * block, which is equivalent to the consensus timestamp of
         * the first transaction in that round.
         */
        bytes block_consensus_timestamp = 1;

        /**
         * The serialized bytes of a single BlockItem message.
         */
        bytes block_item = 2;

        /**
         * The serialized bytes of a single StateItem message.
         */
        bytes state_item = 3;
    }
}
