syntax = "proto3";
package bao;

option go_package = "./proto";

// Define an empty message for the request as proto3 requires specific message types
message NewHasherRequest {
}

// Define a message for the response that includes the bytes you mentioned
message NewHasherResponse {
    string id = 1;
}

message HashRequest {
    string id = 1;
    bytes data = 2;
}

message HashResponse {
    bool status = 1;
}

message FinishRequest {
    string id = 1;
}

message FinishResponse {
    bytes hash = 1;
    bytes proof = 2;
}

message VerifyRequest {
    bytes data = 1;
    uint64 offset = 2;
    bytes proof = 3;
    bytes hash = 4;
}

message VerifyResponse {
    bool status = 1;
    string error = 2;
}


service Bao {
    rpc NewHasher(NewHasherRequest) returns (NewHasherResponse);
    rpc Hash(HashRequest) returns (HashResponse);
    rpc Finish(FinishRequest) returns (FinishResponse);
    rpc Verify(VerifyRequest) returns (VerifyResponse);
}