import "steammessages.proto";

message CSOPartyInvite {
	optional uint64 group_id = 1 [(key_field) = true];
	optional fixed64 sender_id = 2;
	optional string sender_name = 3;
}

message CSOLobbyInvite {
	optional uint64 group_id = 1 [(key_field) = true];
	optional fixed64 sender_id = 2;
	optional string sender_name = 3;
}

message CMsgSystemBroadcast {
	optional string message = 1;
}

message CMsgInviteToParty {
	optional fixed64 steam_id = 1;
}

message CMsgInvitationCreated {
	optional uint64 group_id = 1;
	optional fixed64 steam_id = 2;
}

message CMsgPartyInviteResponse {
	optional uint64 party_id = 1;
	optional bool accept = 2;
}

message CMsgKickFromParty {
	optional fixed64 steam_id = 1;
}

message CMsgLeaveParty {
}

message CMsgServerAddresses {
	optional fixed32 server_public_ip_addr = 1;
	optional fixed32 server_private_ip_addr = 2;
	optional uint32 server_port = 3;
	optional uint32 server_tv_port = 4;
	optional string server_key = 5;
	optional bool server_hibernation = 6;
}

message CMsgServerAvailable {
}

message CSOEconGameAccountClient {
	optional uint32 additional_backpack_slots = 1 [default = 0];
	optional bool trial_account = 2 [default = false];
	optional bool eligible_for_online_play = 3 [default = true];
	optional bool need_to_choose_most_helpful_friend = 4;
	optional bool in_coaches_list = 5;
	optional fixed32 trade_ban_expiration = 6;
	optional fixed32 duel_ban_expiration = 7;
}

message CSOItemCriteriaCondition {
	optional int32 op = 1;
	optional string field = 2;
	optional bool required = 3;
	optional float float_value = 4;
	optional string string_value = 5;
}

message CSOItemCriteria {
	optional uint32 item_level = 1;
	optional int32 item_quality = 2;
	optional bool item_level_set = 3;
	optional bool item_quality_set = 4;
	optional uint32 initial_inventory = 5;
	optional uint32 initial_quantity = 6;
	optional bool forced_quality_match = 7;
	optional bool ignore_enabled_flag = 8;
	repeated .CSOItemCriteriaCondition conditions = 9;
}

message CSOItemRecipe {
	optional uint32 def_index = 1;
	optional string name = 2;
	optional string n_a = 3;
	optional string desc_inputs = 4;
	optional string desc_outputs = 5;
	optional string di_a = 6;
	optional string di_b = 7;
	optional string di_c = 8;
	optional string do_a = 9;
	optional string do_b = 10;
	optional string do_c = 11;
	optional bool requires_all_same_class = 12;
	optional bool requires_all_same_slot = 13;
	optional int32 class_usage_for_output = 14;
	optional int32 slot_usage_for_output = 15;
	optional int32 set_for_output = 16;
	repeated .CSOItemCriteria input_items_criteria = 20;
	repeated .CSOItemCriteria output_items_criteria = 21;
	repeated uint32 input_item_dupe_counts = 22;
}

message CMsgDevNewItemRequest {
	optional fixed64 receiver = 1;
	optional .CSOItemCriteria criteria = 2;
}

message CMsgIncrementKillCountAttribute {
	optional uint64 killer_steam_id = 1;
	optional uint64 victim_steam_id = 2;
	optional uint64 item_id = 3;
}

message CSOEconItemAttribute {
	optional uint32 def_index = 1;
	optional uint32 value = 2;
}

message CSOEconItem {
	optional uint64 id = 1;
	optional uint32 account_id = 2;
	optional uint32 inventory = 3;
	optional uint32 def_index = 4;
	optional uint32 quantity = 5;
	optional uint32 level = 6;
	optional uint32 quality = 7;
	optional uint32 flags = 8 [default = 0];
	optional uint32 origin = 9;
	optional string custom_name = 10;
	optional string custom_desc = 11;
	repeated .CSOEconItemAttribute attribute = 12;
	optional .CSOEconItem interior_item = 13;
	optional bool in_use = 14 [default = false];
	optional uint32 style = 15 [default = 0];
	optional uint64 original_id = 16 [default = 0];
}

message CMsgSortItems {
	optional uint32 sort_type = 1;
}

message CSOEconClaimCode {
	optional uint32 account_id = 1;
	optional uint32 code_type = 2;
	optional uint32 time_acquired = 3;
	optional string code = 4;
}

message CMsgStoreGetUserData {
	optional fixed32 price_sheet_version = 1;
}

message CMsgStoreGetUserDataResponse {
	optional int32 result = 1;
	optional int32 currency = 2;
	optional string country = 3;
	optional fixed32 price_sheet_version = 4;
	optional uint64 experiment_data = 5 [default = 0];
	optional int32 featured_item_idx = 6;
	optional bool show_hat_descriptions = 7 [default = true];
	optional bytes price_sheet = 8;
	optional int32 default_item_sort = 9 [default = 0];
}

message CMsgUpdateItemSchema {
	optional bytes items_game = 1;
	optional fixed32 item_schema_version = 2;
	optional string items_game_url = 3;
}

message CMsgRequestItemSchemaData {
}

message CMsgGCError {
	optional string error_text = 1;
}

message CMsgRequestInventoryRefresh {
}

message CMsgConVarValue {
	optional string name = 1;
	optional string value = 2;
}

message CMsgReplicateConVars {
	repeated .CMsgConVarValue convars = 1;
}

message CMsgReplayUploadedToYouTube {
	optional string youtube_url = 1;
	optional string youtube_account_name = 2;
	optional uint64 session_id = 3;
}

