import "steammessages_base.proto";
import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CSiteManagerClient_IncomingClient_Request {
	optional fixed64 site_instanceid = 1;
	optional fixed64 client_steamid = 2;
	optional fixed32 client_local_ip = 3;
	optional bytes connection_key = 4;
}

message CSiteManagerClient_IncomingClient_Response {
}

message CSiteLicense_ClientSeatCheckout_Notification {
	optional uint32 appid = 1;
	optional uint32 eresult = 2;
}

message CSiteManagerClient_TrackedPayments_Notification {
	message Payment {
		optional uint64 transid = 1;
		optional uint64 steamid = 2;
		optional int64 amount = 3;
		optional uint32 ecurrency = 4;
		optional int32 time_created = 5;
		optional int32 purchase_status = 6;
		optional string machine_name = 7;
		optional string persona_name = 8;
		optional string profile_url = 9;
		optional string avatar_url = 10;
	}

	optional fixed64 site_id = 1;
	repeated .CSiteManagerClient_TrackedPayments_Notification.Payment payments = 2;
}

message CSiteLicense_InitiateAssociation_Request {
	optional fixed64 site_steamid = 1;
	optional fixed64 site_instanceid = 2;
	optional fixed32 client_local_ip = 3;
}

message CSiteLicense_InitiateAssociation_Response {
	optional bytes connection_key = 1;
}

message CSiteLicense_LCSAuthenticate_Request {
	optional fixed64 instanceid = 1;
}

message CSiteLicense_LCSAuthenticate_Response {
	optional uint64 site_id = 1;
	optional string site_name = 2;
	optional bool new_session = 3;
	optional bool no_site_licenses = 4;
}

message CSiteLicense_LCSAssociateUser_Request {
	optional fixed64 steamid = 1;
	optional fixed32 local_ip = 2;
	optional fixed64 instanceid = 3;
	optional string machine_name = 4;
}

message CSiteLicense_LCSAssociateUser_Response {
}

message CSiteLicense_ClientSeatCheckout_Request {
	optional fixed64 steamid = 1;
	optional fixed64 instanceid = 2;
	optional uint32 appid = 3;
}

message CSiteLicense_ClientSeatCheckout_Response {
}

message CSiteLicense_ClientGetAvailableSeats_Request {
	optional fixed64 steamid = 1;
	optional fixed64 instanceid = 2;
	optional uint32 appid = 3;
}

message CSiteLicense_ClientGetAvailableSeats_Response {
	optional uint32 available_seats = 1;
}

service SiteManagerClient {
	option (service_execution_site) = k_EProtoExecutionSiteSteamClient;

	rpc IncomingClient (.CSiteManagerClient_IncomingClient_Request) returns (.CSiteManagerClient_IncomingClient_Response);
	rpc ClientSeatCheckoutNotification (.CSiteLicense_ClientSeatCheckout_Notification) returns (.NoResponse);
	rpc TrackedPaymentsNotification (.CSiteManagerClient_TrackedPayments_Notification) returns (.NoResponse);
}

service SiteLicense {
	rpc InitiateAssociation (.CSiteLicense_InitiateAssociation_Request) returns (.CSiteLicense_InitiateAssociation_Response);
	rpc LCSAuthenticate (.CSiteLicense_LCSAuthenticate_Request) returns (.CSiteLicense_LCSAuthenticate_Response);
	rpc LCSAssociateUser (.CSiteLicense_LCSAssociateUser_Request) returns (.CSiteLicense_LCSAssociateUser_Response);
	rpc ClientSeatCheckout (.CSiteLicense_ClientSeatCheckout_Request) returns (.CSiteLicense_ClientSeatCheckout_Response);
	rpc ClientGetAvailableSeats (.CSiteLicense_ClientGetAvailableSeats_Request) returns (.CSiteLicense_ClientGetAvailableSeats_Response);
}
