syntax = "proto3"; package arbiter.client; import "evm.proto"; import "google/protobuf/empty.proto"; message ClientInfo { string name = 1; optional string description = 2; optional string version = 3; } message AuthChallengeRequest { bytes pubkey = 1; ClientInfo client_info = 2; } message AuthChallenge { bytes pubkey = 1; int32 nonce = 2; } message AuthChallengeSolution { bytes signature = 1; } enum AuthResult { AUTH_RESULT_UNSPECIFIED = 0; AUTH_RESULT_SUCCESS = 1; AUTH_RESULT_INVALID_KEY = 2; AUTH_RESULT_INVALID_SIGNATURE = 3; AUTH_RESULT_APPROVAL_DENIED = 4; AUTH_RESULT_NO_USER_AGENTS_ONLINE = 5; AUTH_RESULT_INTERNAL = 6; } enum VaultState { VAULT_STATE_UNSPECIFIED = 0; VAULT_STATE_UNBOOTSTRAPPED = 1; VAULT_STATE_SEALED = 2; VAULT_STATE_UNSEALED = 3; VAULT_STATE_ERROR = 4; } message ClientRequest { int32 request_id = 4; oneof payload { AuthChallengeRequest auth_challenge_request = 1; AuthChallengeSolution auth_challenge_solution = 2; google.protobuf.Empty query_vault_state = 3; arbiter.evm.EvmSignTransactionRequest evm_sign_transaction = 5; } } message ClientResponse { optional int32 request_id = 7; oneof payload { AuthChallenge auth_challenge = 1; AuthResult auth_result = 2; arbiter.evm.EvmSignTransactionResponse evm_sign_transaction = 3; arbiter.evm.EvmAnalyzeTransactionResponse evm_analyze_transaction = 4; VaultState vault_state = 6; } }