// Copyright 2022 The Tari Project
// SPDX-License-Identifier: BSD-3-Clause

syntax = "proto3";

import "transaction.proto";
import "block.proto";
import "chain_metadata.proto";

package tari.base_node;

// Response type for a received BaseNodeService requests
message BaseNodeServiceResponse {
    uint64 request_key = 1;
    oneof response {
        BlockResponse block_response = 5;
        FetchMempoolTransactionsResponse fetch_mempool_transactions_by_excess_sigs_response = 7;
    }
    bool is_synced = 13;
    reserved 6;
    reserved "historical_blocks";
}

message BlockHeaders {
    repeated tari.core.BlockHeader headers = 1;
}

message HistoricalBlockResponse {
    tari.core.HistoricalBlock block = 1;
}

message BlockHeaderResponse {
    tari.core.BlockHeader header = 1;
}

message TransactionKernels {
    repeated tari.types.TransactionKernel kernels = 1;
}

message TransactionOutputs {
    repeated tari.types.TransactionOutput outputs = 1;
}

message HistoricalBlocks {
    repeated tari.core.HistoricalBlock blocks = 1;
}

message BlockResponse {
  tari.core.Block block = 1;
}

message NewBlockResponse {
    bool success = 1;
    string error = 2;
    tari.core.Block block = 3;
 }

 message MmrNodes {
    repeated bytes added = 1;
    bytes deleted = 2;
}

message FetchMempoolTransactionsResponse {
  repeated tari.types.Transaction transactions = 1;
  repeated bytes not_found = 2;
}

