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