syntax = "proto2";

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

option cc_generic_services = true;

message CUserAccount_GetAvailableValveDiscountPromotions_Request {
  optional string country_code = 1;
}

message CUserAccount_GetAvailableValveDiscountPromotions_Response {
  message ValveDiscountPromotionDetails {
    optional uint32 promotionid = 1;
    optional string promotion_description = 2;
    optional int64 minimum_cart_amount = 3;
    optional int64 minimum_cart_amount_for_display = 4;
    optional int64 discount_amount = 5;
    optional int32 currency_code = 6;
    optional int32 available_use_count = 7;
    optional int32 promotional_discount_type = 8;
    optional int32 loyalty_reward_id = 9;
    optional string localized_name_token = 10;
    optional int32 max_use_count = 11;
  }
  repeated CUserAccount_GetAvailableValveDiscountPromotions_Response.ValveDiscountPromotionDetails promotions = 1;
}

message CUserAccount_GetClientWalletDetails_Request {
  optional bool include_balance_in_usd = 1;
  optional int32 wallet_region = 2 [default = 1];
  optional bool include_formatted_balance = 3;
}

message CUserAccount_GetWalletDetails_Response {
  optional bool has_wallet = 1;
  optional string user_country_code = 2;
  optional string wallet_country_code = 3;
  optional string wallet_state = 4;
  optional int64 balance = 5;
  optional int64 delayed_balance = 6;
  optional int32 currency_code = 7;
  optional uint32 time_most_recent_txn = 8;
  optional uint64 most_recent_txnid = 9;
  optional int64 balance_in_usd = 10;
  optional int64 delayed_balance_in_usd = 11;
  optional bool has_wallet_in_other_regions = 12;
  repeated int32 other_regions = 13;
  optional string formatted_balance = 14;
  optional string formatted_delayed_balance = 15;
  optional int32 delayed_balance_available_min_time = 16;
  optional int32 delayed_balance_available_max_time = 17;
  optional int32 delayed_balance_newest_source = 18;
}

message CUserAccount_GetAccountLinkStatus_Request {
}

message CUserAccount_GetAccountLinkStatus_Response {
  optional uint32 pwid = 1;
  optional uint32 identity_verification = 2;
  optional bool performed_age_verification = 3;
}

message CUserAccount_CancelLicenseForApp_Request {
  optional uint32 appid = 1;
}

message CUserAccount_CancelLicenseForApp_Response {
}

message CUserAccount_GetUserCountry_Request {
  optional fixed64 steamid = 1;
}

message CUserAccount_GetUserCountry_Response {
  optional string country = 1;
}

message CUserAccount_CreateFriendInviteToken_Request {
  optional uint32 invite_limit = 1;
  optional uint32 invite_duration = 2;
  optional string invite_note = 3;
}

message CUserAccount_CreateFriendInviteToken_Response {
  optional string invite_token = 1;
  optional uint64 invite_limit = 2;
  optional uint64 invite_duration = 3;
  optional fixed32 time_created = 4;
  optional bool valid = 5;
}

message CUserAccount_GetFriendInviteTokens_Request {
}

message CUserAccount_GetFriendInviteTokens_Response {
  repeated CUserAccount_CreateFriendInviteToken_Response tokens = 1;
}

message CUserAccount_ViewFriendInviteToken_Request {
  optional fixed64 steamid = 1;
  optional string invite_token = 2;
}

message CUserAccount_ViewFriendInviteToken_Response {
  optional bool valid = 1;
  optional uint64 steamid = 2;
  optional uint64 invite_duration = 3;
}

message CUserAccount_RedeemFriendInviteToken_Request {
  optional fixed64 steamid = 1;
  optional string invite_token = 2;
}

message CUserAccount_RedeemFriendInviteToken_Response {
}

message CUserAccount_RevokeFriendInviteToken_Request {
  optional string invite_token = 1;
}

message CUserAccount_RevokeFriendInviteToken_Response {
}

message CUserAccount_RegisterCompatTool_Request {
  optional uint32 compat_tool = 1;
}

message CUserAccount_RegisterCompatTool_Response {
}

message CEmbeddedClient_AuthorizeCurrentDevice_Request {
  optional fixed64 steamid = 1;
  optional uint32 appid = 2;
  optional string device_info = 3;
  optional uint32 deviceid = 4;
}

message CEmbeddedClient_Token {
  optional fixed64 steamid = 1;
  optional bytes client_token = 2;
  optional uint32 expiry = 3;
  optional uint32 deviceid = 4;
}

message CEmbeddedClient_AuthorizeDevice_Response {
  optional uint32 result = 1;
  optional CEmbeddedClient_Token token = 2;
}

service UserAccount {
  rpc GetAvailableValveDiscountPromotions (.CUserAccount_GetAvailableValveDiscountPromotions_Request) returns (.CUserAccount_GetAvailableValveDiscountPromotions_Response) {
  }
  rpc GetClientWalletDetails (.CUserAccount_GetClientWalletDetails_Request) returns (.CUserAccount_GetWalletDetails_Response) {
  }
  rpc GetAccountLinkStatus (.CUserAccount_GetAccountLinkStatus_Request) returns (.CUserAccount_GetAccountLinkStatus_Response) {
  }
  rpc CancelLicenseForApp (.CUserAccount_CancelLicenseForApp_Request) returns (.CUserAccount_CancelLicenseForApp_Response) {
  }
  rpc GetUserCountry (.CUserAccount_GetUserCountry_Request) returns (.CUserAccount_GetUserCountry_Response) {
  }
  rpc CreateFriendInviteToken (.CUserAccount_CreateFriendInviteToken_Request) returns (.CUserAccount_CreateFriendInviteToken_Response) {
  }
  rpc GetFriendInviteTokens (.CUserAccount_GetFriendInviteTokens_Request) returns (.CUserAccount_GetFriendInviteTokens_Response) {
  }
  rpc ViewFriendInviteToken (.CUserAccount_ViewFriendInviteToken_Request) returns (.CUserAccount_ViewFriendInviteToken_Response) {
  }
  rpc RedeemFriendInviteToken (.CUserAccount_RedeemFriendInviteToken_Request) returns (.CUserAccount_RedeemFriendInviteToken_Response) {
  }
  rpc RevokeFriendInviteToken (.CUserAccount_RevokeFriendInviteToken_Request) returns (.CUserAccount_RevokeFriendInviteToken_Response) {
  }
  rpc RegisterCompatTool (.CUserAccount_RegisterCompatTool_Request) returns (.CUserAccount_RegisterCompatTool_Response) {
  }
}

service EmbeddedClient {
  rpc AuthorizeCurrentDevice (.CEmbeddedClient_AuthorizeCurrentDevice_Request) returns (.CEmbeddedClient_AuthorizeDevice_Response) {
  }
}

