syntax = "proto3"; package wallet; option go_package = "gen/;walletpb"; service WalletService { rpc Reserve(ReserveRequest) returns (ReserveResponse); rpc Confirm(ConfirmRequest) returns (ConfirmResponse); rpc Cancel(CancelRequest) returns (CancelResponse); rpc GetTransaction(GetTransactionRequest) returns (GetTransactionResponse); } message ReserveRequest { string request_id = 1; string user_id = 2; string game_id = 3; string round_id = 4; int64 amount = 5; // в минорных единицах, например cents string currency = 6; } message ReserveResponse { string transaction_id = 1; string status = 2; // reserved / rejected int64 available_balance = 3; int64 reserved_balance = 4; } message ConfirmRequest { string request_id = 1; string transaction_id = 2; string round_id = 3; int64 win_amount = 4; // 0 если проигрыш } message ConfirmResponse { string transaction_id = 1; string status = 2; // confirmed / already_confirmed int64 available_balance = 3; int64 reserved_balance = 4; } message CancelRequest { string request_id = 1; string transaction_id = 2; string reason = 3; } message CancelResponse { string transaction_id = 1; string status = 2; // canceled / already_canceled int64 available_balance = 3; int64 reserved_balance = 4; } message GetTransactionRequest { string transaction_id = 1; } message GetTransactionResponse { string transaction_id = 1; string user_id = 2; string round_id = 3; int64 amount = 4; int64 win_amount = 5; string status = 6; // reserved / confirmed / canceled }