syntax = "proto3"; package arbiter.operator.governance; message Request { oneof payload { CreateProposalRequest create = 1; CastVoteRequest vote = 2; QueryPendingRequest query = 3; } } message CreateProposalRequest { oneof kind { ApproveSdkClientPayload approve_sdk_client = 1; } optional uint32 ttl_secs = 2; } message ApproveSdkClientPayload { int32 client_id = 1; } message CastVoteRequest { int32 proposal_id = 1; bool approve = 2; bytes signature = 3; } message QueryPendingRequest {} message Response { oneof payload { CreateProposalResponse created = 1; VoteResponse voted = 2; QueryPendingResponse pending = 3; } } message CreateProposalResponse { int32 proposal_id = 1; } message VoteResponse { VoteOutcome outcome = 1; } enum VoteOutcome { VOTE_OUTCOME_UNSPECIFIED = 0; VOTE_OUTCOME_PENDING = 1; VOTE_OUTCOME_APPROVED = 2; VOTE_OUTCOME_REJECTED = 3; } message ProposalSummary { int32 id = 1; string kind = 2; int32 initiator_id = 3; int64 expires_at = 4; int64 approve_count = 5; int64 reject_count = 6; } message QueryPendingResponse { repeated ProposalSummary proposals = 1; }