@oxy.so/core 1.0.0

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.
Files changed (673) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +221 -0
  4. package/dist/cjs/.tsbuildinfo +1 -0
  5. package/dist/cjs/HttpService.js +1270 -0
  6. package/dist/cjs/OxyServices.base.js +390 -0
  7. package/dist/cjs/OxyServices.errors.js +95 -0
  8. package/dist/cjs/OxyServices.js +72 -0
  9. package/dist/cjs/boot/sessionColdBoot.js +395 -0
  10. package/dist/cjs/constants/version.js +16 -0
  11. package/dist/cjs/crypto/aead.js +79 -0
  12. package/dist/cjs/crypto/ecdh.js +35 -0
  13. package/dist/cjs/crypto/identityMarker.js +255 -0
  14. package/dist/cjs/crypto/kdf.js +39 -0
  15. package/dist/cjs/crypto/keyManager.js +2234 -0
  16. package/dist/cjs/crypto/polyfill.js +131 -0
  17. package/dist/cjs/crypto/recoveryPhrase.js +242 -0
  18. package/dist/cjs/crypto/signatureService.js +273 -0
  19. package/dist/cjs/i18n/accountCategoryLabels.js +44 -0
  20. package/dist/cjs/i18n/accountRoleLabels.js +27 -0
  21. package/dist/cjs/i18n/index.js +90 -0
  22. package/dist/cjs/i18n/locales/ar-SA.json +282 -0
  23. package/dist/cjs/i18n/locales/ca-ES.json +282 -0
  24. package/dist/cjs/i18n/locales/de-DE.json +282 -0
  25. package/dist/cjs/i18n/locales/en-US.json +2161 -0
  26. package/dist/cjs/i18n/locales/es-ES.json +2161 -0
  27. package/dist/cjs/i18n/locales/fr-FR.json +282 -0
  28. package/dist/cjs/i18n/locales/it-IT.json +282 -0
  29. package/dist/cjs/i18n/locales/ja-JP.json +282 -0
  30. package/dist/cjs/i18n/locales/ko-KR.json +282 -0
  31. package/dist/cjs/i18n/locales/locales/ar-SA.json +282 -0
  32. package/dist/cjs/i18n/locales/locales/ca-ES.json +282 -0
  33. package/dist/cjs/i18n/locales/locales/de-DE.json +282 -0
  34. package/dist/cjs/i18n/locales/locales/en-US.json +2161 -0
  35. package/dist/cjs/i18n/locales/locales/es-ES.json +2161 -0
  36. package/dist/cjs/i18n/locales/locales/fr-FR.json +282 -0
  37. package/dist/cjs/i18n/locales/locales/it-IT.json +282 -0
  38. package/dist/cjs/i18n/locales/locales/ja-JP.json +282 -0
  39. package/dist/cjs/i18n/locales/locales/ko-KR.json +282 -0
  40. package/dist/cjs/i18n/locales/locales/pt-PT.json +282 -0
  41. package/dist/cjs/i18n/locales/locales/zh-CN.json +282 -0
  42. package/dist/cjs/i18n/locales/pt-PT.json +282 -0
  43. package/dist/cjs/i18n/locales/zh-CN.json +282 -0
  44. package/dist/cjs/i18n/reputationCategoryLabels.js +20 -0
  45. package/dist/cjs/i18n/trustTierLabels.js +19 -0
  46. package/dist/cjs/index.js +498 -0
  47. package/dist/cjs/inference/OxyInferenceClient.js +544 -0
  48. package/dist/cjs/logger/index.js +149 -0
  49. package/dist/cjs/mixins/OxyServices.accounts.js +555 -0
  50. package/dist/cjs/mixins/OxyServices.analytics.js +49 -0
  51. package/dist/cjs/mixins/OxyServices.appData.js +108 -0
  52. package/dist/cjs/mixins/OxyServices.assets.js +764 -0
  53. package/dist/cjs/mixins/OxyServices.auth.js +1254 -0
  54. package/dist/cjs/mixins/OxyServices.chains.js +73 -0
  55. package/dist/cjs/mixins/OxyServices.civic.js +611 -0
  56. package/dist/cjs/mixins/OxyServices.connectedApps.js +78 -0
  57. package/dist/cjs/mixins/OxyServices.contacts.js +50 -0
  58. package/dist/cjs/mixins/OxyServices.deviceBoot.js +191 -0
  59. package/dist/cjs/mixins/OxyServices.deviceTransfer.js +314 -0
  60. package/dist/cjs/mixins/OxyServices.devices.js +116 -0
  61. package/dist/cjs/mixins/OxyServices.features.js +335 -0
  62. package/dist/cjs/mixins/OxyServices.followGraph.js +221 -0
  63. package/dist/cjs/mixins/OxyServices.identity.js +461 -0
  64. package/dist/cjs/mixins/OxyServices.identityBackup.js +172 -0
  65. package/dist/cjs/mixins/OxyServices.inference.js +59 -0
  66. package/dist/cjs/mixins/OxyServices.language.js +125 -0
  67. package/dist/cjs/mixins/OxyServices.links.js +72 -0
  68. package/dist/cjs/mixins/OxyServices.location.js +43 -0
  69. package/dist/cjs/mixins/OxyServices.nodes.js +175 -0
  70. package/dist/cjs/mixins/OxyServices.notifications.js +63 -0
  71. package/dist/cjs/mixins/OxyServices.payment.js +158 -0
  72. package/dist/cjs/mixins/OxyServices.privacy.js +199 -0
  73. package/dist/cjs/mixins/OxyServices.reputation.js +289 -0
  74. package/dist/cjs/mixins/OxyServices.security.js +89 -0
  75. package/dist/cjs/mixins/OxyServices.store.js +266 -0
  76. package/dist/cjs/mixins/OxyServices.topics.js +137 -0
  77. package/dist/cjs/mixins/OxyServices.user.js +902 -0
  78. package/dist/cjs/mixins/OxyServices.utility.js +1098 -0
  79. package/dist/cjs/mixins/index.js +135 -0
  80. package/dist/cjs/mixins/mixinHelpers.js +53 -0
  81. package/dist/cjs/models/Topic.js +16 -0
  82. package/dist/cjs/models/interfaces.js +20 -0
  83. package/dist/cjs/models/session.js +2 -0
  84. package/dist/cjs/server/auth.js +167 -0
  85. package/dist/cjs/server/capabilityTicket.js +192 -0
  86. package/dist/cjs/server/cors.js +225 -0
  87. package/dist/cjs/server/index.js +97 -0
  88. package/dist/cjs/server/rateLimit.js +207 -0
  89. package/dist/cjs/server/safeFetch.js +458 -0
  90. package/dist/cjs/server/securityHeaders.js +377 -0
  91. package/dist/cjs/server/userInvalidation.js +156 -0
  92. package/dist/cjs/server/verifySecret.js +50 -0
  93. package/dist/cjs/session/SessionClient.js +865 -0
  94. package/dist/cjs/session/accountDelegationAccess.js +48 -0
  95. package/dist/cjs/session/accountDialogController.js +1131 -0
  96. package/dist/cjs/session/accountSwitchTargets.js +81 -0
  97. package/dist/cjs/session/authStateStore.js +404 -0
  98. package/dist/cjs/session/createSessionClient.js +32 -0
  99. package/dist/cjs/session/deviceDirectory.js +143 -0
  100. package/dist/cjs/session/deviceSwitcherRows.js +76 -0
  101. package/dist/cjs/session/identityPin.js +256 -0
  102. package/dist/cjs/session/identitySession.js +135 -0
  103. package/dist/cjs/session/projectSessionState.js +121 -0
  104. package/dist/cjs/session/refresh.js +398 -0
  105. package/dist/cjs/session/sessionClientHost.js +34 -0
  106. package/dist/cjs/session/sharedDeviceCredential.js +247 -0
  107. package/dist/cjs/session/socketLoader.js +55 -0
  108. package/dist/cjs/shared/utils/colorUtils.js +153 -0
  109. package/dist/cjs/shared/utils/errorUtils.js +183 -0
  110. package/dist/cjs/shared/utils/index.js +49 -0
  111. package/dist/cjs/shared/utils/networkUtils.js +183 -0
  112. package/dist/cjs/shared/utils/themeUtils.js +106 -0
  113. package/dist/cjs/utils/accountCacheSweep.js +80 -0
  114. package/dist/cjs/utils/accountUtils.js +140 -0
  115. package/dist/cjs/utils/activityId.js +6 -0
  116. package/dist/cjs/utils/apiUtils.js +91 -0
  117. package/dist/cjs/utils/asyncUtils.js +222 -0
  118. package/dist/cjs/utils/authHelpers.js +120 -0
  119. package/dist/cjs/utils/authWebUrl.js +19 -0
  120. package/dist/cjs/utils/avatarUtils.js +29 -0
  121. package/dist/cjs/utils/cache.js +235 -0
  122. package/dist/cjs/utils/cacheKey.js +85 -0
  123. package/dist/cjs/utils/coldBoot.js +122 -0
  124. package/dist/cjs/utils/commonsApproval.js +31 -0
  125. package/dist/cjs/utils/commonsDelivery.js +59 -0
  126. package/dist/cjs/utils/deviceManager.js +174 -0
  127. package/dist/cjs/utils/displayNamePolicyRanges.generated.js +60 -0
  128. package/dist/cjs/utils/edgeRegion.js +6 -0
  129. package/dist/cjs/utils/errorUtils.js +243 -0
  130. package/dist/cjs/utils/identityCacheSweep.js +97 -0
  131. package/dist/cjs/utils/languageUtils.js +224 -0
  132. package/dist/cjs/utils/oauthPkce.js +311 -0
  133. package/dist/cjs/utils/officialOrigins.js +64 -0
  134. package/dist/cjs/utils/oxyServiceEnvironment.js +19 -0
  135. package/dist/cjs/utils/platform.js +119 -0
  136. package/dist/cjs/utils/profileLinks.js +63 -0
  137. package/dist/cjs/utils/redactUrl.js +29 -0
  138. package/dist/cjs/utils/registrableApex.js +45 -0
  139. package/dist/cjs/utils/requestUtils.js +209 -0
  140. package/dist/cjs/utils/sessionUtils.js +181 -0
  141. package/dist/cjs/utils/textNormalization.js +158 -0
  142. package/dist/cjs/utils/userHandle.js +37 -0
  143. package/dist/cjs/utils/userIdentity.js +50 -0
  144. package/dist/cjs/utils/validationUtils.js +370 -0
  145. package/dist/cjs/utils/webauthnOrigin.js +51 -0
  146. package/dist/esm/.tsbuildinfo +1 -0
  147. package/dist/esm/HttpService.js +1266 -0
  148. package/dist/esm/OxyServices.base.js +386 -0
  149. package/dist/esm/OxyServices.errors.js +88 -0
  150. package/dist/esm/OxyServices.js +66 -0
  151. package/dist/esm/boot/sessionColdBoot.js +392 -0
  152. package/dist/esm/constants/version.js +13 -0
  153. package/dist/esm/crypto/aead.js +74 -0
  154. package/dist/esm/crypto/ecdh.js +32 -0
  155. package/dist/esm/crypto/identityMarker.js +248 -0
  156. package/dist/esm/crypto/kdf.js +36 -0
  157. package/dist/esm/crypto/keyManager.js +2227 -0
  158. package/dist/esm/crypto/polyfill.js +129 -0
  159. package/dist/esm/crypto/recoveryPhrase.js +238 -0
  160. package/dist/esm/crypto/signatureService.js +269 -0
  161. package/dist/esm/i18n/accountCategoryLabels.js +37 -0
  162. package/dist/esm/i18n/accountRoleLabels.js +20 -0
  163. package/dist/esm/i18n/index.js +83 -0
  164. package/dist/esm/i18n/locales/ar-SA.json +282 -0
  165. package/dist/esm/i18n/locales/ca-ES.json +282 -0
  166. package/dist/esm/i18n/locales/de-DE.json +282 -0
  167. package/dist/esm/i18n/locales/en-US.json +2161 -0
  168. package/dist/esm/i18n/locales/es-ES.json +2161 -0
  169. package/dist/esm/i18n/locales/fr-FR.json +282 -0
  170. package/dist/esm/i18n/locales/it-IT.json +282 -0
  171. package/dist/esm/i18n/locales/ja-JP.json +282 -0
  172. package/dist/esm/i18n/locales/ko-KR.json +282 -0
  173. package/dist/esm/i18n/locales/locales/ar-SA.json +282 -0
  174. package/dist/esm/i18n/locales/locales/ca-ES.json +282 -0
  175. package/dist/esm/i18n/locales/locales/de-DE.json +282 -0
  176. package/dist/esm/i18n/locales/locales/en-US.json +2161 -0
  177. package/dist/esm/i18n/locales/locales/es-ES.json +2161 -0
  178. package/dist/esm/i18n/locales/locales/fr-FR.json +282 -0
  179. package/dist/esm/i18n/locales/locales/it-IT.json +282 -0
  180. package/dist/esm/i18n/locales/locales/ja-JP.json +282 -0
  181. package/dist/esm/i18n/locales/locales/ko-KR.json +282 -0
  182. package/dist/esm/i18n/locales/locales/pt-PT.json +282 -0
  183. package/dist/esm/i18n/locales/locales/zh-CN.json +282 -0
  184. package/dist/esm/i18n/locales/pt-PT.json +282 -0
  185. package/dist/esm/i18n/locales/zh-CN.json +282 -0
  186. package/dist/esm/i18n/reputationCategoryLabels.js +13 -0
  187. package/dist/esm/i18n/trustTierLabels.js +12 -0
  188. package/dist/esm/index.js +254 -0
  189. package/dist/esm/inference/OxyInferenceClient.js +538 -0
  190. package/dist/esm/logger/index.js +140 -0
  191. package/dist/esm/mixins/OxyServices.accounts.js +543 -0
  192. package/dist/esm/mixins/OxyServices.analytics.js +46 -0
  193. package/dist/esm/mixins/OxyServices.appData.js +103 -0
  194. package/dist/esm/mixins/OxyServices.assets.js +761 -0
  195. package/dist/esm/mixins/OxyServices.auth.js +1247 -0
  196. package/dist/esm/mixins/OxyServices.chains.js +70 -0
  197. package/dist/esm/mixins/OxyServices.civic.js +605 -0
  198. package/dist/esm/mixins/OxyServices.connectedApps.js +75 -0
  199. package/dist/esm/mixins/OxyServices.contacts.js +47 -0
  200. package/dist/esm/mixins/OxyServices.deviceBoot.js +186 -0
  201. package/dist/esm/mixins/OxyServices.deviceTransfer.js +311 -0
  202. package/dist/esm/mixins/OxyServices.devices.js +113 -0
  203. package/dist/esm/mixins/OxyServices.features.js +332 -0
  204. package/dist/esm/mixins/OxyServices.followGraph.js +218 -0
  205. package/dist/esm/mixins/OxyServices.identity.js +457 -0
  206. package/dist/esm/mixins/OxyServices.identityBackup.js +169 -0
  207. package/dist/esm/mixins/OxyServices.inference.js +56 -0
  208. package/dist/esm/mixins/OxyServices.language.js +122 -0
  209. package/dist/esm/mixins/OxyServices.links.js +69 -0
  210. package/dist/esm/mixins/OxyServices.location.js +40 -0
  211. package/dist/esm/mixins/OxyServices.nodes.js +172 -0
  212. package/dist/esm/mixins/OxyServices.notifications.js +60 -0
  213. package/dist/esm/mixins/OxyServices.payment.js +155 -0
  214. package/dist/esm/mixins/OxyServices.privacy.js +196 -0
  215. package/dist/esm/mixins/OxyServices.reputation.js +286 -0
  216. package/dist/esm/mixins/OxyServices.security.js +86 -0
  217. package/dist/esm/mixins/OxyServices.store.js +263 -0
  218. package/dist/esm/mixins/OxyServices.topics.js +134 -0
  219. package/dist/esm/mixins/OxyServices.user.js +899 -0
  220. package/dist/esm/mixins/OxyServices.utility.js +1095 -0
  221. package/dist/esm/mixins/index.js +132 -0
  222. package/dist/esm/mixins/mixinHelpers.js +48 -0
  223. package/dist/esm/models/Topic.js +13 -0
  224. package/dist/esm/models/interfaces.js +17 -0
  225. package/dist/esm/models/session.js +1 -0
  226. package/dist/esm/server/auth.js +154 -0
  227. package/dist/esm/server/capabilityTicket.js +183 -0
  228. package/dist/esm/server/cors.js +220 -0
  229. package/dist/esm/server/index.js +47 -0
  230. package/dist/esm/server/rateLimit.js +201 -0
  231. package/dist/esm/server/safeFetch.js +447 -0
  232. package/dist/esm/server/securityHeaders.js +364 -0
  233. package/dist/esm/server/userInvalidation.js +152 -0
  234. package/dist/esm/server/verifySecret.js +47 -0
  235. package/dist/esm/session/SessionClient.js +861 -0
  236. package/dist/esm/session/accountDelegationAccess.js +45 -0
  237. package/dist/esm/session/accountDialogController.js +1126 -0
  238. package/dist/esm/session/accountSwitchTargets.js +77 -0
  239. package/dist/esm/session/authStateStore.js +398 -0
  240. package/dist/esm/session/createSessionClient.js +29 -0
  241. package/dist/esm/session/deviceDirectory.js +135 -0
  242. package/dist/esm/session/deviceSwitcherRows.js +72 -0
  243. package/dist/esm/session/identityPin.js +249 -0
  244. package/dist/esm/session/identitySession.js +131 -0
  245. package/dist/esm/session/projectSessionState.js +114 -0
  246. package/dist/esm/session/refresh.js +390 -0
  247. package/dist/esm/session/sessionClientHost.js +31 -0
  248. package/dist/esm/session/sharedDeviceCredential.js +239 -0
  249. package/dist/esm/session/socketLoader.js +19 -0
  250. package/dist/esm/shared/utils/colorUtils.js +143 -0
  251. package/dist/esm/shared/utils/errorUtils.js +170 -0
  252. package/dist/esm/shared/utils/index.js +15 -0
  253. package/dist/esm/shared/utils/networkUtils.js +173 -0
  254. package/dist/esm/shared/utils/themeUtils.js +98 -0
  255. package/dist/esm/utils/accountCacheSweep.js +75 -0
  256. package/dist/esm/utils/accountUtils.js +131 -0
  257. package/dist/esm/utils/activityId.js +2 -0
  258. package/dist/esm/utils/apiUtils.js +84 -0
  259. package/dist/esm/utils/asyncUtils.js +207 -0
  260. package/dist/esm/utils/authHelpers.js +111 -0
  261. package/dist/esm/utils/authWebUrl.js +16 -0
  262. package/dist/esm/utils/avatarUtils.js +26 -0
  263. package/dist/esm/utils/cache.js +227 -0
  264. package/dist/esm/utils/cacheKey.js +80 -0
  265. package/dist/esm/utils/coldBoot.js +119 -0
  266. package/dist/esm/utils/commonsApproval.js +27 -0
  267. package/dist/esm/utils/commonsDelivery.js +54 -0
  268. package/dist/esm/utils/deviceManager.js +170 -0
  269. package/dist/esm/utils/displayNamePolicyRanges.generated.js +57 -0
  270. package/dist/esm/utils/edgeRegion.js +2 -0
  271. package/dist/esm/utils/errorUtils.js +232 -0
  272. package/dist/esm/utils/identityCacheSweep.js +92 -0
  273. package/dist/esm/utils/languageUtils.js +212 -0
  274. package/dist/esm/utils/oauthPkce.js +297 -0
  275. package/dist/esm/utils/officialOrigins.js +59 -0
  276. package/dist/esm/utils/oxyServiceEnvironment.js +16 -0
  277. package/dist/esm/utils/platform.js +110 -0
  278. package/dist/esm/utils/profileLinks.js +60 -0
  279. package/dist/esm/utils/redactUrl.js +26 -0
  280. package/dist/esm/utils/registrableApex.js +42 -0
  281. package/dist/esm/utils/requestUtils.js +203 -0
  282. package/dist/esm/utils/sessionUtils.js +171 -0
  283. package/dist/esm/utils/textNormalization.js +154 -0
  284. package/dist/esm/utils/userHandle.js +33 -0
  285. package/dist/esm/utils/userIdentity.js +45 -0
  286. package/dist/esm/utils/validationUtils.js +350 -0
  287. package/dist/esm/utils/webauthnOrigin.js +48 -0
  288. package/dist/types/.tsbuildinfo +1 -0
  289. package/dist/types/HttpService.d.ts +413 -0
  290. package/dist/types/OxyServices.base.d.ts +187 -0
  291. package/dist/types/OxyServices.d.ts +139 -0
  292. package/dist/types/OxyServices.errors.d.ts +84 -0
  293. package/dist/types/boot/sessionColdBoot.d.ts +140 -0
  294. package/dist/types/constants/version.d.ts +13 -0
  295. package/dist/types/crypto/aead.d.ts +56 -0
  296. package/dist/types/crypto/ecdh.d.ts +29 -0
  297. package/dist/types/crypto/identityMarker.d.ts +94 -0
  298. package/dist/types/crypto/kdf.d.ts +25 -0
  299. package/dist/types/crypto/keyManager.d.ts +582 -0
  300. package/dist/types/crypto/polyfill.d.ts +25 -0
  301. package/dist/types/crypto/recoveryPhrase.d.ts +173 -0
  302. package/dist/types/crypto/signatureService.d.ts +136 -0
  303. package/dist/types/i18n/accountCategoryLabels.d.ts +34 -0
  304. package/dist/types/i18n/accountRoleLabels.d.ts +10 -0
  305. package/dist/types/i18n/index.d.ts +3 -0
  306. package/dist/types/i18n/reputationCategoryLabels.d.ts +10 -0
  307. package/dist/types/i18n/trustTierLabels.d.ts +9 -0
  308. package/dist/types/index.d.ts +145 -0
  309. package/dist/types/inference/OxyInferenceClient.d.ts +342 -0
  310. package/dist/types/logger/index.d.ts +104 -0
  311. package/dist/types/mixins/OxyServices.accounts.d.ts +868 -0
  312. package/dist/types/mixins/OxyServices.analytics.d.ts +72 -0
  313. package/dist/types/mixins/OxyServices.appData.d.ts +108 -0
  314. package/dist/types/mixins/OxyServices.assets.d.ts +329 -0
  315. package/dist/types/mixins/OxyServices.auth.d.ts +908 -0
  316. package/dist/types/mixins/OxyServices.chains.d.ts +156 -0
  317. package/dist/types/mixins/OxyServices.civic.d.ts +510 -0
  318. package/dist/types/mixins/OxyServices.connectedApps.d.ts +169 -0
  319. package/dist/types/mixins/OxyServices.contacts.d.ts +100 -0
  320. package/dist/types/mixins/OxyServices.deviceBoot.d.ts +185 -0
  321. package/dist/types/mixins/OxyServices.deviceTransfer.d.ts +149 -0
  322. package/dist/types/mixins/OxyServices.devices.d.ts +103 -0
  323. package/dist/types/mixins/OxyServices.features.d.ts +250 -0
  324. package/dist/types/mixins/OxyServices.followGraph.d.ts +223 -0
  325. package/dist/types/mixins/OxyServices.identity.d.ts +351 -0
  326. package/dist/types/mixins/OxyServices.identityBackup.d.ts +129 -0
  327. package/dist/types/mixins/OxyServices.inference.d.ts +95 -0
  328. package/dist/types/mixins/OxyServices.language.d.ts +87 -0
  329. package/dist/types/mixins/OxyServices.links.d.ts +104 -0
  330. package/dist/types/mixins/OxyServices.location.d.ts +70 -0
  331. package/dist/types/mixins/OxyServices.nodes.d.ts +198 -0
  332. package/dist/types/mixins/OxyServices.notifications.d.ts +143 -0
  333. package/dist/types/mixins/OxyServices.payment.d.ts +117 -0
  334. package/dist/types/mixins/OxyServices.privacy.d.ts +146 -0
  335. package/dist/types/mixins/OxyServices.reputation.d.ts +202 -0
  336. package/dist/types/mixins/OxyServices.security.d.ts +84 -0
  337. package/dist/types/mixins/OxyServices.store.d.ts +334 -0
  338. package/dist/types/mixins/OxyServices.topics.d.ts +110 -0
  339. package/dist/types/mixins/OxyServices.user.d.ts +558 -0
  340. package/dist/types/mixins/OxyServices.utility.d.ts +393 -0
  341. package/dist/types/mixins/index.d.ts +87 -0
  342. package/dist/types/mixins/mixinHelpers.d.ts +31 -0
  343. package/dist/types/models/Topic.d.ts +42 -0
  344. package/dist/types/models/interfaces.d.ts +675 -0
  345. package/dist/types/models/session.d.ts +51 -0
  346. package/dist/types/server/auth.d.ts +130 -0
  347. package/dist/types/server/capabilityTicket.d.ts +41 -0
  348. package/dist/types/server/cors.d.ts +98 -0
  349. package/dist/types/server/index.d.ts +35 -0
  350. package/dist/types/server/rateLimit.d.ts +40 -0
  351. package/dist/types/server/safeFetch.d.ts +137 -0
  352. package/dist/types/server/securityHeaders.d.ts +221 -0
  353. package/dist/types/server/userInvalidation.d.ts +114 -0
  354. package/dist/types/server/verifySecret.d.ts +29 -0
  355. package/dist/types/session/SessionClient.d.ts +418 -0
  356. package/dist/types/session/accountDelegationAccess.d.ts +40 -0
  357. package/dist/types/session/accountDialogController.d.ts +648 -0
  358. package/dist/types/session/accountSwitchTargets.d.ts +70 -0
  359. package/dist/types/session/authStateStore.d.ts +153 -0
  360. package/dist/types/session/createSessionClient.d.ts +30 -0
  361. package/dist/types/session/deviceDirectory.d.ts +182 -0
  362. package/dist/types/session/deviceSwitcherRows.d.ts +92 -0
  363. package/dist/types/session/identityPin.d.ts +87 -0
  364. package/dist/types/session/identitySession.d.ts +105 -0
  365. package/dist/types/session/projectSessionState.d.ts +74 -0
  366. package/dist/types/session/refresh.d.ts +179 -0
  367. package/dist/types/session/sessionClientHost.d.ts +18 -0
  368. package/dist/types/session/sharedDeviceCredential.d.ts +202 -0
  369. package/dist/types/session/socketLoader.d.ts +11 -0
  370. package/dist/types/shared/utils/colorUtils.d.ts +104 -0
  371. package/dist/types/shared/utils/errorUtils.d.ts +97 -0
  372. package/dist/types/shared/utils/index.d.ts +13 -0
  373. package/dist/types/shared/utils/networkUtils.d.ts +139 -0
  374. package/dist/types/shared/utils/themeUtils.d.ts +90 -0
  375. package/dist/types/utils/accountCacheSweep.d.ts +75 -0
  376. package/dist/types/utils/accountUtils.d.ts +100 -0
  377. package/dist/types/utils/activityId.d.ts +2 -0
  378. package/dist/types/utils/apiUtils.d.ts +95 -0
  379. package/dist/types/utils/asyncUtils.d.ts +62 -0
  380. package/dist/types/utils/authHelpers.d.ts +58 -0
  381. package/dist/types/utils/authWebUrl.d.ts +16 -0
  382. package/dist/types/utils/avatarUtils.d.ts +16 -0
  383. package/dist/types/utils/cache.d.ts +130 -0
  384. package/dist/types/utils/cacheKey.d.ts +66 -0
  385. package/dist/types/utils/coldBoot.d.ts +131 -0
  386. package/dist/types/utils/commonsApproval.d.ts +13 -0
  387. package/dist/types/utils/commonsDelivery.d.ts +105 -0
  388. package/dist/types/utils/deviceManager.d.ts +65 -0
  389. package/dist/types/utils/displayNamePolicyRanges.generated.d.ts +57 -0
  390. package/dist/types/utils/edgeRegion.d.ts +2 -0
  391. package/dist/types/utils/errorUtils.d.ts +125 -0
  392. package/dist/types/utils/identityCacheSweep.d.ts +80 -0
  393. package/dist/types/utils/languageUtils.d.ts +100 -0
  394. package/dist/types/utils/oauthPkce.d.ts +157 -0
  395. package/dist/types/utils/officialOrigins.d.ts +13 -0
  396. package/dist/types/utils/oxyServiceEnvironment.d.ts +17 -0
  397. package/dist/types/utils/platform.d.ts +49 -0
  398. package/dist/types/utils/profileLinks.d.ts +44 -0
  399. package/dist/types/utils/redactUrl.d.ts +17 -0
  400. package/dist/types/utils/registrableApex.d.ts +27 -0
  401. package/dist/types/utils/requestUtils.d.ts +123 -0
  402. package/dist/types/utils/sessionUtils.d.ts +54 -0
  403. package/dist/types/utils/textNormalization.d.ts +103 -0
  404. package/dist/types/utils/userHandle.d.ts +26 -0
  405. package/dist/types/utils/userIdentity.d.ts +21 -0
  406. package/dist/types/utils/validationUtils.d.ts +268 -0
  407. package/dist/types/utils/webauthnOrigin.d.ts +32 -0
  408. package/package.json +168 -0
  409. package/src/HttpService.ts +1553 -0
  410. package/src/OxyServices.base.ts +478 -0
  411. package/src/OxyServices.errors.ts +122 -0
  412. package/src/OxyServices.ts +172 -0
  413. package/src/__tests__/authSocket.test.ts +96 -0
  414. package/src/__tests__/httpServiceActivityId.test.ts +49 -0
  415. package/src/__tests__/httpServiceAuthSelfAwait.test.ts +108 -0
  416. package/src/__tests__/httpServiceCache.test.ts +318 -0
  417. package/src/__tests__/httpServiceCsrf.test.ts +235 -0
  418. package/src/__tests__/httpServiceFormEncoded.test.ts +142 -0
  419. package/src/__tests__/httpServiceQueueDeadlock.test.ts +128 -0
  420. package/src/__tests__/httpServiceUnwrapEnvelope.test.ts +115 -0
  421. package/src/__tests__/inSessionRefresh.test.ts +260 -0
  422. package/src/__tests__/linkedClient.test.ts +370 -0
  423. package/src/__tests__/parseHttpErrorBody.test.ts +116 -0
  424. package/src/__tests__/serverValueImportsDeclared.test.ts +120 -0
  425. package/src/__tests__/userIdentity.test.ts +143 -0
  426. package/src/boot/__tests__/sessionColdBoot.identity.test.ts +393 -0
  427. package/src/boot/__tests__/sessionColdBoot.sharedDevice.test.ts +325 -0
  428. package/src/boot/__tests__/sessionColdBoot.test.ts +570 -0
  429. package/src/boot/sessionColdBoot.ts +529 -0
  430. package/src/constants/version.ts +15 -0
  431. package/src/crypto/__tests__/backupMaterial.test.ts +86 -0
  432. package/src/crypto/__tests__/cryptoPrimitives.test.ts +226 -0
  433. package/src/crypto/__tests__/identityMocks.ts +125 -0
  434. package/src/crypto/__tests__/keyManager.atomicity.test.ts +272 -0
  435. package/src/crypto/__tests__/keyManager.cacheSafety.test.ts +175 -0
  436. package/src/crypto/__tests__/keyManager.identityStatus.test.ts +217 -0
  437. package/src/crypto/__tests__/keyManager.recoveryLadder.test.ts +179 -0
  438. package/src/crypto/__tests__/keyManager.recoveryMnemonic.test.ts +138 -0
  439. package/src/crypto/__tests__/keyManager.storageMigration.test.ts +227 -0
  440. package/src/crypto/__tests__/keyManager.test.ts +329 -0
  441. package/src/crypto/__tests__/polyfill.test.ts +109 -0
  442. package/src/crypto/__tests__/recoveryPhrase.test.ts +61 -0
  443. package/src/crypto/__tests__/scopedSeed.test.ts +126 -0
  444. package/src/crypto/__tests__/signChallengeShared.test.ts +63 -0
  445. package/src/crypto/__tests__/signedRecord.test.ts +230 -0
  446. package/src/crypto/aead.ts +97 -0
  447. package/src/crypto/ecdh.ts +37 -0
  448. package/src/crypto/identityMarker.ts +291 -0
  449. package/src/crypto/kdf.ts +43 -0
  450. package/src/crypto/keyManager.ts +2607 -0
  451. package/src/crypto/polyfill.ts +143 -0
  452. package/src/crypto/recoveryPhrase.ts +337 -0
  453. package/src/crypto/signatureService.ts +350 -0
  454. package/src/i18n/__tests__/accountCategoryLabels.test.ts +62 -0
  455. package/src/i18n/__tests__/accountRoleLabels.test.ts +54 -0
  456. package/src/i18n/__tests__/reputationCategoryLabels.test.ts +56 -0
  457. package/src/i18n/__tests__/trustTierLabels.test.ts +47 -0
  458. package/src/i18n/accountCategoryLabels.ts +44 -0
  459. package/src/i18n/accountRoleLabels.ts +26 -0
  460. package/src/i18n/index.ts +88 -0
  461. package/src/i18n/locales/ar-SA.json +282 -0
  462. package/src/i18n/locales/ca-ES.json +282 -0
  463. package/src/i18n/locales/de-DE.json +282 -0
  464. package/src/i18n/locales/en-US.json +2161 -0
  465. package/src/i18n/locales/es-ES.json +2161 -0
  466. package/src/i18n/locales/fr-FR.json +282 -0
  467. package/src/i18n/locales/it-IT.json +282 -0
  468. package/src/i18n/locales/ja-JP.json +282 -0
  469. package/src/i18n/locales/ko-KR.json +282 -0
  470. package/src/i18n/locales/pt-PT.json +282 -0
  471. package/src/i18n/locales/zh-CN.json +282 -0
  472. package/src/i18n/reputationCategoryLabels.ts +20 -0
  473. package/src/i18n/trustTierLabels.ts +18 -0
  474. package/src/index.ts +881 -0
  475. package/src/inference/OxyInferenceClient.ts +888 -0
  476. package/src/inference/__tests__/OxyInferenceClient.test.ts +834 -0
  477. package/src/logger/__tests__/logger.test.ts +207 -0
  478. package/src/logger/index.ts +217 -0
  479. package/src/mixins/OxyServices.accounts.ts +1330 -0
  480. package/src/mixins/OxyServices.analytics.ts +53 -0
  481. package/src/mixins/OxyServices.appData.ts +158 -0
  482. package/src/mixins/OxyServices.assets.ts +861 -0
  483. package/src/mixins/OxyServices.auth.ts +1858 -0
  484. package/src/mixins/OxyServices.chains.ts +134 -0
  485. package/src/mixins/OxyServices.civic.ts +945 -0
  486. package/src/mixins/OxyServices.connectedApps.ts +174 -0
  487. package/src/mixins/OxyServices.contacts.ts +73 -0
  488. package/src/mixins/OxyServices.deviceBoot.ts +210 -0
  489. package/src/mixins/OxyServices.deviceTransfer.ts +393 -0
  490. package/src/mixins/OxyServices.devices.ts +120 -0
  491. package/src/mixins/OxyServices.features.ts +454 -0
  492. package/src/mixins/OxyServices.followGraph.ts +293 -0
  493. package/src/mixins/OxyServices.identity.ts +705 -0
  494. package/src/mixins/OxyServices.identityBackup.ts +250 -0
  495. package/src/mixins/OxyServices.inference.ts +57 -0
  496. package/src/mixins/OxyServices.language.ts +144 -0
  497. package/src/mixins/OxyServices.links.ts +107 -0
  498. package/src/mixins/OxyServices.location.ts +46 -0
  499. package/src/mixins/OxyServices.nodes.ts +337 -0
  500. package/src/mixins/OxyServices.notifications.ts +142 -0
  501. package/src/mixins/OxyServices.payment.ts +163 -0
  502. package/src/mixins/OxyServices.privacy.ts +219 -0
  503. package/src/mixins/OxyServices.reputation.ts +436 -0
  504. package/src/mixins/OxyServices.security.ts +110 -0
  505. package/src/mixins/OxyServices.store.ts +585 -0
  506. package/src/mixins/OxyServices.topics.ts +169 -0
  507. package/src/mixins/OxyServices.user.ts +1137 -0
  508. package/src/mixins/OxyServices.utility.ts +1370 -0
  509. package/src/mixins/__tests__/OxyServices.civic.test.ts +1095 -0
  510. package/src/mixins/__tests__/OxyServices.deviceBoot.test.ts +124 -0
  511. package/src/mixins/__tests__/OxyServices.deviceTransfer.test.ts +271 -0
  512. package/src/mixins/__tests__/OxyServices.identity.test.ts +376 -0
  513. package/src/mixins/__tests__/OxyServices.links.test.ts +154 -0
  514. package/src/mixins/__tests__/OxyServices.nodes.test.ts +341 -0
  515. package/src/mixins/__tests__/OxyServices.rotateKey.test.ts +276 -0
  516. package/src/mixins/__tests__/OxyServices.serviceAssetMetadata.test.ts +192 -0
  517. package/src/mixins/__tests__/OxyServices.serviceAssetMetadataBySha.test.ts +135 -0
  518. package/src/mixins/__tests__/accounts.test.ts +727 -0
  519. package/src/mixins/__tests__/appData.test.ts +203 -0
  520. package/src/mixins/__tests__/assetCredentials.test.ts +47 -0
  521. package/src/mixins/__tests__/assetUpload.test.ts +191 -0
  522. package/src/mixins/__tests__/backgroundCredential.httpIntegration.test.ts +135 -0
  523. package/src/mixins/__tests__/chains.test.ts +113 -0
  524. package/src/mixins/__tests__/commonsSignIn.test.ts +1144 -0
  525. package/src/mixins/__tests__/connectedApps.test.ts +123 -0
  526. package/src/mixins/__tests__/deviceTokenMintPinned.test.ts +113 -0
  527. package/src/mixins/__tests__/discoveryErrorHandling.test.ts +266 -0
  528. package/src/mixins/__tests__/followCacheInvalidation.test.ts +173 -0
  529. package/src/mixins/__tests__/followGraph.test.ts +147 -0
  530. package/src/mixins/__tests__/followGraphPagination.test.ts +271 -0
  531. package/src/mixins/__tests__/getFileDownloadUrl.test.ts +346 -0
  532. package/src/mixins/__tests__/getFollowStatuses.test.ts +95 -0
  533. package/src/mixins/__tests__/getUsersByIds.test.ts +149 -0
  534. package/src/mixins/__tests__/identityBackup.test.ts +315 -0
  535. package/src/mixins/__tests__/identityWriteCacheInvalidation.test.ts +407 -0
  536. package/src/mixins/__tests__/inferenceFactory.test.ts +58 -0
  537. package/src/mixins/__tests__/onTokensChanged.test.ts +129 -0
  538. package/src/mixins/__tests__/preSessionSkipAuth.test.ts +284 -0
  539. package/src/mixins/__tests__/privacyCacheInvalidation.test.ts +155 -0
  540. package/src/mixins/__tests__/reputation.test.ts +522 -0
  541. package/src/mixins/__tests__/serviceAuth.test.ts +832 -0
  542. package/src/mixins/__tests__/serviceTokenJwks.test.ts +208 -0
  543. package/src/mixins/__tests__/store.test.ts +304 -0
  544. package/src/mixins/__tests__/topics.test.ts +156 -0
  545. package/src/mixins/__tests__/userReadCacheBypass.test.ts +129 -0
  546. package/src/mixins/__tests__/userTokenAuth.test.ts +746 -0
  547. package/src/mixins/__tests__/verifyChallenge.test.ts +130 -0
  548. package/src/mixins/__tests__/verifyServiceActingAs.test.ts +167 -0
  549. package/src/mixins/__tests__/webauthnAuth.test.ts +205 -0
  550. package/src/mixins/index.ts +201 -0
  551. package/src/mixins/mixinHelpers.ts +69 -0
  552. package/src/models/Topic.ts +46 -0
  553. package/src/models/interfaces.ts +786 -0
  554. package/src/models/session.ts +55 -0
  555. package/src/server/__tests__/auth.test.ts +78 -0
  556. package/src/server/__tests__/capabilityTicket.test.ts +111 -0
  557. package/src/server/__tests__/cors.socket.test.ts +225 -0
  558. package/src/server/__tests__/cors.test.ts +158 -0
  559. package/src/server/__tests__/rateLimit.test.ts +257 -0
  560. package/src/server/__tests__/safeFetch.test.ts +232 -0
  561. package/src/server/__tests__/securityHeaders.test.ts +348 -0
  562. package/src/server/__tests__/serviceTokenAttribution.test.ts +396 -0
  563. package/src/server/__tests__/userInvalidation.test.ts +203 -0
  564. package/src/server/__tests__/verifySecret.test.ts +40 -0
  565. package/src/server/auth.ts +271 -0
  566. package/src/server/capabilityTicket.ts +258 -0
  567. package/src/server/cors.ts +277 -0
  568. package/src/server/index.ts +136 -0
  569. package/src/server/rateLimit.ts +313 -0
  570. package/src/server/safeFetch.ts +586 -0
  571. package/src/server/securityHeaders.ts +467 -0
  572. package/src/server/userInvalidation.ts +199 -0
  573. package/src/server/verifySecret.ts +52 -0
  574. package/src/session/SessionClient.ts +1001 -0
  575. package/src/session/__tests__/SessionClient.additive.test.ts +153 -0
  576. package/src/session/__tests__/SessionClient.broadcastChannel.test.ts +114 -0
  577. package/src/session/__tests__/SessionClient.diagnostics.test.ts +91 -0
  578. package/src/session/__tests__/SessionClient.directory.test.ts +688 -0
  579. package/src/session/__tests__/SessionClient.httpIntegration.test.ts +65 -0
  580. package/src/session/__tests__/SessionClient.identityPin.test.ts +175 -0
  581. package/src/session/__tests__/SessionClient.rest.test.ts +119 -0
  582. package/src/session/__tests__/SessionClient.serverEvents.test.ts +72 -0
  583. package/src/session/__tests__/SessionClient.socket.test.ts +202 -0
  584. package/src/session/__tests__/SessionClient.socketFactory.test.ts +81 -0
  585. package/src/session/__tests__/SessionClient.state.test.ts +78 -0
  586. package/src/session/__tests__/SessionClient.switchTokenOrder.test.ts +170 -0
  587. package/src/session/__tests__/accountDelegationAccess.test.ts +104 -0
  588. package/src/session/__tests__/accountDialogController.test.ts +1969 -0
  589. package/src/session/__tests__/accountDialogShape.test.ts +118 -0
  590. package/src/session/__tests__/accountSwitchTargets.test.ts +137 -0
  591. package/src/session/__tests__/authStateStore.test.ts +451 -0
  592. package/src/session/__tests__/deviceDirectory.test.ts +422 -0
  593. package/src/session/__tests__/deviceSwitcherRows.test.ts +223 -0
  594. package/src/session/__tests__/identityPin.test.ts +131 -0
  595. package/src/session/__tests__/identitySession.test.ts +194 -0
  596. package/src/session/__tests__/projectSessionState.test.ts +105 -0
  597. package/src/session/__tests__/refresh.identityPin.test.ts +307 -0
  598. package/src/session/__tests__/refresh.test.ts +443 -0
  599. package/src/session/__tests__/sessionIntegration.test.ts +209 -0
  600. package/src/session/__tests__/sharedDeviceCredential.test.ts +300 -0
  601. package/src/session/accountDelegationAccess.ts +72 -0
  602. package/src/session/accountDialogController.ts +1494 -0
  603. package/src/session/accountSwitchTargets.ts +93 -0
  604. package/src/session/authStateStore.ts +502 -0
  605. package/src/session/createSessionClient.ts +39 -0
  606. package/src/session/deviceDirectory.ts +269 -0
  607. package/src/session/deviceSwitcherRows.ts +145 -0
  608. package/src/session/identityPin.ts +310 -0
  609. package/src/session/identitySession.ts +206 -0
  610. package/src/session/projectSessionState.ts +137 -0
  611. package/src/session/refresh.ts +517 -0
  612. package/src/session/sessionClientHost.ts +39 -0
  613. package/src/session/sharedDeviceCredential.ts +349 -0
  614. package/src/session/socketLoader.ts +30 -0
  615. package/src/shared/utils/colorUtils.ts +155 -0
  616. package/src/shared/utils/errorUtils.ts +181 -0
  617. package/src/shared/utils/index.ts +59 -0
  618. package/src/shared/utils/networkUtils.ts +248 -0
  619. package/src/shared/utils/themeUtils.ts +115 -0
  620. package/src/types/buffer.d.ts +97 -0
  621. package/src/types/expo-crypto.d.ts +16 -0
  622. package/src/types/expo-secure-store.d.ts +17 -0
  623. package/src/utils/__tests__/accountUtils.test.ts +151 -0
  624. package/src/utils/__tests__/activityId.test.ts +45 -0
  625. package/src/utils/__tests__/asyncUtils.test.ts +187 -0
  626. package/src/utils/__tests__/authWebUrl.test.ts +15 -0
  627. package/src/utils/__tests__/cacheKey.test.ts +0 -0
  628. package/src/utils/__tests__/coldBoot.test.ts +496 -0
  629. package/src/utils/__tests__/commonsApproval.test.ts +60 -0
  630. package/src/utils/__tests__/identityCacheSweep.test.ts +151 -0
  631. package/src/utils/__tests__/languageUtils.test.ts +219 -0
  632. package/src/utils/__tests__/oauthPkce.test.ts +272 -0
  633. package/src/utils/__tests__/officialOrigins.test.ts +31 -0
  634. package/src/utils/__tests__/oxyServiceEnvironment.test.ts +7 -0
  635. package/src/utils/__tests__/profileLinks.test.ts +180 -0
  636. package/src/utils/__tests__/redactUrl.test.ts +33 -0
  637. package/src/utils/__tests__/registrableApex.test.ts +62 -0
  638. package/src/utils/__tests__/textNormalization.test.ts +205 -0
  639. package/src/utils/__tests__/validationUtils.test.ts +703 -0
  640. package/src/utils/__tests__/webauthnOrigin.test.ts +83 -0
  641. package/src/utils/accountCacheSweep.ts +93 -0
  642. package/src/utils/accountUtils.ts +194 -0
  643. package/src/utils/activityId.ts +2 -0
  644. package/src/utils/apiUtils.ts +137 -0
  645. package/src/utils/asyncUtils.ts +280 -0
  646. package/src/utils/authHelpers.ts +148 -0
  647. package/src/utils/authWebUrl.ts +17 -0
  648. package/src/utils/avatarUtils.ts +39 -0
  649. package/src/utils/cache.ts +273 -0
  650. package/src/utils/cacheKey.ts +93 -0
  651. package/src/utils/coldBoot.ts +218 -0
  652. package/src/utils/commonsApproval.ts +39 -0
  653. package/src/utils/commonsDelivery.ts +132 -0
  654. package/src/utils/deviceManager.ts +203 -0
  655. package/src/utils/displayNamePolicyRanges.generated.ts +69 -0
  656. package/src/utils/edgeRegion.ts +2 -0
  657. package/src/utils/errorUtils.ts +352 -0
  658. package/src/utils/identityCacheSweep.ts +104 -0
  659. package/src/utils/languageUtils.ts +256 -0
  660. package/src/utils/oauthPkce.ts +392 -0
  661. package/src/utils/officialOrigins.ts +62 -0
  662. package/src/utils/oxyServiceEnvironment.ts +17 -0
  663. package/src/utils/platform.ts +139 -0
  664. package/src/utils/profileLinks.ts +91 -0
  665. package/src/utils/redactUrl.ts +28 -0
  666. package/src/utils/registrableApex.ts +41 -0
  667. package/src/utils/requestUtils.ts +237 -0
  668. package/src/utils/sessionUtils.ts +206 -0
  669. package/src/utils/textNormalization.ts +162 -0
  670. package/src/utils/userHandle.ts +49 -0
  671. package/src/utils/userIdentity.ts +60 -0
  672. package/src/utils/validationUtils.ts +390 -0
  673. package/src/utils/webauthnOrigin.ts +52 -0
@@ -0,0 +1,558 @@
1
+ /**
2
+ * User Management Methods Mixin
3
+ */
4
+ import type { User, Notification, NotificationPreferences, UserPreferences, SearchProfilesResponse, PrivacySettings } from '../models/interfaces';
5
+ import type { UserNameResponse, UserProfileUpdate, RecommendationRequest, RecommendationItem, ThemePreference } from '@oxy.so/contracts';
6
+ import type { OxyServicesBase } from '../OxyServices.base';
7
+ import { type PaginationParams, type FollowGraphParams } from '../utils/apiUtils';
8
+ /**
9
+ * Response of the single follow/unfollow toggle route
10
+ * (`POST /users/:id/follow` and `DELETE /users/:id/follow`). The route reports a
11
+ * status message, which side of the toggle was applied, and the post-write
12
+ * follower/following counts for the affected users.
13
+ */
14
+ export interface FollowMutationResult {
15
+ /** Human-readable status message. */
16
+ message: string;
17
+ /** Which side of the toggle was applied, when reported by the route. */
18
+ action?: 'follow' | 'unfollow';
19
+ /** Post-write counts, when reported by the route. */
20
+ counts?: {
21
+ /** The target user's follower count after the write. */
22
+ followers: number;
23
+ /** The viewer's following count after the write. */
24
+ following: number;
25
+ };
26
+ }
27
+ /** Per-user outcome returned by `POST /users/follow/bulk`. */
28
+ export interface BulkFollowEntry {
29
+ /** The user ID that was processed. */
30
+ userId: string;
31
+ /** Whether the follow was applied (or already in place) without error. */
32
+ success: boolean;
33
+ /** Whether the caller was already following this user before the request. */
34
+ alreadyFollowing: boolean;
35
+ }
36
+ /** Response shape of `POST /users/follow/bulk`. */
37
+ export interface BulkFollowResult {
38
+ /** Per-user outcomes, in request order. */
39
+ results: BulkFollowEntry[];
40
+ /** Number of users newly followed by this request. */
41
+ followedCount: number;
42
+ }
43
+ /**
44
+ * The authenticated viewer's OWN social graph, ids-only — the response of
45
+ * `GET /users/me/graph`. Consolidates the accounts the viewer follows, the
46
+ * subset who follow back (mutuals), and the accounts the viewer has blocked
47
+ * into one payload so a consumer can fetch its whole viewer graph in a single
48
+ * round trip instead of three. Each list is server-bounded; bare ids only (no
49
+ * hydrated DTOs) because the consumer hydrates/ranks itself.
50
+ */
51
+ export interface ViewerGraph {
52
+ /** Accounts the viewer follows (most-recent first, bounded). */
53
+ followingIds: string[];
54
+ /** Accounts the viewer follows that ALSO follow the viewer back (bounded). */
55
+ mutualIds: string[];
56
+ /** Accounts the viewer has blocked (bounded). */
57
+ blockedIds: string[];
58
+ /** Accounts the viewer has restricted (bounded). */
59
+ restrictedIds: string[];
60
+ }
61
+ /** Per-user outcome returned by `POST /users/unfollow/bulk`. */
62
+ export interface BulkUnfollowEntry {
63
+ /** The user ID that was processed. */
64
+ userId: string;
65
+ /** Whether the unfollow was applied (or already absent) without error. */
66
+ success: boolean;
67
+ /** Whether the caller was following this user before the request. */
68
+ wasFollowing: boolean;
69
+ }
70
+ /** Response shape of `POST /users/unfollow/bulk`. */
71
+ export interface BulkUnfollowResult {
72
+ /** Per-user outcomes, in request order. */
73
+ results: BulkUnfollowEntry[];
74
+ /** Number of users newly unfollowed by this request. */
75
+ unfollowedCount: number;
76
+ }
77
+ export declare function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T): {
78
+ new (...args: any[]): {
79
+ /**
80
+ * Service-token request, implemented by the auth mixin earlier in the
81
+ * composition pipeline (see `mixins/index.ts`). The user mixin is typed
82
+ * against `OxyServicesBase`, which does not carry the auth mixin's methods,
83
+ * so this `declare` surfaces the inherited runtime method to TypeScript
84
+ * without re-implementing it. Used by `getUsersByIds` to authenticate the
85
+ * server-to-server `/users/by-ids` bulk fetch with a bearer service token.
86
+ */
87
+ makeServiceRequest: <R = unknown>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: unknown, userId?: string) => Promise<R>;
88
+ /**
89
+ * Raw service credentials stored by `configureServiceAuth()` on the auth
90
+ * mixin (earlier in the pipeline). Surfaced here via `declare` — for the
91
+ * same typing reason as `makeServiceRequest` above — so `getUsersByIds` can
92
+ * detect whether this instance is service-configured (a backend) and pick
93
+ * the bearer-service path, or fall back to the user-session path (a browser/
94
+ * RN client). Both are `null` until `configureServiceAuth(apiKey, apiSecret)`
95
+ * is called.
96
+ */
97
+ _serviceApiKey: string | null;
98
+ _serviceApiSecret: string | null;
99
+ /**
100
+ * Get profile by username.
101
+ *
102
+ * @param username - The profile's username.
103
+ * @param options.cache - Defaults to `true` (5-minute TTL), matching prior
104
+ * behavior. Pass `{ cache: false }` to force a registry-fresh read: the
105
+ * request bypasses BOTH the cache lookup and the post-fetch cache write
106
+ * (see {@link HttpService.request}'s `cache` handling), so it neither
107
+ * serves nor overwrites any entry already cached for this key — a
108
+ * previously cached response (if one exists) is left in place until its
109
+ * own TTL expires or is explicitly invalidated elsewhere. Use this when a
110
+ * caller must observe a just-written change (e.g. a privacy/consent flag)
111
+ * that would otherwise be masked by the TTL window.
112
+ */
113
+ getProfileByUsername(username: string, options?: {
114
+ cache?: boolean;
115
+ }): Promise<User>;
116
+ /**
117
+ * Lightweight username lookup for login flows.
118
+ * Returns minimal public info: exists, color, avatar, name.displayName.
119
+ * Faster than getProfileByUsername — no stats, no formatting.
120
+ */
121
+ lookupUsername(username: string): Promise<{
122
+ exists: boolean;
123
+ username: string;
124
+ color: string | null;
125
+ avatar: string | null;
126
+ name: UserNameResponse;
127
+ }>;
128
+ /**
129
+ * Search user profiles
130
+ */
131
+ searchProfiles(query: string, pagination?: PaginationParams): Promise<SearchProfilesResponse>;
132
+ /**
133
+ * Resolve a fediverse handle to an Oxy user profile.
134
+ * Performs WebFinger discovery and returns the user, or null if not found.
135
+ * @param handle - Fediverse handle (e.g. "@user@mastodon.social" or "user@domain")
136
+ */
137
+ resolveProfile(handle: string): Promise<User | null>;
138
+ /**
139
+ * Resolve (find or create) a non-local user. All user creation for
140
+ * external accounts (federated, agent, automated) goes through this
141
+ * method — calling services never write user data directly.
142
+ */
143
+ resolveExternalUser(data: {
144
+ type: "federated" | "agent" | "automated";
145
+ username: string;
146
+ actorUri?: string;
147
+ domain?: string;
148
+ displayName?: string;
149
+ avatar?: string;
150
+ bio?: string;
151
+ ownerId?: string;
152
+ }): Promise<User>;
153
+ /**
154
+ * Get profile recommendations.
155
+ *
156
+ * Public discovery read — works WITHOUT authentication. The SDK attaches the
157
+ * access token automatically when one is available (personalized via
158
+ * mutual-connection overlap), and falls back to popular public profiles when
159
+ * the caller is logged out. This deliberately does NOT use `withAuthRetry`,
160
+ * which would throw an authentication timeout for logged-out callers before
161
+ * the request is ever sent.
162
+ *
163
+ * Routing (two server endpoints, both validated against the same
164
+ * `@oxy.so/contracts` recommendation schemas so the wire shape cannot drift):
165
+ *
166
+ * - **GET `/profiles/recommendations`** (cached) is used for the simple,
167
+ * back-compatible case: no options at all, or only `excludeTypes` and/or
168
+ * `limit`. `excludeTypes` is sent as a comma-joined query param and
169
+ * `limit` as a numeric query param — byte-for-byte identical to the legacy
170
+ * behavior so every existing caller keeps the same request and cache key.
171
+ * - **POST `/profiles/recommendations`** is used whenever any of the scored
172
+ * (v2) fields — `boosts`, `excludeIds`, `signalWeights`, `clientId`, or
173
+ * `offset` — is present. The full options object is validated with
174
+ * `recommendationRequestSchema` and sent as the request body. The POST is
175
+ * cached by the HttpService keyed on the serialized body, so repeated
176
+ * identical scored requests are deduplicated/cached just like the GET path.
177
+ *
178
+ * @param options - {@link RecommendationRequest} from `@oxy.so/contracts`.
179
+ * Omitted entirely (or `{ excludeTypes }`) preserves the legacy GET path.
180
+ */
181
+ getProfileRecommendations(options?: RecommendationRequest): Promise<RecommendationItem[]>;
182
+ /**
183
+ * Get profiles similar to a given user, based on co-follower overlap.
184
+ */
185
+ getSimilarProfiles(userId: string, limitOrParams?: number | {
186
+ limit?: number;
187
+ offset?: number;
188
+ }): Promise<User[]>;
189
+ /**
190
+ * Get user by ID.
191
+ *
192
+ * @param userId - The target user's id.
193
+ * @param options.cache - Defaults to `true` (5-minute TTL), matching prior
194
+ * behavior. Pass `{ cache: false }` to force a registry-fresh read: the
195
+ * request bypasses BOTH the cache lookup and the post-fetch cache write
196
+ * (see {@link HttpService.request}'s `cache` handling), so it neither
197
+ * serves nor overwrites any entry already cached for this key — a
198
+ * previously cached response (if one exists) is left in place until its
199
+ * own TTL expires or is explicitly invalidated elsewhere. Use this when a
200
+ * caller must observe a just-written change (e.g. a privacy/consent flag)
201
+ * that would otherwise be masked by the TTL window.
202
+ */
203
+ getUserById(userId: string, options?: {
204
+ cache?: boolean;
205
+ }): Promise<User>;
206
+ /**
207
+ * Fetch many users by id in one round-trip per chunk.
208
+ *
209
+ * Built for feed/hydration call sites that would otherwise issue one
210
+ * `getUserById` request per unique author (the classic M+1). Ids are
211
+ * deduplicated and validated (empty/blank ids dropped) before being split
212
+ * into chunks of {@link USERS_BY_IDS_CHUNK_SIZE} and POSTed to
213
+ * `/users/by-ids` as `{ ids }`. The server returns the matched users as a
214
+ * flat `User[]` (order is not guaranteed and the caller is expected to map
215
+ * by `id`); each is run through `normalizeUserIdentity`, matching
216
+ * `getUserById`.
217
+ *
218
+ * **Dual-mode auth.** `/users/by-ids` is `optionalUserOrServiceAuth` on
219
+ * oxy-api: it accepts a service token, a user session, or an anonymous
220
+ * caller, and returns the SAME public `{ data: PublicUserProfile[] }`
221
+ * payload (canonical `name.displayName` + `_count`) in every case — no
222
+ * viewer-specific fields. This method picks the path automatically:
223
+ * - **Service-configured host (backend):** when `configureServiceAuth(apiKey,
224
+ * apiSecret)` has been called, the chunk is fetched via `makeServiceRequest`
225
+ * (attaches `Authorization: Bearer <serviceToken>`). This is the
226
+ * server-to-server feed/notification hydration path (e.g. Mention's
227
+ * `PostHydrationService`) and is unchanged.
228
+ * - **Plain client (browser / React Native with a user session):** when no
229
+ * service credentials are configured, the chunk is fetched via
230
+ * `makeRequest`, which attaches the configured user bearer. oxy-api's CSRF
231
+ * middleware skips bearer-authenticated writes, and `makeRequest` only
232
+ * fetches a CSRF token for cookie-only (no-bearer) state-changing requests,
233
+ * so the user-bearer POST is sent without CSRF and succeeds. Previously
234
+ * this method always used the service path, so every client-side caller
235
+ * silently received `[]` because `getServiceToken()` had no credentials.
236
+ *
237
+ * Both paths run results through `normalizeUserIdentity` and unwrap the
238
+ * API's `{ data }` envelope identically (`makeServiceRequest` is literally
239
+ * `makeRequest` plus a bearer service header).
240
+ *
241
+ * Resilience: chunks are independent. A failed chunk is logged and skipped
242
+ * — the method returns every user that resolved successfully rather than
243
+ * discarding the whole call on one chunk's failure. An empty/whitespace-only
244
+ * input resolves immediately with `[]` and performs no network call.
245
+ *
246
+ * Not cached at the SDK layer: the response is keyed on a multi-id POST body
247
+ * (low hit rate) and the backend maintains its own per-id Redis cache.
248
+ */
249
+ getUsersByIds(ids: string[]): Promise<User[]>;
250
+ /**
251
+ * Get current user
252
+ */
253
+ getCurrentUser(): Promise<User>;
254
+ /**
255
+ * Update user profile.
256
+ *
257
+ * Invalidates the SDK-side response cache for every endpoint that can
258
+ * return this user — the list is owned by {@link evictOxyIdentityCache}, so
259
+ * a new identity read is added in one place instead of to each writer
260
+ * separately (this method's own hand-written copy had already drifted from
261
+ * the server-side one, missing `GET /auth/lookup/*` and
262
+ * `GET /profiles/resolve`). The account forest (`GET /accounts` and the
263
+ * caller's own detail row) is swept too — a personal account IS this user,
264
+ * and `AccountNode.account` embeds the whole profile — from the list that
265
+ * {@link evictOxyAccountForestCache} owns, for the same reason: the accounts
266
+ * mixin writes those keys as well, and two hand-written copies drift.
267
+ *
268
+ * TanStack Query handles offline queuing automatically.
269
+ */
270
+ updateProfile(updates: UserProfileUpdate): Promise<User>;
271
+ /**
272
+ * Get privacy settings for a user
273
+ * @param userId - The user ID (defaults to current user)
274
+ */
275
+ getPrivacySettings(userId?: string): Promise<PrivacySettings>;
276
+ /**
277
+ * Update privacy settings.
278
+ *
279
+ * Invalidates the cached `GET /privacy/<id>/privacy` response (the exact
280
+ * key `getPrivacySettings` reads, scoped to the same `id`) after the write.
281
+ * `getPrivacySettings` caches for ~2 minutes (identity-scoped); without
282
+ * busting that entry, a follow-up read within the TTL window returns the
283
+ * pre-update settings. `clearCacheEntry` deletes every identity-scoped
284
+ * variant of the key.
285
+ * @param settings - Partial privacy settings object
286
+ * @param userId - The user ID (defaults to current user)
287
+ */
288
+ updatePrivacySettings(settings: Partial<PrivacySettings>, userId?: string): Promise<PrivacySettings>;
289
+ /**
290
+ * Update the authenticated user's notification preferences.
291
+ *
292
+ * Thin wrapper over `updateProfile` that constrains the patch to known
293
+ * notification channels — same persistence path, same cache invalidation,
294
+ * but type-safe at the call site.
295
+ */
296
+ updateNotificationPreferences(preferences: Partial<NotificationPreferences>): Promise<User>;
297
+ /**
298
+ * Update the authenticated user's general preferences (language, theme,
299
+ * reduce-motion, timezone). Persisted on the User document via
300
+ * `PUT /users/me` — same cache-invalidation behaviour as `updateProfile`.
301
+ */
302
+ updateUserPreferences(preferences: Partial<UserPreferences>): Promise<User>;
303
+ /**
304
+ * Update the authenticated user's portable theme preference (light/dark/
305
+ * system + Bloom color-preset key). Persisted on the User document via the
306
+ * SAME `PUT /users/me` settings path as the other preferences — same cache
307
+ * invalidation — so the next cold boot serves it on the self/session payload
308
+ * with no extra network call. The full object is written (both `mode` and
309
+ * `colorPreset` are required by the API).
310
+ */
311
+ updateThemePreference(themePreference: ThemePreference): Promise<User>;
312
+ /**
313
+ * Request account verification
314
+ */
315
+ requestAccountVerification(reason: string, evidence?: string): Promise<{
316
+ message: string;
317
+ requestId: string;
318
+ }>;
319
+ /**
320
+ * Download account data export
321
+ */
322
+ downloadAccountData(format?: "json" | "csv"): Promise<Blob>;
323
+ /**
324
+ * Delete account permanently.
325
+ *
326
+ * Signs `delete:{publicKey}:{timestamp}` with the locally-stored identity
327
+ * private key and submits the signature alongside the confirmation text
328
+ * (must equal the user's username). The signature is the cryptographic
329
+ * proof of ownership — only the device holding the private key can issue
330
+ * a valid signature, so no password is required.
331
+ *
332
+ * @param confirmText - Must equal the user's username (verified server-side)
333
+ * @throws If no identity is stored on this device, or signing fails
334
+ */
335
+ deleteAccount(confirmText: string): Promise<{
336
+ message: string;
337
+ }>;
338
+ /**
339
+ * Invalidate every cached read a follow/unfollow write invalidates.
340
+ *
341
+ * Shared by the four mutation entry points (`followUser`, `unfollowUser`,
342
+ * `followUsers`, `unfollowUsers`) so they can never drift on which caches a
343
+ * write busts.
344
+ *
345
+ * The follower/following/mutuals LISTS are cleared by PREFIX rather than by
346
+ * exact key. Those reads are paginated and ordered, so one logical list is
347
+ * spread across many content-addressed keys
348
+ * (`GET:/users/<id>/followers:{"limit":"20","offset":"40","sort":"oldest"}`);
349
+ * an exact-key clear would only bust whichever page/sort variant happened to
350
+ * be read last and would leave every other page stale. `clearCacheByPrefix`
351
+ * deletes all of them, and all identity-scoped variants of each.
352
+ */
353
+ invalidateFollowGraphCaches(targetUserIds: string[]): void;
354
+ /**
355
+ * Follow a user.
356
+ *
357
+ * Invalidates the cached `GET /users/<id>/follow-status` response after
358
+ * the write. `getFollowStatus` caches for ~1 minute (identity-scoped);
359
+ * without busting that entry, a `FollowButton` that remounts within the
360
+ * TTL window re-reads the STALE pre-write status and reverts the optimistic
361
+ * UI (the "follow resets after navigating away and back" bug).
362
+ * `clearCacheEntry` deletes every identity-scoped variant of the key.
363
+ */
364
+ followUser(userId: string): Promise<FollowMutationResult>;
365
+ /**
366
+ * Follow multiple users in a single request.
367
+ *
368
+ * POSTs `/users/follow/bulk` with `{ userIds }` (server caps the batch at
369
+ * 200). Returns the per-user outcomes and the count of users newly
370
+ * followed. An empty `userIds` array resolves immediately with an empty
371
+ * result and performs no network call.
372
+ */
373
+ followUsers(userIds: string[]): Promise<BulkFollowResult>;
374
+ /**
375
+ * Unfollow multiple users in a single request.
376
+ *
377
+ * POSTs `/users/unfollow/bulk` with `{ userIds }` (server caps the batch at
378
+ * 200). Returns the per-user outcomes and the count of users newly
379
+ * unfollowed. An empty `userIds` array resolves immediately with an empty
380
+ * result and performs no network call.
381
+ */
382
+ unfollowUsers(userIds: string[]): Promise<BulkUnfollowResult>;
383
+ /**
384
+ * Unfollow a user
385
+ */
386
+ unfollowUser(userId: string): Promise<FollowMutationResult>;
387
+ /**
388
+ * Get follow status
389
+ */
390
+ getFollowStatus(userId: string): Promise<{
391
+ isFollowing: boolean;
392
+ }>;
393
+ /**
394
+ * Resolve the viewer's follow status for MANY users in one round-trip per
395
+ * chunk. Built for list UIs (a page of `FollowButton`s) that would otherwise
396
+ * fire one `getFollowStatus` per button (the classic N+1).
397
+ *
398
+ * Ids are deduplicated and validated (empty/blank ids dropped), split into
399
+ * chunks of {@link FOLLOW_STATUS_CHUNK_SIZE} (the server's bulk cap), and
400
+ * POSTed to `/users/follow-status/bulk` as `{ userIds }`. The per-chunk
401
+ * `{ statuses }` maps are merged into one `Record<string, boolean>` covering
402
+ * every requested id — ids the viewer does not follow come back `false`.
403
+ *
404
+ * Uncached (`{ cache: false }`): the UI store owns follow-status freshness
405
+ * and writes optimistically on every mutation, so an SDK cache here would
406
+ * serve a stale status right after a follow/unfollow. An empty/whitespace-
407
+ * only input resolves immediately with `{}` and performs no network call.
408
+ */
409
+ getFollowStatuses(userIds: string[]): Promise<Record<string, boolean>>;
410
+ /**
411
+ * Get user followers.
412
+ *
413
+ * `sort` orders the underlying follow edges — `recent` (newest first, the
414
+ * server default) or `oldest`. Because the response is cached and the cache
415
+ * key is content-addressed on the query params, each `limit`/`offset`/`sort`
416
+ * combination is its own entry.
417
+ */
418
+ getUserFollowers(userId: string, pagination?: FollowGraphParams): Promise<{
419
+ followers: User[];
420
+ total: number;
421
+ hasMore: boolean;
422
+ }>;
423
+ /**
424
+ * Get user following. `sort` behaves as in {@link getUserFollowers}.
425
+ */
426
+ getUserFollowing(userId: string, pagination?: FollowGraphParams): Promise<{
427
+ following: User[];
428
+ total: number;
429
+ hasMore: boolean;
430
+ }>;
431
+ /**
432
+ * Get user mutuals ("followers you know" — users the authenticated viewer
433
+ * follows who also follow `userId`). The viewer is derived server-side from auth.
434
+ */
435
+ getUserMutuals(userId: string, pagination?: FollowGraphParams): Promise<{
436
+ mutuals: User[];
437
+ total: number;
438
+ hasMore: boolean;
439
+ }>;
440
+ /**
441
+ * Get the authenticated VIEWER's OWN mutual-follow user ids — the accounts the
442
+ * viewer follows that ALSO follow the viewer back (a bidirectional follow
443
+ * edge). The viewer is derived server-side from the SDK's auth token (never a
444
+ * param), so there is no target id to pass.
445
+ *
446
+ * Returns a bounded, lean list of ids meant to SEED a "Mutuals" feed (the
447
+ * consumer hydrates/ranks the posts itself) — distinct from
448
+ * {@link getUserMutuals}, which returns hydrated "followers you know" DTOs
449
+ * about ANOTHER profile. An anonymous caller resolves to an empty array.
450
+ */
451
+ getMutualUserIds(params?: {
452
+ limit?: number;
453
+ }): Promise<string[]>;
454
+ /**
455
+ * Get the authenticated VIEWER's bounded "follows-of-follows" user ids — the
456
+ * union of the accounts followed by the accounts the viewer follows (a
457
+ * two-hop walk of the follow graph), MINUS the viewer's own follows and the
458
+ * viewer themselves. The viewer is derived server-side from the SDK's auth
459
+ * token (never a param), so there is no target id to pass.
460
+ *
461
+ * Returns a bounded, lean list of ids meant to SEED a friends-of-friends
462
+ * feed (the consumer hydrates/ranks the posts itself), ordered by frequency
463
+ * (accounts followed by more of the viewer's follows first), then recency.
464
+ * An anonymous caller resolves to an empty array. Mirrors
465
+ * {@link getMutualUserIds}'s caching posture.
466
+ */
467
+ getFollowsOfFollowsIds(params?: {
468
+ limit?: number;
469
+ }): Promise<string[]>;
470
+ /**
471
+ * Get the authenticated VIEWER's OWN social graph — the accounts they follow,
472
+ * the subset who follow back (mutuals), and the accounts they have blocked —
473
+ * as ONE ids-only payload. The viewer is derived server-side from the SDK's
474
+ * auth token (never a param).
475
+ *
476
+ * Consolidates what were three separate round trips (`getUserFollowing` /
477
+ * `getMutualUserIds` / `getBlockedUsers`) into a single request so a consumer
478
+ * can prime its whole viewer graph at once. Mirrors {@link getMutualUserIds}'s
479
+ * caching posture (2-minute identity-scoped cache); the follow/unfollow/block/
480
+ * unblock write methods bust this entry so a local mutation is reflected
481
+ * immediately. An anonymous caller resolves to empty lists.
482
+ */
483
+ getViewerGraph(): Promise<ViewerGraph>;
484
+ /**
485
+ * Get notifications
486
+ */
487
+ getNotifications(): Promise<Notification[]>;
488
+ /**
489
+ * Get unread notification count
490
+ */
491
+ getUnreadCount(): Promise<number>;
492
+ /**
493
+ * Create notification
494
+ */
495
+ createNotification(data: Partial<Notification>): Promise<Notification>;
496
+ /**
497
+ * Mark notification as read
498
+ */
499
+ markNotificationAsRead(notificationId: string): Promise<void>;
500
+ /**
501
+ * Mark all notifications as read
502
+ */
503
+ markAllNotificationsAsRead(): Promise<void>;
504
+ /**
505
+ * Delete notification
506
+ */
507
+ deleteNotification(notificationId: string): Promise<void>;
508
+ httpService: import("../HttpService").HttpService;
509
+ cloudURL: string;
510
+ config: import("../OxyServices.base").OxyConfig;
511
+ __resetTokensForTests(): void;
512
+ makeRequest<T_1>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: any, options?: import("../HttpService").RequestOptions): Promise<T_1>;
513
+ getBaseURL(): string;
514
+ getClient(): import("../HttpService").HttpService;
515
+ createLinkedClient(config: import("../OxyServices.base").OxyConfig): import("..").LinkedHttpClient;
516
+ getMetrics(): {
517
+ totalRequests: number;
518
+ successfulRequests: number;
519
+ failedRequests: number;
520
+ cacheHits: number;
521
+ cacheMisses: number;
522
+ averageResponseTime: number;
523
+ };
524
+ clearCache(): void;
525
+ clearCacheEntry(key: string): void;
526
+ clearCacheByPrefix(prefix: string): number;
527
+ getCacheStats(): {
528
+ size: number;
529
+ hits: number;
530
+ misses: number;
531
+ hitRate: number;
532
+ };
533
+ getCloudURL(): string;
534
+ setTokens(accessToken: string): void;
535
+ clearTokens(): void;
536
+ onTokensChanged(listener: (accessToken: string | null) => void): () => void;
537
+ _cachedUserId: string | null | undefined;
538
+ _cachedAccessToken: string | null;
539
+ getCurrentUserId(): string | null;
540
+ hasValidToken(): boolean;
541
+ getAccessToken(): string | null;
542
+ getAccessTokenExpiry(): number | null;
543
+ waitForAuth(timeoutMs?: number): Promise<boolean>;
544
+ withAuthRetry<T_1>(operation: () => Promise<T_1>, operationName: string, options?: {
545
+ maxRetries?: number;
546
+ retryDelay?: number;
547
+ authTimeoutMs?: number;
548
+ }): Promise<T_1>;
549
+ validate(): Promise<boolean>;
550
+ handleError(error: unknown): Error;
551
+ healthCheck(): Promise<{
552
+ status: string;
553
+ users?: number;
554
+ timestamp?: string;
555
+ [key: string]: any;
556
+ }>;
557
+ };
558
+ } & T;