import "steammessages.proto";
import "econ_shared_enums.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum EGCItemMsg {
	k_EMsgGCBase = 1000;
	k_EMsgGCSetItemPosition = 1001;
	k_EMsgGCDelete = 1004;
	k_EMsgGCVerifyCacheSubscription = 1005;
	k_EMsgClientToGCNameItem = 1006;
	k_EMsgGCPaintItem = 1009;
	k_EMsgGCPaintItemResponse = 1010;
	k_EMsgGCGoldenWrenchBroadcast = 1011;
	k_EMsgGCMOTDRequest = 1012;
	k_EMsgGCMOTDRequestResponse = 1013;
	k_EMsgGCAddItemToSocket_DEPRECATED = 1014;
	k_EMsgGCAddItemToSocketResponse_DEPRECATED = 1015;
	k_EMsgGCAddSocketToBaseItem_DEPRECATED = 1016;
	k_EMsgGCAddSocketToItem_DEPRECATED = 1017;
	k_EMsgGCAddSocketToItemResponse_DEPRECATED = 1018;
	k_EMsgGCNameBaseItem = 1019;
	k_EMsgGCNameBaseItemResponse = 1020;
	k_EMsgGCRemoveSocketItem_DEPRECATED = 1021;
	k_EMsgGCRemoveSocketItemResponse_DEPRECATED = 1022;
	k_EMsgGCCustomizeItemTexture = 1023;
	k_EMsgGCCustomizeItemTextureResponse = 1024;
	k_EMsgGCUseItemRequest = 1025;
	k_EMsgGCUseItemResponse = 1026;
	k_EMsgGCGiftedItems = 1027;
	k_EMsgGCRemoveItemName = 1030;
	k_EMsgGCRemoveItemPaint = 1031;
	k_EMsgGCUnwrapGiftRequest = 1037;
	k_EMsgGCUnwrapGiftResponse = 1038;
	k_EMsgGCSetItemStyle_DEPRECATED = 1039;
	k_EMsgGCUsedClaimCodeItem = 1040;
	k_EMsgGCSortItems = 1041;
	k_EMsgGC_RevolvingLootList_DEPRECATED = 1042;
	k_EMsgGCUpdateItemSchema = 1049;
	k_EMsgGCRemoveCustomTexture = 1051;
	k_EMsgGCRemoveCustomTextureResponse = 1052;
	k_EMsgGCRemoveMakersMark = 1053;
	k_EMsgGCRemoveMakersMarkResponse = 1054;
	k_EMsgGCRemoveUniqueCraftIndex = 1055;
	k_EMsgGCRemoveUniqueCraftIndexResponse = 1056;
	k_EMsgGCSaxxyBroadcast = 1057;
	k_EMsgGCBackpackSortFinished = 1058;
	k_EMsgGCAdjustItemEquippedState = 1059;
	k_EMsgGCCollectItem = 1061;
	k_EMsgGCItemAcknowledged = 1062;
	k_EMsgGCPresets_SelectPresetForClass = 1063;
	k_EMsgGCPresets_SetItemPosition = 1064;
	k_EMsgGCPresets_SelectPresetForClassReply = 1067;
	k_EMsgClientToGCNameItemResponse = 1068;
	k_EMsgGCApplyConsumableEffects = 1069;
	k_EMsgGCShowItemsPickedUp = 1071;
	k_EMsgGCClientDisplayNotification = 1072;
	k_EMsgGCApplyStrangePart = 1073;
	k_EMsgGC_IncrementKillCountResponse = 1075;
	k_EMsgGCApplyPennantUpgrade = 1076;
	k_EMsgGCSetItemPositions = 1077;
	k_EMsgGCSetItemPositions_RateLimited = 1096;
	k_EMsgGCApplyEggEssence = 1078;
	k_EMsgGCNameEggEssenceResponse = 1079;
	k_EMsgGCFulfillDynamicRecipeComponent = 1082;
	k_EMsgGCFulfillDynamicRecipeComponentResponse = 1083;
	k_EMsgGCClientRequestMarketData = 1084;
	k_EMsgGCClientRequestMarketDataResponse = 1085;
	k_EMsgGCExtractGems = 1086;
	k_EMsgGCAddSocket = 1087;
	k_EMsgGCAddItemToSocket = 1088;
	k_EMsgGCAddItemToSocketResponse = 1089;
	k_EMsgGCAddSocketResponse = 1090;
	k_EMsgGCResetStrangeGemCount = 1091;
	k_EMsgGCRequestCrateItems = 1092;
	k_EMsgGCRequestCrateItemsResponse = 1093;
	k_EMsgGCExtractGemsResponse = 1094;
	k_EMsgGCResetStrangeGemCountResponse = 1095;
	k_EMsgGCServerUseItemRequest = 1103;
	k_EMsgGCAddGiftItem = 1104;
	k_EMsgGCRemoveItemGiftMessage = 1105;
	k_EMsgGCRemoveItemGiftMessageResponse = 1106;
	k_EMsgGCRemoveItemGifterAccountId = 1107;
	k_EMsgGCRemoveItemGifterAccountIdResponse = 1108;
	k_EMsgClientToGCRemoveItemGifterAttributes = 1109;
	k_EMsgClientToGCRemoveItemName = 1110;
	k_EMsgClientToGCRemoveItemDescription = 1111;
	k_EMsgClientToGCRemoveItemAttributeResponse = 1112;
	k_EMsgGCTradingBase = 1500;
	k_EMsgGCTrading_InitiateTradeRequest = 1501;
	k_EMsgGCTrading_InitiateTradeResponse = 1502;
	k_EMsgGCTrading_StartSession = 1503;
	k_EMsgGCTrading_SessionClosed = 1509;
	k_EMsgGCTrading_InitiateTradeRequestResponse = 1514;
	k_EMsgGCServerBrowser_FavoriteServer = 1601;
	k_EMsgGCServerBrowser_BlacklistServer = 1602;
	k_EMsgGCServerRentalsBase = 1700;
	k_EMsgGCDev_NewItemRequest = 2001;
	k_EMsgGCDev_NewItemRequestResponse = 2002;
	k_EMsgGCDev_UnlockAllItemStylesRequest = 2003;
	k_EMsgGCDev_UnlockAllItemStylesResponse = 2004;
	k_EMsgGCStorePurchaseFinalize = 2504;
	k_EMsgGCStorePurchaseFinalizeResponse = 2505;
	k_EMsgGCStorePurchaseCancel = 2506;
	k_EMsgGCStorePurchaseCancelResponse = 2507;
	k_EMsgGCStorePurchaseInit = 2510;
	k_EMsgGCStorePurchaseInitResponse = 2511;
	k_EMsgGCToGCBannedWordListUpdated = 2515;
	k_EMsgGCToGCDirtySDOCache = 2516;
	k_EMsgGCToGCDirtyMultipleSDOCache = 2517;
	k_EMsgGCToGCUpdateSQLKeyValue = 2518;
	k_EMsgGCToGCBroadcastConsoleCommand = 2521;
	k_EMsgGCServerVersionUpdated = 2522;
	k_EMsgGCApplyAutograph = 2523;
	k_EMsgGCToGCWebAPIAccountChanged = 2524;
	k_EMsgGCClientVersionUpdated = 2528;
	k_EMsgGCItemPurgatory_FinalizePurchase = 2531;
	k_EMsgGCItemPurgatory_FinalizePurchaseResponse = 2532;
	k_EMsgGCItemPurgatory_RefundPurchase = 2533;
	k_EMsgGCItemPurgatory_RefundPurchaseResponse = 2534;
	k_EMsgGCToGCPlayerStrangeCountAdjustments = 2535;
	k_EMsgGCRequestStoreSalesData = 2536;
	k_EMsgGCRequestStoreSalesDataResponse = 2537;
	k_EMsgGCRequestStoreSalesDataUpToDateResponse = 2538;
	k_EMsgGCToGCPingRequest = 2539;
	k_EMsgGCToGCPingResponse = 2540;
	k_EMsgGCToGCGetUserSessionServer = 2541;
	k_EMsgGCToGCGetUserSessionServerResponse = 2542;
	k_EMsgGCToGCGetUserServerMembers = 2543;
	k_EMsgGCToGCGetUserServerMembersResponse = 2544;
	k_EMsgGCToGCGetUserPCBangNo = 2545;
	k_EMsgGCToGCGetUserPCBangNoResponse = 2546;
	k_EMsgGCToGCCanUseDropRateBonus = 2547;
	k_EMsgSQLAddDropRateBonus = 2548;
	k_EMsgGCToGCRefreshSOCache = 2549;
	k_EMsgGCToGCApplyLocalizationDiff = 2550;
	k_EMsgGCToGCApplyLocalizationDiffResponse = 2551;
	k_EMsgGCToGCCheckAccountTradeStatus = 2552;
	k_EMsgGCToGCCheckAccountTradeStatusResponse = 2553;
	k_EMsgGCToGCGrantAccountRolledItems = 2554;
	k_EMsgGCToGCGrantSelfMadeItemToAccount = 2555;
	k_EMsgGCPartnerBalanceRequest = 2557;
	k_EMsgGCPartnerBalanceResponse = 2558;
	k_EMsgGCPartnerRechargeRedirectURLRequest = 2559;
	k_EMsgGCPartnerRechargeRedirectURLResponse = 2560;
	k_EMsgGCStatueCraft = 2561;
	k_EMsgGCRedeemCode = 2562;
	k_EMsgGCRedeemCodeResponse = 2563;
	k_EMsgGCToGCItemConsumptionRollback = 2564;
	k_EMsgClientToGCWrapAndDeliverGift = 2565;
	k_EMsgClientToGCWrapAndDeliverGiftResponse = 2566;
	k_EMsgClientToGCUnpackBundleResponse = 2567;
	k_EMsgGCToClientStoreTransactionCompleted = 2568;
	k_EMsgClientToGCEquipItems = 2569;
	k_EMsgClientToGCEquipItemsResponse = 2570;
	k_EMsgClientToGCUnlockItemStyle = 2571;
	k_EMsgClientToGCUnlockItemStyleResponse = 2572;
	k_EMsgClientToGCSetItemInventoryCategory = 2573;
	k_EMsgClientToGCUnlockCrate = 2574;
	k_EMsgClientToGCUnlockCrateResponse = 2575;
	k_EMsgClientToGCUnpackBundle = 2576;
	k_EMsgClientToGCSetItemStyle = 2577;
	k_EMsgClientToGCSetItemStyleResponse = 2578;
	k_EMsgSQLGCToGCGrantBackpackSlots = 2580;
	k_EMsgClientToGCLookupAccountName = 2581;
	k_EMsgClientToGCLookupAccountNameResponse = 2582;
	k_EMsgGCToGCDevRevokeUserItems = 2583;
	k_EMsgClientToGCCreateStaticRecipe = 2584;
	k_EMsgClientToGCCreateStaticRecipeResponse = 2585;
	k_EMsgGCToGCStoreProcessCDKeyTransaction = 2586;
	k_EMsgGCToGCStoreProcessCDKeyTransactionResponse = 2587;
	k_EMsgGCToGCStoreProcessSettlement = 2588;
	k_EMsgGCToGCStoreProcessSettlementResponse = 2589;
	k_EMsgGCToGCConsoleOutput = 2590;
	k_EMsgGCToClientItemAges = 2591;
	k_EMsgGCToGCInternalTestMsg = 2592;
	k_EMsgGCToGCClientServerVersionsUpdated = 2593;
	k_EMsgGCUseMultipleItemsRequest = 2594;
	k_EMsgGCGetAccountSubscriptionItem = 2595;
	k_EMsgGCGetAccountSubscriptionItemResponse = 2596;
	k_EMsgGCToGCBroadcastMessageFromSub = 2598;
	k_EMsgGCToClientCurrencyPricePoints = 2599;
	k_EMsgGCToGCAddSubscriptionTime = 2600;
	k_EMsgGCToGCFlushSteamInventoryCache = 2601;
	k_EMsgGCRequestCrateEscalationLevel = 2602;
	k_EMsgGCRequestCrateEscalationLevelResponse = 2603;
	k_EMsgGCToGCUpdateSubscriptionItems = 2604;
}

enum EItemPurgatoryResponse_Finalize {
	k_ItemPurgatoryResponse_Finalize_Succeeded = 0;
	k_ItemPurgatoryResponse_Finalize_Failed_Incomplete = 1;
	k_ItemPurgatoryResponse_Finalize_Failed_ItemsNotInPurgatory = 2;
	k_ItemPurgatoryResponse_Finalize_Failed_CouldNotFindItems = 3;
	k_ItemPurgatoryResponse_Finalize_Failed_NoSOCache = 4;
	k_ItemPurgatoryResponse_Finalize_BackpackFull = 5;
}

enum EItemPurgatoryResponse_Refund {
	k_ItemPurgatoryResponse_Refund_Succeeded = 0;
	k_ItemPurgatoryResponse_Refund_Failed_ItemNotInPurgatory = 1;
	k_ItemPurgatoryResponse_Refund_Failed_CouldNotFindItem = 2;
	k_ItemPurgatoryResponse_Refund_Failed_NoSOCache = 3;
	k_ItemPurgatoryResponse_Refund_Failed_NoDetail = 4;
}

enum EGCMsgInitiateTradeResponse {
	k_EGCMsgInitiateTradeResponse_Accepted = 0;
	k_EGCMsgInitiateTradeResponse_Declined = 1;
	k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator = 2;
	k_EGCMsgInitiateTradeResponse_VAC_Banned_Target = 3;
	k_EGCMsgInitiateTradeResponse_Target_Already_Trading = 4;
	k_EGCMsgInitiateTradeResponse_Disabled = 5;
	k_EGCMsgInitiateTradeResponse_NotLoggedIn = 6;
	k_EGCMsgInitiateTradeResponse_Cancel = 7;
	k_EGCMsgInitiateTradeResponse_TooSoon = 8;
	k_EGCMsgInitiateTradeResponse_TooSoonPenalty = 9;
	k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator = 10;
	k_EGCMsgInitiateTradeResponse_Trade_Banned_Target = 11;
	k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED = 12;
	k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator = 13;
	k_EGCMsgInitiateTradeResponse_Service_Unavailable = 14;
	k_EGCMsgInitiateTradeResponse_Target_Blocked = 15;
	k_EGCMsgInitiateTradeResponse_NeedVerifiedEmail = 16;
	k_EGCMsgInitiateTradeResponse_NeedSteamGuard = 17;
	k_EGCMsgInitiateTradeResponse_SteamGuardDuration = 18;
	k_EGCMsgInitiateTradeResponse_TheyCannotTrade = 19;
	k_EGCMsgInitiateTradeResponse_Recent_Password_Reset = 20;
	k_EGCMsgInitiateTradeResponse_Using_New_Device = 21;
	k_EGCMsgInitiateTradeResponse_Sent_Invalid_Cookie = 22;
	k_EGCMsgInitiateTradeResponse_TooRecentFriend = 23;
	k_EGCMsgInitiateTradeResponse_WalledFundsNotTrusted = 24;
}

message CMsgApplyAutograph {
	optional uint64 autograph_item_id = 1;
	optional uint64 item_item_id = 2;
}

message CMsgAdjustItemEquippedState {
	optional uint64 item_id = 1;
	optional uint32 new_class = 2;
	optional uint32 new_slot = 3;
	optional uint32 style_index = 4;
}

message CMsgEconPlayerStrangeCountAdjustment {
	message CStrangeCountAdjustment {
		optional uint32 event_type = 1;
		optional uint64 item_id = 2;
		optional uint32 adjustment = 3;
	}

	optional uint32 account_id = 1;
	repeated .CMsgEconPlayerStrangeCountAdjustment.CStrangeCountAdjustment strange_count_adjustments = 2;
	optional bool turbo_mode = 3;
}

message CMsgRequestItemPurgatory_FinalizePurchase {
	repeated uint64 item_ids = 1;
}

message CMsgRequestItemPurgatory_FinalizePurchaseResponse {
	optional uint32 result = 1;
	repeated uint64 item_ids = 2;
}

message CMsgRequestItemPurgatory_RefundPurchase {
	repeated uint64 item_ids = 1;
}

message CMsgRequestItemPurgatory_RefundPurchaseResponse {
	optional uint32 result = 1;
}

message CMsgCraftingResponse {
	repeated uint64 item_ids = 1;
}

message CMsgGCRequestStoreSalesData {
	optional uint32 version = 1;
	optional uint32 currency = 2;
}

message CMsgGCRequestStoreSalesDataResponse {
	message Price {
		optional uint32 item_def = 1;
		optional uint32 price = 2;
	}

	repeated .CMsgGCRequestStoreSalesDataResponse.Price sale_price = 1;
	optional uint32 version = 2;
	optional uint32 expiration_time = 3;
}

message CMsgGCRequestStoreSalesDataUpToDateResponse {
	optional uint32 version = 1;
	optional uint32 expiration_time = 2;
}

message CMsgGCToGCPingRequest {
}

message CMsgGCToGCPingResponse {
}

message CMsgGCToGCGetUserSessionServer {
	optional uint32 account_id = 1;
}

message CMsgGCToGCGetUserSessionServerResponse {
	optional fixed64 server_steam_id = 1;
	optional bool is_online = 2;
}

message CMsgGCToGCGetUserServerMembers {
	optional uint32 account_id = 1;
	optional uint32 max_spectators = 2;
}

message CMsgGCToGCGetUserServerMembersResponse {
	repeated uint32 member_account_id = 1;
}

message CMsgLookupMultipleAccountNames {
	repeated uint32 accountids = 1 [packed = true];
}

message CMsgLookupMultipleAccountNamesResponse {
	message Account {
		optional uint32 accountid = 1;
		optional string persona = 2;
	}

	repeated .CMsgLookupMultipleAccountNamesResponse.Account accounts = 1;
}

message CMsgRequestCrateItems {
	optional uint32 crate_item_def = 1;
}

message CMsgRequestCrateItemsResponse {
	enum EResult {
		k_Succeeded = 0;
		k_Failed = 1;
	}

	optional uint32 response = 1;
	repeated uint32 item_defs = 2;
	repeated uint32 peek_item_defs = 3;
}

message CMsgRequestCrateEscalationLevel {
	optional uint32 crate_item_def = 1;
}

message CMsgRequestCrateEscalationLevelResponse {
	enum EResult {
		k_Succeeded = 0;
		k_Failed = 1;
	}

	optional uint32 response = 1;
	optional uint32 escalation_level0 = 2;
	optional uint32 escalation_level1 = 3;
	optional uint32 escalation_level2 = 4;
	optional uint32 escalation_level3 = 5;
}

message CMsgGCToGCCanUseDropRateBonus {
	optional uint32 account_id = 1;
	optional float drop_rate_bonus = 2;
	optional uint32 booster_type = 3;
	optional uint32 exclusive_item_def = 4;
	optional bool allow_equal_rate = 5;
}

message CMsgSQLAddDropRateBonus {
	optional uint32 account_id = 1;
	optional uint64 item_id = 2;
	optional uint32 item_def = 3;
	optional float drop_rate_bonus = 4;
	optional uint32 booster_type = 5;
	optional uint32 seconds_duration = 6;
	optional uint32 end_time_stamp = 7;
}

message CMsgSQLUpgradeBattleBooster {
	optional uint32 account_id = 1;
	optional uint32 item_def = 2;
	optional float bonus_to_add = 3;
	optional uint32 booster_type = 4;
}

message CMsgGCToGCRefreshSOCache {
	optional uint32 account_id = 1;
	optional bool reload = 2;
}

message CMsgGCToGCCheckAccountTradeStatus {
	optional uint32 account_id = 1;
	optional bool initiator = 2;
}

message CMsgGCToGCCheckAccountTradeStatusResponse {
	optional bool can_trade = 1;
	optional uint32 error_code = 2;
}

message CMsgGCToGCAddSubscriptionTime {
	optional uint32 account_id = 1;
	repeated uint32 matching_subscription_def_indexes = 2;
	optional uint32 additional_seconds = 3;
}

message CMsgGCToGCGrantAccountRolledItems {
	message Item {
		message DynamicAttribute {
			optional string name = 1;
			optional uint32 value_uint32 = 2;
			optional float value_float = 3;
			optional string value_string = 4;
		}

		message AdditionalAuditEntry {
			optional uint32 owner_account_id = 1;
			optional uint32 audit_action = 2;
			optional uint64 audit_data = 3;
		}

		optional uint32 item_def = 1;
		repeated string loot_lists = 2;
		optional bool ignore_limit = 3;
		optional uint32 origin = 4;
		repeated .CMsgGCToGCGrantAccountRolledItems.Item.DynamicAttribute dynamic_attributes = 5;
		repeated .CMsgGCToGCGrantAccountRolledItems.Item.AdditionalAuditEntry additional_audit_entries = 6;
		optional uint32 inventory_token = 7;
	}

	optional uint32 account_id = 1;
	repeated .CMsgGCToGCGrantAccountRolledItems.Item items = 2;
	optional uint32 audit_action = 3;
	optional uint64 audit_data = 4;
}

message CMsgGCToGCGrantSelfMadeItemToAccount {
	optional uint32 item_def_index = 1;
	optional uint32 accountid = 2;
}

message CMsgUseItem {
	optional uint64 item_id = 1;
	optional fixed64 target_steam_id = 2;
	repeated uint32 gift__potential_targets = 3;
	optional uint32 duel__class_lock = 4;
	optional uint64 initiator_steam_id = 5;
	optional bool itempack__ack_immediately = 6;
}

message CMsgServerUseItem {
	optional uint32 initiator_account_id = 1;
	optional .CMsgUseItem use_item_msg = 2;
}

message CMsgUseMultipleItems {
	repeated uint64 item_ids = 1;
}

message CMsgGCPartnerBalanceRequest {
}

message CMsgGCPartnerBalanceResponse {
	optional .EGCPartnerRequestResponse result = 1 [default = k_EPartnerRequestOK];
	optional uint32 balance = 2;
}

message CGCStoreRechargeRedirect_LineItem {
	optional uint32 item_def_id = 1;
	optional uint32 quantity = 2;
}

message CMsgGCPartnerRechargeRedirectURLRequest {
	repeated .CGCStoreRechargeRedirect_LineItem line_items = 1;
}

message CMsgGCPartnerRechargeRedirectURLResponse {
	optional .EGCPartnerRequestResponse result = 1 [default = k_EPartnerRequestOK];
	optional string url = 2;
}

message CMsgGCEconSQLWorkItemEmbeddedRollbackData {
	optional uint32 account_id = 1;
	optional uint64 deleted_item_id = 2;
	optional uint32 old_audit_action = 3;
	optional uint32 new_audit_action = 4;
	optional uint32 expected_audit_action = 5;
}

message CMsgCraftStatue {
	optional uint32 heroid = 1;
	optional string sequencename = 2;
	optional float cycle = 3;
	optional string description = 4;
	optional uint32 pedestal_itemdef = 5;
	optional uint64 toolid = 6;
}

message CMsgRedeemCode {
	optional string code = 1;
}

message CMsgRedeemCodeResponse {
	enum EResultCode {
		k_Succeeded = 0;
		k_Failed_CodeNotFound = 1;
		k_Failed_CodeAlreadyUsed = 2;
		k_Failed_OtherError = 3;
	}

	optional uint32 response = 1;
	optional uint64 item_id = 2;
}

message CMsgDevNewItemRequest {
	optional string item_def_name = 3;
	optional string loot_list_name = 4;
	repeated string attr_def_name = 5;
	repeated string attr_value = 6;
}

message CMsgDevNewItemRequestResponse {
	optional bool success = 1;
}

message CMsgDevUnlockAllItemStyles {
	optional uint64 item_id = 1;
}

message CMsgDevUnlockAllItemStylesResponse {
	optional bool success = 1;
}

message CMsgGCGetAccountSubscriptionItem {
	optional uint32 account_id = 1;
}

message CMsgGCGetAccountSubscriptionItemResponse {
	optional uint32 def_index = 1;
}

message CMsgGCAddGiftItem {
	optional uint32 account_id = 1;
	optional uint64 item_id = 2;
}

message CMsgClientToGCWrapAndDeliverGift {
	optional uint64 item_id = 1;
	optional uint32 give_to_account_id = 2;
	optional string gift_message = 3;
}

message CMsgClientToGCWrapAndDeliverGiftResponse {
	optional .EGCMsgResponse response = 1 [default = k_EGCMsgResponseOK];
	optional uint32 gifting_charge_uses = 2;
	optional int32 gifting_charge_max = 3;
	optional uint32 gifting_uses = 4;
	optional int32 gifting_max = 5;
	optional uint32 gifting_window_hours = 6;
	optional .EGCMsgInitiateTradeResponse trade_restriction = 7 [default = k_EGCMsgInitiateTradeResponse_Accepted];
}

message CMsgClientToGCUnwrapGift {
	optional uint64 item_id = 1;
}

message CMsgClientToGCGetGiftPermissions {
}

message CMsgClientToGCGetGiftPermissionsResponse {
	message FriendPermission {
		optional uint32 account_id = 1;
		optional .EGCMsgInitiateTradeResponse permission = 2 [default = k_EGCMsgInitiateTradeResponse_Accepted];
	}

	optional bool is_unlimited = 1;
	optional bool has_two_factor = 3;
	optional .EGCMsgInitiateTradeResponse sender_permission = 6 [default = k_EGCMsgInitiateTradeResponse_Accepted];
	optional uint32 friendship_age_requirement = 7;
	optional uint32 friendship_age_requirement_two_factor = 8;
	repeated .CMsgClientToGCGetGiftPermissionsResponse.FriendPermission friend_permissions = 9;
}

message CMsgClientToGCUnpackBundle {
	optional uint64 item_id = 1;
}

message CMsgClientToGCUnpackBundleResponse {
	enum EUnpackBundle {
		k_UnpackBundle_Succeeded = 0;
		k_UnpackBundle_Failed_ItemIsNotBundle = 1;
		k_UnpackBundle_Failed_UnableToCreateContainedItem = 2;
		k_UnpackBundle_Failed_SOCacheError = 3;
		k_UnpackBundle_Failed_ItemIsInvalid = 4;
		k_UnpackBundle_Failed_BadItemQuantity = 5;
		k_UnpackBundle_Failed_UnableToDeleteItem = 6;
	}

	repeated uint64 unpacked_item_ids = 1;
	optional .CMsgClientToGCUnpackBundleResponse.EUnpackBundle response = 2 [default = k_UnpackBundle_Succeeded];
	repeated uint32 unpacked_item_def_indexes = 3;
}

message CMsgGCToClientStoreTransactionCompleted {
	optional uint64 txn_id = 1;
	repeated uint64 item_ids = 2;
}

message CMsgClientToGCEquipItems {
	repeated .CMsgAdjustItemEquippedState equips = 1;
}

message CMsgClientToGCEquipItemsResponse {
	optional fixed64 so_cache_version_id = 1;
}

message CMsgClientToGCSetItemStyle {
	optional uint64 item_id = 1;
	optional uint32 style_index = 2;
}

message CMsgClientToGCSetItemStyleResponse {
	enum ESetStyle {
		k_SetStyle_Succeeded = 0;
		k_SetStyle_Failed = 1;
		k_SetStyle_Failed_StyleIsLocked = 2;
	}

	optional .CMsgClientToGCSetItemStyleResponse.ESetStyle response = 1 [default = k_SetStyle_Succeeded];
}

message CMsgClientToGCUnlockItemStyle {
	optional uint64 item_to_unlock = 1;
	optional uint32 style_index = 2;
	repeated uint64 consumable_item_ids = 3;
}

message CMsgClientToGCUnlockItemStyleResponse {
	enum EUnlockStyle {
		k_UnlockStyle_Succeeded = 0;
		k_UnlockStyle_Failed_PreReq = 1;
		k_UnlockStyle_Failed_CantAfford = 2;
		k_UnlockStyle_Failed_CantCommit = 3;
		k_UnlockStyle_Failed_CantLockCache = 4;
		k_UnlockStyle_Failed_CantAffordAttrib = 5;
		k_UnlockStyle_Failed_CantAffordGem = 6;
		k_UnlockStyle_Failed_NoCompendiumLevel = 7;
		k_UnlockStyle_Failed_AlreadyUnlocked = 8;
		k_UnlockStyle_Failed_OtherError = 9;
		k_UnlockStyle_Failed_ItemIsInvalid = 10;
		k_UnlockStyle_Failed_ToolIsInvalid = 11;
	}

	optional .CMsgClientToGCUnlockItemStyleResponse.EUnlockStyle response = 1 [default = k_UnlockStyle_Succeeded];
	optional uint64 item_id = 2;
	optional uint32 style_index = 3;
	optional uint32 style_prereq = 4;
}

message CMsgClientToGCSetItemInventoryCategory {
	repeated uint64 item_ids = 1;
	optional uint32 set_to_value = 2;
	optional uint32 remove_categories = 3;
	optional uint32 add_categories = 4;
}

message CMsgClientToGCUnlockCrate {
	optional uint64 crate_item_id = 1;
	optional uint64 key_item_id = 2;
}

message CMsgClientToGCUnlockCrateResponse {
	message Item {
		optional uint64 item_id = 1;
		optional uint32 def_index = 2;
	}

	optional .EGCMsgResponse result = 1 [default = k_EGCMsgResponseOK];
	repeated .CMsgClientToGCUnlockCrateResponse.Item granted_items = 2;
}

message CMsgClientToGCRemoveItemAttribute {
	optional uint64 item_id = 1;
}

message CMsgClientToGCRemoveItemAttributeResponse {
	enum ERemoveItemAttribute {
		k_RemoveItemAttribute_Succeeded = 0;
		k_RemoveItemAttribute_Failed = 1;
		k_RemoveItemAttribute_Failed_ItemIsInvalid = 2;
		k_RemoveItemAttribute_Failed_AttributeCannotBeRemoved = 3;
		k_RemoveItemAttribute_Failed_AttributeDoesntExist = 4;
	}

	optional .CMsgClientToGCRemoveItemAttributeResponse.ERemoveItemAttribute response = 1 [default = k_RemoveItemAttribute_Succeeded];
	optional uint64 item_id = 2;
}

message CMsgClientToGCNameItem {
	optional uint64 subject_item_id = 1;
	optional uint64 tool_item_id = 2;
	optional string name = 3;
}

message CMsgClientToGCNameItemResponse {
	enum ENameItem {
		k_NameItem_Succeeded = 0;
		k_NameItem_Failed = 1;
		k_NameItem_Failed_ToolIsInvalid = 2;
		k_NameItem_Failed_ItemIsInvalid = 3;
		k_NameItem_Failed_NameIsInvalid = 4;
	}

	optional .CMsgClientToGCNameItemResponse.ENameItem response = 1 [default = k_NameItem_Succeeded];
	optional uint64 item_id = 2;
}

message CMsgGCSetItemPosition {
	optional uint64 item_id = 1;
	optional uint32 new_position = 2;
}

message CAttribute_ItemDynamicRecipeComponent {
	optional uint32 item_def = 1;
	optional uint32 item_quality = 2;
	optional uint32 item_flags = 3;
	optional string attributes_string = 4;
	optional uint32 item_count = 5;
	optional uint32 items_fulfilled = 6;
	optional uint32 item_rarity = 7;
	optional string lootlist = 8;
	optional uint64 fulfilled_item_id = 9;
}

message CProtoItemSocket {
	optional uint64 item_id = 1;
	optional uint32 attr_def_index = 2;
	optional uint32 required_type = 3;
	optional string required_hero = 4;
	optional uint32 gem_def_index = 5;
	optional bool not_tradable = 6;
	optional string required_item_slot = 7;
}

message CProtoItemSocket_Empty {
	optional .CProtoItemSocket socket = 1;
}

message CProtoItemSocket_Effect {
	optional .CProtoItemSocket socket = 1;
	optional uint32 effect = 2;
}

message CProtoItemSocket_Color {
	optional .CProtoItemSocket socket = 1;
	optional uint32 red = 2;
	optional uint32 green = 3;
	optional uint32 blue = 4;
}

message CProtoItemSocket_Strange {
	optional .CProtoItemSocket socket = 1;
	optional uint32 strange_type = 2;
	optional uint32 strange_value = 3;
}

message CProtoItemSocket_Spectator {
	optional .CProtoItemSocket socket = 1;
	optional uint32 games_viewed = 2;
	optional uint32 corporation_id = 3;
	optional uint32 league_id = 4;
	optional uint32 team_id = 5;
}

message CProtoItemSocket_AssetModifier {
	optional .CProtoItemSocket socket = 1;
	optional uint32 asset_modifier = 2;
}

message CProtoItemSocket_AssetModifier_DESERIALIZE_FROM_STRING_ONLY {
	optional .CProtoItemSocket socket = 1;
	optional uint32 asset_modifier = 2;
	optional uint32 anim_modifier = 3;
	optional uint32 ability_effect = 4;
}

message CProtoItemSocket_Autograph {
	optional .CProtoItemSocket socket = 1;
	optional string autograph = 2;
	optional uint32 autograph_id = 3;
	optional uint32 autograph_score = 4;
}

message CProtoItemSocket_StaticVisuals {
	optional .CProtoItemSocket socket = 1;
}

message CAttribute_String {
	optional string value = 1;
}

message CWorkshop_GetItemDailyRevenue_Request {
	optional uint32 appid = 1;
	optional uint32 item_id = 2;
	optional uint32 date_start = 3;
	optional uint32 date_end = 4;
}

message CWorkshop_GetItemDailyRevenue_Response {
	message CountryDailyRevenue {
		optional string country_code = 1;
		optional uint32 date = 2;
		optional int64 revenue_usd = 3;
		optional int32 units = 4;
	}

	repeated .CWorkshop_GetItemDailyRevenue_Response.CountryDailyRevenue country_revenue = 1;
}

message CWorkshop_GetPackageDailyRevenue_Request {
	optional uint32 packageid = 1;
	optional uint32 date_start = 2;
	optional uint32 date_end = 3;
}

message CWorkshop_GetPackageDailyRevenue_Response {
	message CountryDailyRevenue {
		optional string country_code = 1;
		optional uint32 date = 2;
		optional int64 revenue_usd = 3;
		optional int32 units = 4;
	}

	repeated .CWorkshop_GetPackageDailyRevenue_Response.CountryDailyRevenue country_revenue = 1;
}

message CMsgSQLGCToGCGrantBackpackSlots {
	optional uint32 account_id = 1;
	optional uint32 add_slots = 2;
}

message CMsgClientToGCLookupAccountName {
	optional uint32 account_id = 1;
}

message CMsgClientToGCLookupAccountNameResponse {
	optional uint32 account_id = 1;
	optional string account_name = 2;
}

message CMsgClientToGCCreateStaticRecipe {
	message Item {
		optional uint64 item_id = 1;
		optional uint32 slot_id = 2;
	}

	repeated .CMsgClientToGCCreateStaticRecipe.Item items = 1;
	optional uint32 recipe_def_index = 2;
}

message CMsgClientToGCCreateStaticRecipeResponse {
	message OutputItem {
		optional uint32 def_index = 1;
		optional uint64 item_id = 2;
		optional uint32 slot_id = 3;
	}

	message InputError {
		optional uint32 slot_id = 1;
		optional .CMsgClientToGCCreateStaticRecipeResponse.EResponse error = 2 [default = eResponse_Success];
	}

	message AdditionalOutput {
		optional uint32 slot_id = 1;
		optional uint64 value = 2;
	}

	enum EResponse {
		eResponse_Success = 0;
		eResponse_OfferingDisabled = 1;
		eResponse_InvalidItems = 2;
		eResponse_InternalError = 3;
		eResponse_MissingLeague = 4;
		eResponse_MissingEvent = 5;
	}

	optional .CMsgClientToGCCreateStaticRecipeResponse.EResponse response = 1 [default = eResponse_Success];
	repeated .CMsgClientToGCCreateStaticRecipeResponse.OutputItem output_items = 2;
	repeated .CMsgClientToGCCreateStaticRecipeResponse.InputError input_errors = 3;
	repeated .CMsgClientToGCCreateStaticRecipeResponse.AdditionalOutput additional_outputs = 4;
}

message CMsgProcessTransactionOrder {
	message Item {
		optional uint32 item_def_index = 1;
		optional uint32 item_price = 2;
		optional uint32 quantity = 3;
		optional string category_desc = 4;
		optional uint32 store_purchase_type = 5;
		optional uint64 source_reference_id = 6;
		optional int32 parent_stack_index = 7;
		optional bool default_price = 8;
		optional bool is_user_facing = 9;
	}

	optional uint64 txn_id = 1;
	optional uint64 steam_txn_id = 2;
	optional uint64 partner_txn_id = 3;
	optional fixed64 steam_id = 4;
	optional uint32 time_stamp = 5;
	optional uint64 watermark = 6;
	optional int32 purchase_report_status = 7;
	optional uint32 currency = 8;
	repeated .CMsgProcessTransactionOrder.Item items = 9;
}

message CMsgGCToGCStoreProcessCDKeyTransaction {
	optional .CMsgProcessTransactionOrder order = 1;
	optional uint32 reason_code = 2;
}

message CMsgGCToGCStoreProcessCDKeyTransactionResponse {
	optional bool success = 1;
}

message CMsgGCToGCStoreProcessSettlement {
	optional .CMsgProcessTransactionOrder order = 1;
	optional uint32 partner = 2;
}

message CMsgGCToGCStoreProcessSettlementResponse {
	optional bool success = 1;
}

message CMsgGCToGCBroadcastConsoleCommand {
	optional string con_command = 1;
	optional bool report_output = 2;
	optional uint32 sending_gc = 3;
	optional string output_initiator = 4;
}

message CMsgGCToGCConsoleOutput {
	message OutputLine {
		optional string text = 1;
		optional uint32 spew_level = 2;
	}

	optional string initiator = 1;
	optional uint32 sending_gc = 2;
	repeated .CMsgGCToGCConsoleOutput.OutputLine msgs = 3;
}

message CMsgItemAges {
	message MaxItemIDTimestamp {
		optional uint32 timestamp = 1;
		optional uint64 max_item_id = 2;
	}

	repeated .CMsgItemAges.MaxItemIDTimestamp max_item_id_timestamps = 1;
}

message CMsgGCToGCInternalTestMsg {
	optional uint32 sending_gc = 1;
	optional fixed64 sender_id = 2;
	optional uint32 context = 3;
	optional uint32 message_id = 4;
	optional bytes message_body = 5;
	optional fixed64 job_id_source = 6;
	optional fixed64 job_id_target = 7;
}

message CMsgGCToGCClientServerVersionsUpdated {
	optional uint32 client_min_allowed_version = 1;
	optional uint32 client_active_version = 2;
	optional uint32 server_active_version = 3;
	optional uint32 server_deployed_version = 4;
}

message CMsgGCToGCBroadcastMessageFromSub {
	optional uint32 msg_id = 1;
	optional bytes serialized_msg = 2;
	repeated uint32 account_id_list = 3 [packed = true];
	repeated fixed64 steam_id_list = 4 [packed = true];
}

message CMsgGCToClientCurrencyPricePoints {
	message Currency {
		optional uint32 currency_id = 1;
		repeated uint64 currency_price = 2 [packed = true];
	}

	repeated uint64 price_key = 1 [packed = true];
	repeated .CMsgGCToClientCurrencyPricePoints.Currency currencies = 2;
}

message CMsgBannedWordList {
	optional uint32 version = 1;
	repeated string banned_words = 2;
}

message CEcon_FlushInventoryCache_Request {
	optional uint64 steamid = 1;
	optional uint32 appid = 2;
	optional uint64 contextid = 3;
}

message CEcon_FlushInventoryCache_Response {
	optional bool success = 1;
}

message CMsgGCToGCFlushSteamInventoryCache {
	message Key {
		optional uint64 steamid = 1;
		optional uint64 contextid = 2;
	}

	repeated .CMsgGCToGCFlushSteamInventoryCache.Key keys = 1;
}

message CMsgGCToGCUpdateSubscriptionItems {
	optional uint32 account_id = 1;
	optional bool always_notify = 2;
}
