syntax = "proto3";
package protowire;

import "rpc.proto";

message KaspadRequest {
  uint64 id = 101;
  oneof payload {
    GetCurrentNetworkRequestMessage getCurrentNetworkRequest = 1001;
    SubmitBlockRequestMessage submitBlockRequest = 1003;
    GetBlockTemplateRequestMessage getBlockTemplateRequest = 1005;
    NotifyBlockAddedRequestMessage notifyBlockAddedRequest = 1007;
    // BlockAddedNotificationMessage blockAddedNotification = 1009;
    GetPeerAddressesRequestMessage getPeerAddressesRequest = 1010;
    GetSinkRequestMessage GetSinkRequest = 1012;
    GetMempoolEntryRequestMessage getMempoolEntryRequest = 1014;
    GetConnectedPeerInfoRequestMessage getConnectedPeerInfoRequest = 1016;
    AddPeerRequestMessage addPeerRequest = 1018;
    SubmitTransactionRequestMessage submitTransactionRequest = 1020;
    NotifyVirtualChainChangedRequestMessage notifyVirtualChainChangedRequest = 1022;
    // VirtualChainChangedNotificationMessage virtualChainChangedNotification = 1024;
    GetBlockRequestMessage getBlockRequest = 1025;
    GetSubnetworkRequestMessage getSubnetworkRequest = 1027;
    GetVirtualChainFromBlockRequestMessage getVirtualChainFromBlockRequest = 1029;
    GetBlocksRequestMessage getBlocksRequest = 1031;
    GetBlockCountRequestMessage getBlockCountRequest = 1033;
    GetBlockDagInfoRequestMessage getBlockDagInfoRequest = 1035;
    ResolveFinalityConflictRequestMessage resolveFinalityConflictRequest = 1037;
    NotifyFinalityConflictRequestMessage notifyFinalityConflictRequest = 1039;
    // FinalityConflictNotificationMessage finalityConflictNotification = 1041;
    // FinalityConflictResolvedNotificationMessage finalityConflictResolvedNotification = 1042;
    GetMempoolEntriesRequestMessage getMempoolEntriesRequest = 1043;
    ShutdownRequestMessage shutdownRequest = 1045;
    GetHeadersRequestMessage getHeadersRequest = 1047;
    NotifyUtxosChangedRequestMessage notifyUtxosChangedRequest = 1049;
    // UtxosChangedNotificationMessage utxosChangedNotification = 1051;
    GetUtxosByAddressesRequestMessage getUtxosByAddressesRequest = 1052;
    GetSinkBlueScoreRequestMessage getSinkBlueScoreRequest = 1054;
    NotifySinkBlueScoreChangedRequestMessage notifySinkBlueScoreChangedRequest = 1056;
    // SinkBlueScoreChangedNotificationMessage sinkBlueScoreChangedNotification = 1058;
    BanRequestMessage banRequest = 1059;
    UnbanRequestMessage unbanRequest = 1061;
    GetInfoRequestMessage getInfoRequest = 1063;
    StopNotifyingUtxosChangedRequestMessage stopNotifyingUtxosChangedRequest = 1065;
    NotifyPruningPointUtxoSetOverrideRequestMessage notifyPruningPointUtxoSetOverrideRequest = 1067;
    // PruningPointUtxoSetOverrideNotificationMessage pruningPointUtxoSetOverrideNotification = 1069;
    StopNotifyingPruningPointUtxoSetOverrideRequestMessage stopNotifyingPruningPointUtxoSetOverrideRequest = 1070;
    EstimateNetworkHashesPerSecondRequestMessage estimateNetworkHashesPerSecondRequest = 1072;
    NotifyVirtualDaaScoreChangedRequestMessage notifyVirtualDaaScoreChangedRequest = 1074;
    // VirtualDaaScoreChangedNotificationMessage virtualDaaScoreChangedNotification = 1076;
    GetBalanceByAddressRequestMessage getBalanceByAddressRequest = 1077;
    GetBalancesByAddressesRequestMessage getBalancesByAddressesRequest = 1079;
    NotifyNewBlockTemplateRequestMessage notifyNewBlockTemplateRequest = 1081;
    // NewBlockTemplateNotificationMessage newBlockTemplateNotification = 1083;
    GetMempoolEntriesByAddressesRequestMessage getMempoolEntriesByAddressesRequest = 1084;
    GetCoinSupplyRequestMessage getCoinSupplyRequest = 1086;
    PingRequestMessage pingRequest = 1088;
    GetMetricsRequestMessage getMetricsRequest = 1090;
    GetServerInfoRequestMessage getServerInfoRequest = 1092;
    GetSyncStatusRequestMessage getSyncStatusRequest = 1094;
    GetDaaScoreTimestampEstimateRequestMessage GetDaaScoreTimestampEstimateRequest = 1096;
  }
}

message KaspadResponse {
  uint64 id = 101;
  oneof payload {
    GetCurrentNetworkResponseMessage getCurrentNetworkResponse = 1002;
    SubmitBlockResponseMessage submitBlockResponse = 1004;
    GetBlockTemplateResponseMessage getBlockTemplateResponse = 1006;
    NotifyBlockAddedResponseMessage notifyBlockAddedResponse = 1008;
    BlockAddedNotificationMessage blockAddedNotification = 1009;
    GetPeerAddressesResponseMessage getPeerAddressesResponse = 1011;
    GetSinkResponseMessage GetSinkResponse = 1013;
    GetMempoolEntryResponseMessage getMempoolEntryResponse = 1015;
    GetConnectedPeerInfoResponseMessage getConnectedPeerInfoResponse = 1017;
    AddPeerResponseMessage addPeerResponse = 1019;
    SubmitTransactionResponseMessage submitTransactionResponse = 1021;
    NotifyVirtualChainChangedResponseMessage notifyVirtualChainChangedResponse = 1023;
    VirtualChainChangedNotificationMessage virtualChainChangedNotification = 1024;
    GetBlockResponseMessage getBlockResponse = 1026;
    GetSubnetworkResponseMessage getSubnetworkResponse = 1028;
    GetVirtualChainFromBlockResponseMessage getVirtualChainFromBlockResponse = 1030;
    GetBlocksResponseMessage getBlocksResponse = 1032;
    GetBlockCountResponseMessage getBlockCountResponse = 1034;
    GetBlockDagInfoResponseMessage getBlockDagInfoResponse = 1036;
    ResolveFinalityConflictResponseMessage resolveFinalityConflictResponse = 1038;
    NotifyFinalityConflictResponseMessage notifyFinalityConflictResponse = 1040;
    FinalityConflictNotificationMessage finalityConflictNotification = 1041;
    FinalityConflictResolvedNotificationMessage finalityConflictResolvedNotification = 1042;
    GetMempoolEntriesResponseMessage getMempoolEntriesResponse = 1044;
    ShutdownResponseMessage shutdownResponse = 1046;
    GetHeadersResponseMessage getHeadersResponse = 1048;
    NotifyUtxosChangedResponseMessage notifyUtxosChangedResponse = 1050;
    UtxosChangedNotificationMessage utxosChangedNotification = 1051;
    GetUtxosByAddressesResponseMessage getUtxosByAddressesResponse = 1053;
    GetSinkBlueScoreResponseMessage getSinkBlueScoreResponse = 1055;
    NotifySinkBlueScoreChangedResponseMessage notifySinkBlueScoreChangedResponse = 1057;
    SinkBlueScoreChangedNotificationMessage sinkBlueScoreChangedNotification = 1058;
    BanResponseMessage banResponse = 1060;
    UnbanResponseMessage unbanResponse = 1062;
    GetInfoResponseMessage getInfoResponse = 1064;
    StopNotifyingUtxosChangedResponseMessage stopNotifyingUtxosChangedResponse = 1066;
    NotifyPruningPointUtxoSetOverrideResponseMessage notifyPruningPointUtxoSetOverrideResponse = 1068;
    PruningPointUtxoSetOverrideNotificationMessage pruningPointUtxoSetOverrideNotification = 1069;
    StopNotifyingPruningPointUtxoSetOverrideResponseMessage stopNotifyingPruningPointUtxoSetOverrideResponse = 1071;
    EstimateNetworkHashesPerSecondResponseMessage estimateNetworkHashesPerSecondResponse = 1073;
    NotifyVirtualDaaScoreChangedResponseMessage notifyVirtualDaaScoreChangedResponse = 1075;
    VirtualDaaScoreChangedNotificationMessage virtualDaaScoreChangedNotification = 1076;
    GetBalanceByAddressResponseMessage getBalanceByAddressResponse = 1078;
    GetBalancesByAddressesResponseMessage getBalancesByAddressesResponse = 1080;
    NotifyNewBlockTemplateResponseMessage notifyNewBlockTemplateResponse = 1082;
    NewBlockTemplateNotificationMessage newBlockTemplateNotification = 1083;
    GetMempoolEntriesByAddressesResponseMessage getMempoolEntriesByAddressesResponse = 1085;
    GetCoinSupplyResponseMessage getCoinSupplyResponse= 1087;
    PingResponseMessage pingResponse= 1089;
    GetMetricsResponseMessage getMetricsResponse= 1091;
    GetServerInfoResponseMessage getServerInfoResponse = 1093;
    GetSyncStatusResponseMessage getSyncStatusResponse = 1095;
    GetDaaScoreTimestampEstimateResponseMessage GetDaaScoreTimestampEstimateResponse = 1097;
  }
}

service RPC {
  rpc MessageStream (stream KaspadRequest) returns (stream KaspadResponse) {}
}
