syntax = "proto3";

import "request.proto";
import "response.proto";
import "sync.proto";
import "blockchain.proto";
import "consensus.proto";
import "auth.proto";
import "executor.proto";
import "snapshot.proto";

message InnerMessage {

    oneof content {

        bytes RawBytes = 1;

        Request Request = 2;
        Response Response = 3;

        SyncRequest SyncRequest = 4;
        SyncResponse SyncResponse = 5;

        Status Status = 6;
        RichStatus RichStatus = 7;

        SignedProposal SignedProposal = 8;

        Block Block = 9;
        BlockWithProof BlockWithProof = 10;
        BlockHeader BlockHeader = 11;
        BlockTxs BlockTxs = 12;

        BlockTxHashes BlockTxHashes = 13;
        BlockTxHashesReq BlockTxHashesReq = 14;

        VerifyTxReq VerifyTxReq = 15;
        VerifyTxResp VerifyTxResp = 16;
        VerifyBlockReq VerifyBlockReq = 17;
        VerifyBlockResp VerifyBlockResp = 18;

        ExecutedResult ExecutedResult = 19;

        SnapshotReq SnapshotReq = 20;
        SnapshotResp SnapshotResp = 21;

        Miscellaneous Miscellaneous = 22;
        MiscellaneousReq MiscellaneousReq = 23;

        BlackList BlackList = 24;
        StateSignal StateSignal = 25;
    }
}
