steam-engine 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,40 @@
1
+ name: docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths: [docs/**, mkdocs.yml, .github/workflows/docs.yml]
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+ pages: write
12
+ id-token: write
13
+
14
+ concurrency:
15
+ group: pages
16
+ cancel-in-progress: true
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ - uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.x"
26
+ - run: pip install -r requirements-docs.txt
27
+ - run: mkdocs build --strict
28
+ - uses: actions/upload-pages-artifact@v3
29
+ with:
30
+ path: site
31
+
32
+ deploy:
33
+ needs: build
34
+ runs-on: ubuntu-latest
35
+ environment:
36
+ name: github-pages
37
+ url: ${{ steps.deployment.outputs.page_url }}
38
+ steps:
39
+ - id: deployment
40
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,36 @@
1
+ name: release
2
+
3
+ on:
4
+ workflow_dispatch: # manual only — pick the branch/tag in the dispatch UI
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.x"
17
+ - run: pip install build twine && python -m build && twine check dist/*
18
+ - uses: actions/upload-artifact@v4
19
+ with:
20
+ name: dist
21
+ path: dist/
22
+
23
+ publish:
24
+ needs: build
25
+ runs-on: ubuntu-latest
26
+ environment:
27
+ name: pypi
28
+ url: https://pypi.org/p/steam-engine
29
+ permissions:
30
+ id-token: write # PyPI trusted publishing (OIDC) — no API token
31
+ steps:
32
+ - uses: actions/download-artifact@v4
33
+ with:
34
+ name: dist
35
+ path: dist/
36
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,5 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.egg-info/
4
+ site/
5
+ dist/
@@ -0,0 +1,87 @@
1
+ Metadata-Version: 2.5
2
+ Name: steam-engine
3
+ Version: 0.1.0
4
+ Summary: Drive a running Steam client's internals over Chrome DevTools Protocol (collections, apps, downloads, all of SteamClient.*)
5
+ License: MIT
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: websockets>=12
8
+ Description-Content-Type: text/markdown
9
+
10
+ # steam-engine
11
+
12
+ Call a running Steam client’s internal JavaScript API from Python.
13
+
14
+ `steam-engine` connects to Steam’s CEF renderer over Chrome DevTools Protocol. It exposes `SteamClient.*` methods and `window.*` stores through a Python proxy, so operations run through Steam itself.
15
+
16
+ For a higher-level collections API, see the sibling project `steam-collections`.
17
+
18
+ ## Get started
19
+
20
+ Install from the repository, then enable debugging in Steam:
21
+
22
+ ```sh
23
+ pip install -e .
24
+ steam-engine enable --restart
25
+ steam-engine status
26
+ ```
27
+
28
+ `enable` is Linux-only. It patches `ubuntu12_64/steamwebhelper_sniper_wrap.sh` and backs up the original to `.sh.bak`. Steam updates can replace this wrapper; run `enable` again if the connection stops working.
29
+
30
+ On Windows or macOS, launch Steam with `-cef-enable-debugging` or add `--remote-debugging-port` to the webhelper command line.
31
+
32
+ The default port is `1337`. Set `STEAM_CDP_PORT` to use another port.
33
+
34
+ ## Use from Python
35
+
36
+ Steam must be running with debugging enabled.
37
+
38
+ ```python
39
+ from steam_engine import SteamEngine
40
+
41
+ with SteamEngine.connect() as se:
42
+ # Call Steam's native bridge.
43
+ se.client.Apps.SetAppLaunchOptions(292030, "-fullscreen")
44
+
45
+ # Snake_case works too.
46
+ se.client.Apps.specify_compat_tool(105600, "proton_experimental")
47
+
48
+ # Read a JavaScript property.
49
+ apps = se.window.appStore.allApps.get()
50
+
51
+ # Run JavaScript directly.
52
+ count = se.eval("collectionStore.userCollections.length")
53
+ ```
54
+
55
+ The proxy supports:
56
+
57
+ | Syntax | Behavior |
58
+ | --------------------- | ------------------------------------------------------------ |
59
+ | `proxy.method(*args)` | Call a method with JSON-serialized arguments; await promises |
60
+ | `proxy.prop.get()` | Read a JSON-serializable property |
61
+ | `proxy.prop.keys()` | List own property names |
62
+ | `proxy.prop[index]` | Access an indexed value |
63
+
64
+ Method names ignore case and underscores. Results are JSON-decoded; `undefined` and unserializable results become `None`.
65
+
66
+ ## Use from the terminal
67
+
68
+ ```sh
69
+ steam-engine status # Check the connection
70
+ steam-engine targets # List debuggable targets
71
+ steam-engine enable --restart # Enable debugging and restart Steam (Linux)
72
+ steam-engine eval 'collectionStore.userCollections.length'
73
+ ```
74
+
75
+ ## API reference
76
+
77
+ The generated reference in `docs/` lists the discovered methods and stores. To refresh and browse it:
78
+
79
+ ```sh
80
+ python scripts/dump_api_surface.py
81
+ mkdocs serve
82
+ ```
83
+
84
+ Raw data is available at `docs/data/api_surface.json`.
85
+
86
+ Steam’s internal API is undocumented. Method names and arguments can change between client builds.
87
+
@@ -0,0 +1,78 @@
1
+ # steam-engine
2
+
3
+ Call a running Steam client’s internal JavaScript API from Python.
4
+
5
+ `steam-engine` connects to Steam’s CEF renderer over Chrome DevTools Protocol. It exposes `SteamClient.*` methods and `window.*` stores through a Python proxy, so operations run through Steam itself.
6
+
7
+ For a higher-level collections API, see the sibling project `steam-collections`.
8
+
9
+ ## Get started
10
+
11
+ Install from the repository, then enable debugging in Steam:
12
+
13
+ ```sh
14
+ pip install -e .
15
+ steam-engine enable --restart
16
+ steam-engine status
17
+ ```
18
+
19
+ `enable` is Linux-only. It patches `ubuntu12_64/steamwebhelper_sniper_wrap.sh` and backs up the original to `.sh.bak`. Steam updates can replace this wrapper; run `enable` again if the connection stops working.
20
+
21
+ On Windows or macOS, launch Steam with `-cef-enable-debugging` or add `--remote-debugging-port` to the webhelper command line.
22
+
23
+ The default port is `1337`. Set `STEAM_CDP_PORT` to use another port.
24
+
25
+ ## Use from Python
26
+
27
+ Steam must be running with debugging enabled.
28
+
29
+ ```python
30
+ from steam_engine import SteamEngine
31
+
32
+ with SteamEngine.connect() as se:
33
+ # Call Steam's native bridge.
34
+ se.client.Apps.SetAppLaunchOptions(292030, "-fullscreen")
35
+
36
+ # Snake_case works too.
37
+ se.client.Apps.specify_compat_tool(105600, "proton_experimental")
38
+
39
+ # Read a JavaScript property.
40
+ apps = se.window.appStore.allApps.get()
41
+
42
+ # Run JavaScript directly.
43
+ count = se.eval("collectionStore.userCollections.length")
44
+ ```
45
+
46
+ The proxy supports:
47
+
48
+ | Syntax | Behavior |
49
+ | --------------------- | ------------------------------------------------------------ |
50
+ | `proxy.method(*args)` | Call a method with JSON-serialized arguments; await promises |
51
+ | `proxy.prop.get()` | Read a JSON-serializable property |
52
+ | `proxy.prop.keys()` | List own property names |
53
+ | `proxy.prop[index]` | Access an indexed value |
54
+
55
+ Method names ignore case and underscores. Results are JSON-decoded; `undefined` and unserializable results become `None`.
56
+
57
+ ## Use from the terminal
58
+
59
+ ```sh
60
+ steam-engine status # Check the connection
61
+ steam-engine targets # List debuggable targets
62
+ steam-engine enable --restart # Enable debugging and restart Steam (Linux)
63
+ steam-engine eval 'collectionStore.userCollections.length'
64
+ ```
65
+
66
+ ## API reference
67
+
68
+ The generated reference in `docs/` lists the discovered methods and stores. To refresh and browse it:
69
+
70
+ ```sh
71
+ python scripts/dump_api_surface.py
72
+ mkdocs serve
73
+ ```
74
+
75
+ Raw data is available at `docs/data/api_surface.json`.
76
+
77
+ Steam’s internal API is undocumented. Method names and arguments can change between client builds.
78
+
@@ -0,0 +1,57 @@
1
+ <!--
2
+ AUTO-GENERATED by scripts/dump_api_surface.py from a live Steam client.
3
+ Names/membership change between Steam builds — regenerate, don't hand-edit.
4
+ -->
5
+
6
+ # Account, auth & storage
7
+
8
+ ## `SteamClient.User`
9
+
10
+ **Methods:** `AuthorizeMicrotxn`, `CancelLogin`, `CancelMicrotxn`, `CancelRefreshLogin`, `CancelShutdown`, `Connect`, `FlipToLogin`, `ForceShutdown`, `ForgetPassword`, `GetIPCountry`, `GetLoginProgress`, `GetLoginUsers`, `GetStartupUserChooserState`, `GoOffline`, `GoOnline`, `OptOutOfSurvey`, `PrepareForSystemSuspend`, `Reconnect`, `RemoveAllUsers`, `RemoveUser`, `RequestSupportSystemReport`, `RestartAsCurrentUser`, `RestartAsUser`, `RestartToLoginScreen`, `RestartToUserChooser`, `ResumeSuspendedGames`, `RunSurvey`, `SendSurvey`, `SetAsyncNotificationEnabled`, `SetCheckForUpdatesOnRestart`, `SetLoginCredentials`, `ShowSaveHardwareDialog`, `SignOutAndRestart`, `StartLogin`, `StartOffline`, `StartRefreshLogin`, `StartRestart`, `StartShutdown`
11
+
12
+ **Event subscriptions:** `OnCloseSaveHardwareDialog`, `RegisterForConnectionAttemptsThrottled`, `RegisterForCurrentUserChanges`, `RegisterForLoginStateChange`, `RegisterForLoginUsersChanged`, `RegisterForPrepareForSystemSuspendProgress`, `RegisterForResumeSuspendedGamesProgress`, `RegisterForShowHardwareSurvey`, `RegisterForShutdownDone`, `RegisterForShutdownFailed`, `RegisterForShutdownStart`, `RegisterForShutdownState`, `RegisterShowSaveHardwareDialog`
13
+
14
+ ## `SteamClient.Auth`
15
+
16
+ **Methods:** `ClearCachedSignInPin`, `CurrentUserHasCachedSignInPin`, `GetLocalHostname`, `GetMachineID`, `GetRefreshInfo`, `GetSteamGuardData`, `IsSecureComputer`, `SetCachedSignInPin`, `SetLoginToken`, `SetSteamGuardData`, `StartSignInFromCache`, `UserHasCachedSignInPin`, `ValidateCachedSignInPin`
17
+
18
+ ## `SteamClient.Parental`
19
+
20
+ **Methods:** `LockParentalLock`, `UnlockParentalLock`
21
+
22
+ **Event subscriptions:** `RegisterForParentalPlaytimeWarnings`, `RegisterForParentalSettingsChanges`
23
+
24
+ ## `SteamClient.Storage`
25
+
26
+ **Methods:** `DeleteKey`, `GetJSON`, `GetString`, `SetObject`, `SetString`
27
+
28
+ ## `SteamClient.RoamingStorage`
29
+
30
+ **Methods:** `DeleteKey`, `GetJSON`, `GetString`, `SetObject`, `SetString`
31
+
32
+ ## `SteamClient.MachineStorage`
33
+
34
+ **Methods:** `DeleteKey`, `GetJSON`, `GetString`, `SetObject`, `SetString`
35
+
36
+ ## `loginStore`
37
+
38
+ **Methods:** `GetLoginUsers`, `Init`, `OnLoginStateChange`, `OnLoginUsersChanged`, `RemoveAllUsers`, `RemoveUser`
39
+
40
+ **`m_hLoginStateChange`** — `unregister`
41
+
42
+ **`m_hLoginUsersChanged`** — `unregister`
43
+
44
+ **State:** `accountName`, `currentUserIsRemembered`, `emailDomain`, `isProbablySharedPC`, `loginPercentage`, `loginResult`, `loginState`, `m_bSecureComputer`, `m_eLoginResult`, `m_eLoginState`, `m_nLoginPercentage`, `m_strAccountName`, `m_strEmailDomain`, `m_vecLoginUsers`, `secureComputer`
45
+
46
+ ## `securitystore`
47
+
48
+ **Methods:** `BConsumeLockTicket`, `BResettingPIN`, `BShowResetPINModal`, `BeginPINReset`, `ClearPIN`, `ClearPINIfNotUsed`, `GetActiveLockScreenProps`, `GetSettings`, `Init`, `InitialLoginComplete`, `IsLockScreenActive`, `ProvideLockTicket`, `SetActiveLockScreenProps`, `SetHasShownResetPINModal`, `SetSettings`
49
+
50
+ **State:** `m_MachineStorage`, `m_bLockTicket`
51
+
52
+ ## `subscriberAgreementStore`
53
+
54
+ **Methods:** `AcceptSSA`, `EnsureLoaded`, `GetSubscriberAgreementInfo`, `Init`, `LoadSubscriberAgreementInfo`
55
+
56
+ **State:** `CMInterface`, `SubscriberAgreementInfoChangedCallbacks`, `m_PromiseLoading`, `m_SubscriberAgreementInfo`, `m_SubscriberAgreementInfoChangedCallbacks`, `m_cm`
57
+
@@ -0,0 +1,131 @@
1
+ <!--
2
+ AUTO-GENERATED by scripts/dump_api_surface.py from a live Steam client.
3
+ Names/membership change between Steam builds — regenerate, don't hand-edit.
4
+ -->
5
+
6
+ # Debug & misc helpers
7
+
8
+ ## `SteamClient.Console`
9
+
10
+ **Methods:** `ExecCommand`, `GetAutocompleteSuggestions`
11
+
12
+ **Event subscriptions:** `RegisterForSpewOutput`
13
+
14
+ ## `SteamClient._internal`
15
+
16
+ **Methods:** `BInGpuFallbackMode`, `ExecutePromise`, `GetBrowserProcessDetails`, `GetDisplayScaleFactors`, `IsDebuggingEnabled`, `RequestDisableGpu`, `SetDevMode`, `SetForceDeviceScaleFactor`, `SetRightToLeftMode`
17
+
18
+ **Event subscriptions:** `RegisterForStyleChanges`
19
+
20
+ ## `SteamClient.SteamChina`
21
+
22
+ **Methods:** `GetCustomLauncherAppID`
23
+
24
+ ## `CLSTAMP`
25
+
26
+ Global value: `"10971728"`
27
+
28
+ ## `EnableSteamConsole()`
29
+
30
+ Global function — arity 0.
31
+
32
+ ## `consoleStore`
33
+
34
+ **Methods:** `AddSpewLine`, `Init`, `OnSteamConsoleSpew`, `Reset`, `StartListening`, `StopListening`
35
+
36
+ **State:** `commandHistory`, `consoleSpew`, `m_listenHandle`, `m_nLineCounter`, `m_rgCommandHistory`, `m_rgConsoleSpew`
37
+
38
+ ## `webpackChunksteamui`
39
+
40
+ **Methods:** `push`
41
+
42
+ **State:** `0`, `1`, `10`, `11`, `12`, `13`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `length`
43
+
44
+ ## `__mobxInstanceCount`
45
+
46
+ Global value: `1`
47
+
48
+ ## `__mobxGlobals`
49
+
50
+ **State:** `allowStateChanges`, `allowStateReads`, `computedRequiresReaction`, `disableErrorBoundaries`, `enforceActions`, `globalReactionErrorHandlers`, `inBatch`, `isRunningReactions`, `observableRequiresReaction`, `pendingReactions`, `pendingUnobservations`, `reactionRequiresObservable`, `runId`, `safeDescriptors`, `spyListeners`, `suppressReactionErrors`, `useProxies`, `verifyProxies`, `version`
51
+
52
+ ## `toJS()`
53
+
54
+ Global function — arity 2.
55
+
56
+ ## `jsonit()`
57
+
58
+ Global function — arity 1.
59
+
60
+ ## `libraryScrollListener()`
61
+
62
+ Global function — arity 1.
63
+
64
+ ## `lastScrollTime`
65
+
66
+ Global value: `0`
67
+
68
+ ## `ResetNewContentRollup()`
69
+
70
+ Global function — arity 0.
71
+
72
+ ## `DebugLogEnable()`
73
+
74
+ Global function — arity 0.
75
+
76
+ ## `DebugLogDisable()`
77
+
78
+ Global function — arity 0.
79
+
80
+ ## `DebugLogEnableAll()`
81
+
82
+ Global function — arity 0.
83
+
84
+ ## `DebugLogDisableAll()`
85
+
86
+ Global function — arity 0.
87
+
88
+ ## `DebugLogEnableBacktrace()`
89
+
90
+ Global function — arity 0.
91
+
92
+ ## `DebugLogDisableBacktrace()`
93
+
94
+ Global function — arity 0.
95
+
96
+ ## `DebugLogNames()`
97
+
98
+ Global function — arity 0.
99
+
100
+ ## `DebugLogEnabled()`
101
+
102
+ Global function — arity 0.
103
+
104
+ ## `DEBUG_GetDesiredSteamUIWindows()`
105
+
106
+ Global function — arity 0, native.
107
+
108
+ ## `DEBUG_SuppressWindowType()`
109
+
110
+ Global function — arity 2, native.
111
+
112
+ ## `SetVoiceEchoLocalMic()`
113
+
114
+ Global function — arity 0.
115
+
116
+ ## `SetVoiceLogDetails()`
117
+
118
+ Global function — arity 0.
119
+
120
+ ## `SetVoiceForceReconnectingStatus()`
121
+
122
+ Global function — arity 0.
123
+
124
+ ## `SetVoiceForceConnectingStatus()`
125
+
126
+ Global function — arity 0.
127
+
128
+ ## `SetVoiceAutoShowVideoStream()`
129
+
130
+ Global function — arity 0.
131
+
@@ -0,0 +1,155 @@
1
+ <!--
2
+ AUTO-GENERATED by scripts/dump_api_surface.py from a live Steam client.
3
+ Names/membership change between Steam builds — regenerate, don't hand-edit.
4
+ -->
5
+
6
+ # Friends, chat & community
7
+
8
+ ## `SteamClient.Friends`
9
+
10
+ **Methods:** `GetCoplayData`, `InviteUserToCurrentGame`, `InviteUserToGame`, `InviteUserToLobby`, `InviteUserToRemotePlayTogetherCurrentGame`, `ShowRemotePlayTogetherUI`
11
+
12
+ **Event subscriptions:** `RegisterForMultiplayerSessionShareURLChanged`, `RegisterForVoiceChatStatus`
13
+
14
+ ## `SteamClient.FriendSettings`
15
+
16
+ **Methods:** `GetEnabledFeatures`, `SetFriendSettings`
17
+
18
+ **Event subscriptions:** `RegisterForSettingsChanges`
19
+
20
+ ## `SteamClient.Messaging`
21
+
22
+ **Methods:** `PostMessage`
23
+
24
+ **Event subscriptions:** `RegisterForMessages`
25
+
26
+ ## `SteamClient.WebChat`
27
+
28
+ **Methods:** `BSuppressPopupsInRestore`, `GetCurrentUserAccountID`, `GetLocalAvatarBase64`, `GetLocalPersonaName`, `GetOverlayChatBrowserInfo`, `GetPrivateConnectString`, `GetPushToTalkEnabled`, `GetSignIntoFriendsOnStart`, `GetUIMode`, `OpenURLInClient`, `SetActiveClanChatIDs`, `SetNumChatsWithUnreadPriorityMessages`, `SetPersonaName`, `SetPushToMuteEnabled`, `SetPushToTalkEnabled`, `SetPushToTalkHotKey`, `SetPushToTalkMouseButton`, `SetVoiceChatActive`, `SetVoiceChatStatus`, `ShowChatRoomGroupDialog`, `ShowFriendChatDialog`, `UnregisterForMouseXButtonDown`
29
+
30
+ **Event subscriptions:** `OnGroupChatUserStateChange`, `OnNewGroupChatMsgAdded`, `RegisterForComputerActiveStateChange`, `RegisterForFriendPostMessage`, `RegisterForMouseXButtonDown`, `RegisterForPushToTalkStateChange`, `RegisterForUIModeChange`, `RegisterOverlayChatBrowserInfoChanged`
31
+
32
+ ## `SteamClient.FamilySharing`
33
+
34
+ **Methods:** `GetAvailableLenders`, `SetPreferredLender`
35
+
36
+ **Event subscriptions:** `RegisterForKickedBorrower`
37
+
38
+ ## `SteamClient.Notifications`
39
+
40
+ **Event subscriptions:** `RegisterForNotifications`
41
+
42
+ ## `SteamClient.ClientNotifications`
43
+
44
+ **Methods:** `DisplayClientNotification`
45
+
46
+ **Event subscriptions:** `OnRespondToClientNotification`
47
+
48
+ ## `SteamClient.CommunityItems`
49
+
50
+ **Methods:** `DownloadItemAsset`, `GetItemAssetPath`, `RemoveDownloadedItemAsset`
51
+
52
+ ## `SteamClient.Customization`
53
+
54
+ **Methods:** `GenerateLocalStartupMoviesThumbnails`, `GetDownloadedStartupMovies`, `GetLocalStartupMovies`
55
+
56
+ ## `SteamClient.SharedConnection`
57
+
58
+ **Methods:** `AllocateSharedConnection`, `Close`, `SendMsg`, `SendMsgAndAwaitBinaryResponse`, `SendMsgAndAwaitResponse`, `SubscribeToClientServiceMethod`, `SubscribeToEMsg`
59
+
60
+ **Event subscriptions:** `RegisterOnBinaryMessageReceived`, `RegisterOnLogonInfoChanged`, `RegisterOnMessageReceived`
61
+
62
+ ## `friendStore`
63
+
64
+ **Methods:** `BShouldCachePlayer`, `FetchOwnedGames`, `GetCountFriendsInGame`, `GetCountFriendsPlayingGames`, `GetFriendState`, `GetFriendsInGame`, `GetMaxCountFriendsInGame`, `GetOwnedGames`, `Init`, `InitPlayerCache`, `IsLibraryAccessDenied`, `LoadPersonaState`, `OnConnectedToSteam`, `OnPersonaStateChanged`, `RefreshOwnedGames`
65
+
66
+ **State:** `allFriends`, `currentUserSteamID`, `favoriteFriends`, `k_strPlayerCacheKey`, `m_CMInterface`, `m_FriendsUIFriendStore`, `m_Storage`, `m_mapOwnedGamesCacheErrors`, `m_mapPlayerCache`, `m_ownedGamesCache`
67
+
68
+ ## `g_ClanStore`
69
+
70
+ **Methods:** `AddGroupVanities`, `BHasClanInfoLoaded`, `BHasClanInfoLoadedByAccountID`, `GetClanInfoByClanAccountID`, `GetClanMemberCount`, `GetClanSteamIDForAppID`, `GetClanVanityForAppID`, `GetClanVanityForClanSteamID`, `GetCreatorStoreURL`, `GetOGGClanInfo`, `GetRequestParam`, `HasLoadedClanAccountID`, `Init`, `InternalLoadClanInfoForClanSteamID`, `InternalLoadOGGClanInfoForAppID`, `InternalLoadOGGClanInfoForGroupVanity`, `InternalLoadOGGClanInfoForIdentifier`, `InternalSetupValue`, `LazyInit`, `LoadClanInfoForClanAccountID`, `LoadClanInfoForClanSteamID`, `LoadOGGClanInfoForAppID`, `LoadOGGClanInfoForGroupVanity`, `LoadOGGClanInfoForIdentifier`, `RegisterClanData`, `ValidateClanConfig`
71
+
72
+ **State:** `m_bLoadedFromConfig`, `m_mapAppIDToClanInfo`, `m_mapClanAccountIDToClanInfo`, `m_mapPromisesLoading`, `m_mapVanityToClanInfo`, `m_rgQueuedEventsClanIDs`
73
+
74
+ ## `communityStore`
75
+
76
+ **Methods:** `FormatAndParseUserStatusBBCode`, `Init`
77
+
78
+ **State:** `CMInterface`, `EmoticonStore`, `ThreadStore`, `UserStatusBBCodeParser`, `m_CMInterface`, `m_CommentThreadStore`, `m_EmoticonStore`, `m_UserStatusPostBBCodeParser`
79
+
80
+ ## `userProfileStore`
81
+
82
+ **Methods:** `BHasClaimedSteamDeckRewards`, `BIsValidSteamDeckSerialNumber`, `CheckClaimSteamDeckRewards`, `ClaimSteamDeckRewards`, `DownloadMovie`, `EquipKeyboardSkin`, `ForceRefreshEquippedItems`, `GetEquippedItems`, `GetEquippedProfileItemsForUser`, `GetKeyboardSkinTheme`, `GetKeyboardSkins`, `GetProfileItemsOwned`, `GetStartupMovies`, `GetSteamDeckRegistration`, `IgnoreSteamDeckRewardsPrompt`, `Init`, `NotifyToClaimSteamDeckRewards`, `OnFriendEquippedProfileItemsChanged`, `OnNotification`, `OnSystemResumedFromSuspend`, `PopulateStartupMovies`, `RemoveMovieFromDisk`, `SetStartupMovie`
83
+
84
+ **`m_FriendEquippedProfileItemsChangedHandler`** — `invoke`, `unregister`
85
+
86
+ **State:** `m_CMInterface`, `m_localStorage`, `m_mapKeyboardSkinThemes`, `m_notifyClaimRewardsTimer`, `m_promiseEquipped`
87
+
88
+ ## `badgeStore`
89
+
90
+ **Methods:** `FetchBadgeData`, `FetchCommunityItemDefinitions`, `GetBadgeData`, `GetCommunityItemDefinition`, `GetCommunityItemDefinitions`, `Init`, `InvalidateBadgeData`
91
+
92
+ **State:** `m_CMInterface`, `m_mapBadgeData`, `m_mapCommunityItemDefs`
93
+
94
+ ## `partnerEventStore`
95
+
96
+ **Methods:** `BHasClanAnnouncementGID`, `BHasClanEventModel`, `BIsSummaryOnlyStore`, `DefaultEventSortFunction`, `DeleteClanEvent`, `DeleteOldAnnouncement`, `FlushEventFromCache`, `GetAllClanEvents`, `GetAppImportantUpdate`, `GetBestEventsForCurrentUser`, `GetClanEventFromAnnouncementGID`, `GetClanEventGIDFromAnnouncementGID`, `GetClanEventGIDs`, `GetClanEventGIDsForApp`, `GetClanEventModel`, `GetPartnerEventChangeCallback`, `GetRankedClanEvents`, `HelperInitializeNumSalesHeaderArray`, `HintLoadImportantUpdates`, `Init`, `InsertEventModelFromClanEventData`, `InsertUniqueEventGID`, `InternalLoadAdjacentPartnerEvents`, `InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID`, `InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached`, `InternalLoadPartnerEventList`, `LoadAdjacentPartnerEvents`, `LoadAdjacentPartnerEventsByAnnouncement`, `LoadAdjacentPartnerEventsByEvent`, `LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs`, `LoadClanEventLocalizationFromAnnouncementGID`, `LoadHiddenPartnerEvent`, `LoadHiddenPartnerEventByAnnouncementGID`, `LoadImportantEventsAroundToday`, `LoadPartnerEventFromAnnoucementGID`, `LoadPartnerEventFromAnnoucementGIDAndClanSteamID`, `LoadPartnerEventFromClanEventGID`, `LoadPartnerEventFromClanEventGIDAndClanSteamID`, `LoadPartnerEventGeneric`, `LoadPartnerEventsPageable`, `QueueLoadPartnerEvent`, `RegisterClanEvents`, `RemoveGIDFromList`, `ResetModel`, `SavePartnerEventSaleAssets`, `ValidateAdjacentEvent`, `ValidateStoreDefault`
97
+
98
+ **State:** `m_PendingInfoPromise`, `m_PendingInfoResolve`, `m_QueuedEventTimeout`, `m_bLoadedFromConfig`, `m_bOnlySummary`, `m_mapAdjacentAnnouncementGIDs`, `m_mapAnnouncementBodyToEvent`, `m_mapAppIDToGIDs`, `m_mapClanToGIDs`, `m_mapEventUpdateCallback`, `m_mapExistingEvents`, `m_mapUpdatedApps`, `m_rgQueuedEventsClanIDs`, `m_rgQueuedEventsForEditFlags`, `m_rgQueuedEventsUniqueIDs`, `m_tsUpdatedAppsQueryTime`
99
+
100
+ ## `g_PartnerEventStore`
101
+
102
+ **Methods:** `BHasClanAnnouncementGID`, `BHasClanEventModel`, `BIsSummaryOnlyStore`, `DefaultEventSortFunction`, `DeleteClanEvent`, `FlushEventFromCache`, `GetAllClanEvents`, `GetAppImportantUpdate`, `GetBestEventsForCurrentUser`, `GetClanEventFromAnnouncementGID`, `GetClanEventGIDFromAnnouncementGID`, `GetClanEventGIDs`, `GetClanEventGIDsForApp`, `GetClanEventModel`, `GetPartnerEventChangeCallback`, `GetRankedClanEvents`, `HelperInitializeNumSalesHeaderArray`, `HintLoadImportantUpdates`, `Init`, `InsertEventModelFromClanEventData`, `InsertUniqueEventGID`, `InternalLoadAdjacentPartnerEvents`, `InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID`, `InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached`, `InternalLoadPartnerEventList`, `LoadAdjacentPartnerEvents`, `LoadAdjacentPartnerEventsByAnnouncement`, `LoadAdjacentPartnerEventsByEvent`, `LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs`, `LoadClanEventLocalizationFromAnnouncementGID`, `LoadHiddenPartnerEvent`, `LoadHiddenPartnerEventByAnnouncementGID`, `LoadImportantEventsAroundToday`, `LoadPartnerEventFromAnnoucementGID`, `LoadPartnerEventFromAnnoucementGIDAndClanSteamID`, `LoadPartnerEventFromClanEventGID`, `LoadPartnerEventFromClanEventGIDAndClanSteamID`, `LoadPartnerEventGeneric`, `LoadPartnerEventsPageable`, `QueueLoadPartnerEvent`, `RegisterClanEvents`, `RemoveGIDFromList`, `ResetModel`, `SavePartnerEventSaleAssets`, `ValidateAdjacentEvent`, `ValidateStoreDefault`
103
+
104
+ **State:** `m_PendingInfoPromise`, `m_PendingInfoResolve`, `m_QueuedEventTimeout`, `m_bLoadedFromConfig`, `m_bOnlySummary`, `m_mapAdjacentAnnouncementGIDs`, `m_mapAnnouncementBodyToEvent`, `m_mapAppIDToGIDs`, `m_mapClanToGIDs`, `m_mapEventUpdateCallback`, `m_mapExistingEvents`, `m_mapUpdatedApps`, `m_rgQueuedEventsClanIDs`, `m_rgQueuedEventsForEditFlags`, `m_rgQueuedEventsUniqueIDs`, `m_tsUpdatedAppsQueryTime`
105
+
106
+ ## `g_PartnerEventSummaryStore`
107
+
108
+ **Methods:** `BHasClanAnnouncementGID`, `BHasClanEventModel`, `BIsSummaryOnlyStore`, `DefaultEventSortFunction`, `DeleteClanEvent`, `FlushEventFromCache`, `GetAllClanEvents`, `GetAppImportantUpdate`, `GetBestEventsForCurrentUser`, `GetClanEventFromAnnouncementGID`, `GetClanEventGIDFromAnnouncementGID`, `GetClanEventGIDs`, `GetClanEventGIDsForApp`, `GetClanEventModel`, `GetPartnerEventChangeCallback`, `GetRankedClanEvents`, `HelperInitializeNumSalesHeaderArray`, `HintLoadImportantUpdates`, `Init`, `InsertEventModelFromClanEventData`, `InsertUniqueEventGID`, `InternalLoadAdjacentPartnerEvents`, `InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID`, `InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached`, `InternalLoadPartnerEventList`, `LoadAdjacentPartnerEvents`, `LoadAdjacentPartnerEventsByAnnouncement`, `LoadAdjacentPartnerEventsByEvent`, `LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs`, `LoadClanEventLocalizationFromAnnouncementGID`, `LoadHiddenPartnerEvent`, `LoadHiddenPartnerEventByAnnouncementGID`, `LoadImportantEventsAroundToday`, `LoadPartnerEventFromAnnoucementGID`, `LoadPartnerEventFromAnnoucementGIDAndClanSteamID`, `LoadPartnerEventFromClanEventGID`, `LoadPartnerEventFromClanEventGIDAndClanSteamID`, `LoadPartnerEventGeneric`, `LoadPartnerEventsPageable`, `QueueLoadPartnerEvent`, `RegisterClanEvents`, `RemoveGIDFromList`, `ResetModel`, `SavePartnerEventSaleAssets`, `ValidateAdjacentEvent`, `ValidateStoreDefault`
109
+
110
+ **State:** `m_PendingInfoPromise`, `m_PendingInfoResolve`, `m_QueuedEventTimeout`, `m_bLoadedFromConfig`, `m_bOnlySummary`, `m_mapAdjacentAnnouncementGIDs`, `m_mapAnnouncementBodyToEvent`, `m_mapAppIDToGIDs`, `m_mapClanToGIDs`, `m_mapEventUpdateCallback`, `m_mapExistingEvents`, `m_mapUpdatedApps`, `m_rgQueuedEventsClanIDs`, `m_rgQueuedEventsForEditFlags`, `m_rgQueuedEventsUniqueIDs`, `m_tsUpdatedAppsQueryTime`
111
+
112
+ ## `libraryEventStore`
113
+
114
+ **Methods:** `AddToDoNotShowList`, `BNoShowMoreOrLessDataFetched`, `BNotYetLoaded`, `ClearJustChangedAppPriority`, `ClearJustChangedPriority`, `FetchUpdatedEventAppPrioritiesForUser`, `FilterImageURLsForKnownFailures`, `GetAppsShowingLess`, `GetAppsShowingMore`, `GetEventsCountLastTime`, `GetJustChangedPriorityAppID`, `GetLibraryHomeBestEventsForUser`, `GetTakeOverEvents`, `GetUserAppPrioritySetting`, `GetWasJustChangedPriorityLower`, `GetWhatsNewEvents`, `ImageFailureCallback`, `Init`, `LowerAppPriorityForApp`, `OnNetworkOrVisibilityStateChanged`, `RaiseAppPriorityForApp`, `RemoveEvent`, `ResetDoNotShowList`, `ResetUserAppPriorityForApp`, `ScheduleEventsLoad`, `ScheduleUpdateBestEventsForUser`, `SetEventsLoaded`, `TrackEventClickedByUser`, `TrackEventShownToUser`, `TrackEventShownToUserByGID`, `UpdateBestEventsForCurrentUser`
115
+
116
+ **State:** `m_CMInterface`, `m_TimeEventsLastLoaded`, `m_TimeoutInitialLoad`, `m_TimeoutJustChangedPriority`, `m_bConnectedToSteam`, `m_bEventsLoaded`, `m_bInitialLoadPending`, `m_bLastPriorityChangeWasLower`, `m_bNoMoreOrLessDataFetched`, `m_iGetBestEventsForUserErrorBackoff`, `m_mapAppEventPriorities`, `m_mapFailedImagesThisSession`, `m_nAppIDJustChangedPriority`, `m_nEventsReturnedLastTime`, `m_nLastConnectionToSteam`, `m_rgEventsHiddenLocally`, `m_schScheduledUpdateBestEventsForUser`, `m_vecAppsShowingLess`, `m_vecAppsShowingMore`, `m_vecHomeBestEventsForUser`, `m_vecHomeTakeOverEventsForUser`
117
+
118
+ ## `g_EventCalendarTrackingStore`
119
+
120
+ **Methods:** `GetTimeSpentOnPageS`, `InitBrowserID`, `RecordAppInteractionEvent`, `RecordFilterChangeEvent`, `RecordViewedEvent`, `SendExperimentEventToSteam`
121
+
122
+ **State:** `m_nFutureViewableEvents`, `m_nFutureViewedIndex`, `m_nLastRecordedFilter`, `m_nPastViewedDays`, `m_nPastViewedIndex`, `m_sBrowserID`, `m_scheduledFilterChange`, `m_scheduledFutureStats`, `m_scheduledPastStats`
123
+
124
+ ## `g_CreatorHomeStore`
125
+
126
+ **Methods:** `BHasCreatorHomeLoaded`, `GetCreatorHome`, `GetCreatorHomeByID`, `GetCreatorHomeListForAppIncludeHidden`, `GetServiceTransport`, `InternalCreatorHome`, `LazyInit`, `LoadCreatorHome`, `LoadCreatorHomeListForAppIncludeHiddden`, `SearchCreatorHomeStore`, `ValidateStoreDefault`, `ValidateStoreDefaultAppList`
127
+
128
+ **State:** `m_bLoadedFromConfig`, `m_mapAppToCreatorIDList`, `m_mapClanToCreatorHome`, `m_serviceTransport`
129
+
130
+ ## `g_CreatorHomeListInfoStore`
131
+
132
+ **Methods:** `GetListSubtitle`, `GetListTitle`, `GetListtileImage`, `LazyInit`, `ValidateCreatorHomeTitles`
133
+
134
+ **State:** `m_bLoadedFromConfig`, `m_mapListInfo`
135
+
136
+ ## `g_EventCalendarDevFeatures`
137
+
138
+ **Methods:** `BHasTimeOverride`, `GetTimeNowWithOverride`, `GetTimeNowWithOverrideAsDate`, `ParseDevOverrides`
139
+
140
+ **State:** `bIncludeCurators`, `bIncludeFeaturedAsGameSource`, `bRequireAllEventsLoadedInTimeBlock`, `nOverrideDateNow`
141
+
142
+ ## `g_FriendsUIApp`
143
+
144
+ **Methods:** `AddPopupManagerShutdownCallback`, `BIsValidBrowserContext`, `BPlayChatRoomNotificationSound`, `BShowChatRoomNotification`, `BShowDirectChatNotification`, `BShowIncomingChatMessages`, `CreateChatPopup`, `CreateNewTabFromUniqueID`, `GetChatRoomBBCodeParser`, `GetChatRoomEffectSettings`, `GetCurrentUserStatusInterface`, `GetDefaultBrowserContext`, `GetFriendChatBBCodeParser`, `GetLocalMidnightInRTime32`, `GetNotificationBBCodeParser`, `GetServerRTime32`, `GetServerTimeMS`, `GetStartupTime`, `GetVoiceInterface`, `Init`, `InitAdjustClockDriftFromServer`, `InitInternal`, `IsDesktopUIActive`, `IsGamepadUIActive`, `IsLoadedInClientSharedJSContext`, `OnFriendsListClosed`, `OnReadyToRender`, `OnVoiceChatActiveStateChange`, `OnWindowBecameVisible`, `OpenURLInBrowser`, `RTime32ToDate`, `Reconnect`, `RemoteClientInviteResult`, `RemoteClientLaunchFailed`, `RemoteClientStarted`, `RemotePlayGroupCreated`, `SetDefaultPopupContext`, `SetEmoticonTrackerCallback`, `SetReadyToRender`, `SetStickerTrackerCallback`, `ShowAlert`, `ShowCloseActiveVoiceConfirmation`, `ShowFriendChatDialog`, `ShowPopupFriendsList`, `ShowPopupFriendsListAtStartup`, `SignOutOfFriends`, `UpdatePersonaState`
145
+
146
+ **`m_exportsCurrentUserStatus`** — `GetPersonaState`, `GetUserDoNotDisturb`, `SetUserAway`, `SetUserDoNotDisturb`, `SetUserInvisible`, `SetUserOffline`, `SetUserOnline`
147
+
148
+ **`m_exportsVoiceInterface`** — `ConvertGainValueToSliderValue`, `ConvertSliderToGainValue`, `EndLocalMicTest`, `EndVoiceChat`, `GetMaxInputOutputGain`, `GetPushToMuteEnabled`, `GetPushToTalkEnabled`, `GetPushToTalkHotKeyDisplayString`, `GetPushToTalkOrMuteSoundsEnabled`, `GetSelectedMic`, `GetSelectedOutputDevice`, `GetUseAutoGainControl`, `GetUseEchoCancellation`, `GetUseNoiseCancellation`, `GetUseNoiseGateLevel`, `GetUseSteamAudioSpatialization`, `GetVoiceInputGain`, `GetVoiceLogs`, `GetVoiceOutputGain`, `InitiateLocalMicTest`, `IsAnyVoiceActive`, `IsLocalMicTestActive`, `IsMicMuted`, `IsOutputMuted`, `RefreshPushToTalkKeySettings`, `RegisterForCurrentUserVoiceLevel`, `RegisterForPendingOneOnOneVoiceChatRequests`, `SetPushToMuteEnabled`, `SetPushToTalkEnabled`, `SetPushToTalkOrMuteSoundsEnabled`, `SetSelectedMic`, `SetSelectedOutput`, `SetUseAutoGainControl`, `SetUseEchoCancellation`, `SetUseNoiseCancellation`, `SetUseNoiseGateLevel`, `SetUseSteamAudioSpatialization`, `SetVoiceInputGain`, `SetVoiceOutputGain`, `ToggleMicMuting`, `ToggleOutputMuting`
149
+
150
+ **State:** `AppInfoStore`, `AudioPlaybackManager`, `BroadcastStore`, `CMInterface`, `ChatStore`, `EconomyStore`, `FriendStore`, `GroupMemberStore`, `IdleTracker`, `NotificationManager`, `ParentalStore`, `RemotePlayStore`, `SettingsStore`, `Storage`, `UIStore`, `UserStore`, `VRPopupManager`, `VoiceStore`, `m_AppInfoStore`, `m_AudioPlaybackManager`, `m_BroadcastStore`, `m_CMInterface`, `m_ChatRoomBBCodeParser`, `m_ChatStore`, `m_DesktopApp`, `m_EconomyStore`, `m_FriendChatBBCodeParser`, `m_FriendStore`, `m_GroupMemberStore`, `m_IdleTracker`, `m_NotificationBBCodeParser`, `m_NotificationManager`, `m_ParentalStore`, `m_RemotePlayStore`, `m_SettingsStore`, `m_Storage`, `m_UIStore`, `m_UserStore`, `m_VoiceChatStore`, `m_bLoadedInClientSharedJSContext`, `m_bReadyToRender`, `m_bShuttingDown`, `ready_to_render`
151
+
152
+ ## `__FriendsUIBrowserContext`
153
+
154
+ **State:** `m_eUIMode`, `m_nBrowserID`, `m_unPID`
155
+