@structured-id/ui-core 0.1.5

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 (156) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +47 -0
  3. package/dist/browser-vp/index.cjs +349 -0
  4. package/dist/browser-vp/index.d.cts +287 -0
  5. package/dist/browser-vp/index.d.ts +287 -0
  6. package/dist/browser-vp/index.js +349 -0
  7. package/dist/chunk-C3Q766CY.cjs +125 -0
  8. package/dist/chunk-J5YXRXB5.js +125 -0
  9. package/dist/index.cjs +19360 -0
  10. package/dist/index.d.cts +9536 -0
  11. package/dist/index.d.ts +9536 -0
  12. package/dist/index.js +19360 -0
  13. package/dist/storage-4CB2JTLW.cjs +22 -0
  14. package/dist/storage-THRWREZP.js +22 -0
  15. package/package.json +93 -0
  16. package/src/browser-vp/crypto.ts +254 -0
  17. package/src/browser-vp/index.test.ts +10 -0
  18. package/src/browser-vp/index.ts +118 -0
  19. package/src/browser-vp/prf.ts +181 -0
  20. package/src/browser-vp/storage.test.ts +9 -0
  21. package/src/browser-vp/storage.ts +165 -0
  22. package/src/browser-vp/types.ts +97 -0
  23. package/src/browser-vp/vp.test.ts +43 -0
  24. package/src/browser-vp/vp.ts +113 -0
  25. package/src/components/SidAvatar.vue +106 -0
  26. package/src/components/SidConfirmDialog.vue +125 -0
  27. package/src/components/SidStatusBadge.vue +71 -0
  28. package/src/components/index.ts +5 -0
  29. package/src/composables/index.ts +10 -0
  30. package/src/composables/useAuth.ts +40 -0
  31. package/src/composables/useBffAuth.ts +147 -0
  32. package/src/composables/useGrpc.test.ts +196 -0
  33. package/src/composables/useGrpc.ts +120 -0
  34. package/src/composables/useSession.ts +80 -0
  35. package/src/generated/google/api/http.ts +687 -0
  36. package/src/generated/google/protobuf/descriptor.ts +4865 -0
  37. package/src/generated/google/protobuf/duration.ts +230 -0
  38. package/src/generated/google/protobuf/empty.ts +94 -0
  39. package/src/generated/google/protobuf/struct.ts +484 -0
  40. package/src/generated/google/protobuf/timestamp.ts +287 -0
  41. package/src/generated/sid/v1/account/account.client.ts +527 -0
  42. package/src/generated/sid/v1/account/account.ts +3261 -0
  43. package/src/generated/sid/v1/admin/admin.client.ts +136 -0
  44. package/src/generated/sid/v1/admin/admin.ts +846 -0
  45. package/src/generated/sid/v1/admin/admin_roles.client.ts +181 -0
  46. package/src/generated/sid/v1/admin/admin_roles.ts +1606 -0
  47. package/src/generated/sid/v1/admin/analytics.client.ts +106 -0
  48. package/src/generated/sid/v1/admin/analytics.ts +1017 -0
  49. package/src/generated/sid/v1/admin/branding.client.ts +166 -0
  50. package/src/generated/sid/v1/admin/branding.ts +1906 -0
  51. package/src/generated/sid/v1/admin/enrollment.client.ts +165 -0
  52. package/src/generated/sid/v1/admin/enrollment.ts +1704 -0
  53. package/src/generated/sid/v1/admin/events.client.ts +195 -0
  54. package/src/generated/sid/v1/admin/events.ts +1900 -0
  55. package/src/generated/sid/v1/admin/flow.client.ts +183 -0
  56. package/src/generated/sid/v1/admin/flow.ts +1552 -0
  57. package/src/generated/sid/v1/admin/keys.client.ts +107 -0
  58. package/src/generated/sid/v1/admin/keys.ts +931 -0
  59. package/src/generated/sid/v1/admin/login_experience.client.ts +160 -0
  60. package/src/generated/sid/v1/admin/login_experience.ts +1061 -0
  61. package/src/generated/sid/v1/admin/migration.client.ts +127 -0
  62. package/src/generated/sid/v1/admin/migration.ts +1948 -0
  63. package/src/generated/sid/v1/admin/notifications.client.ts +128 -0
  64. package/src/generated/sid/v1/admin/notifications.ts +1332 -0
  65. package/src/generated/sid/v1/admin/operations.client.ts +241 -0
  66. package/src/generated/sid/v1/admin/operations.ts +2648 -0
  67. package/src/generated/sid/v1/admin/organizations.client.ts +57 -0
  68. package/src/generated/sid/v1/admin/organizations.ts +349 -0
  69. package/src/generated/sid/v1/admin/scopes.client.ts +171 -0
  70. package/src/generated/sid/v1/admin/scopes.ts +1324 -0
  71. package/src/generated/sid/v1/admin/security.client.ts +412 -0
  72. package/src/generated/sid/v1/admin/security.ts +4086 -0
  73. package/src/generated/sid/v1/admin/sessions.client.ts +114 -0
  74. package/src/generated/sid/v1/admin/sessions.ts +923 -0
  75. package/src/generated/sid/v1/admin/settings.client.ts +340 -0
  76. package/src/generated/sid/v1/admin/settings.ts +2395 -0
  77. package/src/generated/sid/v1/admin/user_profile.client.ts +57 -0
  78. package/src/generated/sid/v1/admin/user_profile.ts +730 -0
  79. package/src/generated/sid/v1/admin/webhooks.client.ts +269 -0
  80. package/src/generated/sid/v1/admin/webhooks.ts +2804 -0
  81. package/src/generated/sid/v1/attestation/attestation.client.ts +115 -0
  82. package/src/generated/sid/v1/attestation/attestation.ts +813 -0
  83. package/src/generated/sid/v1/authn/auth.client.ts +900 -0
  84. package/src/generated/sid/v1/authn/auth.ts +9287 -0
  85. package/src/generated/sid/v1/authn/flows.client.ts +413 -0
  86. package/src/generated/sid/v1/authn/flows.ts +3217 -0
  87. package/src/generated/sid/v1/authz/authz.client.ts +459 -0
  88. package/src/generated/sid/v1/authz/authz.ts +5343 -0
  89. package/src/generated/sid/v1/authz/governance.client.ts +102 -0
  90. package/src/generated/sid/v1/authz/governance.ts +818 -0
  91. package/src/generated/sid/v1/common/errors.ts +184 -0
  92. package/src/generated/sid/v1/common/pagination.ts +152 -0
  93. package/src/generated/sid/v1/common/transport.ts +227 -0
  94. package/src/generated/sid/v1/common/types.ts +151 -0
  95. package/src/generated/sid/v1/events/event_stream.client.ts +67 -0
  96. package/src/generated/sid/v1/events/event_stream.ts +374 -0
  97. package/src/generated/sid/v1/federation/upstream.client.ts +142 -0
  98. package/src/generated/sid/v1/federation/upstream.ts +1736 -0
  99. package/src/generated/sid/v1/identity/identity.client.ts +467 -0
  100. package/src/generated/sid/v1/identity/identity.ts +5613 -0
  101. package/src/generated/sid/v1/machine/machine_user.client.ts +219 -0
  102. package/src/generated/sid/v1/machine/machine_user.ts +2400 -0
  103. package/src/generated/sid/v1/machine/pat.client.ts +147 -0
  104. package/src/generated/sid/v1/machine/pat.ts +1268 -0
  105. package/src/generated/sid/v1/projects/projects.client.ts +286 -0
  106. package/src/generated/sid/v1/projects/projects.ts +2714 -0
  107. package/src/generated/sid/v1/scim/scim.client.ts +274 -0
  108. package/src/generated/sid/v1/scim/scim.ts +3043 -0
  109. package/src/generated/sid/v1/test/test.client.ts +232 -0
  110. package/src/generated/sid/v1/test/test.ts +1136 -0
  111. package/src/i18n/index.ts +40 -0
  112. package/src/index.ts +157 -0
  113. package/src/profile/auth.ts +15 -0
  114. package/src/profile/components/ConsentManager.vue +88 -0
  115. package/src/profile/components/ProfileEditor.vue +146 -0
  116. package/src/profile/components/SecuritySettings.vue +170 -0
  117. package/src/profile/components/SessionList.vue +100 -0
  118. package/src/profile/components/SidLoginForm.test.ts +80 -0
  119. package/src/profile/components/SidLoginForm.vue +230 -0
  120. package/src/profile/components/SidMfaChallenge.test.ts +127 -0
  121. package/src/profile/components/SidMfaChallenge.vue +243 -0
  122. package/src/profile/components/SidRegistrationForm.test.ts +79 -0
  123. package/src/profile/components/SidRegistrationForm.vue +317 -0
  124. package/src/profile/components/index.ts +11 -0
  125. package/src/profile/composables/index.ts +6 -0
  126. package/src/profile/composables/useAccountApi.ts +203 -0
  127. package/src/profile/composables/useAuthApi.opaque.test.ts +140 -0
  128. package/src/profile/composables/useAuthApi.ts +617 -0
  129. package/src/profile/composables/useIdentityApi.ts +123 -0
  130. package/src/profile/composables/useLoginSuccess.test.ts +112 -0
  131. package/src/profile/composables/useLoginSuccess.ts +65 -0
  132. package/src/profile/composables/useOpaqueAuth.test.ts +290 -0
  133. package/src/profile/composables/useOpaqueAuth.ts +191 -0
  134. package/src/profile/composables/useSecurityLevel.test.ts +198 -0
  135. package/src/profile/composables/useSecurityLevel.ts +324 -0
  136. package/src/profile/index.ts +18 -0
  137. package/src/quasar/SidPrincipalInput.vue +209 -0
  138. package/src/quasar/index.ts +8 -0
  139. package/src/stores/auth.test.ts +83 -0
  140. package/src/stores/auth.ts +92 -0
  141. package/src/stores/index.ts +1 -0
  142. package/src/transport/adaptive.test.ts +728 -0
  143. package/src/transport/adaptive.ts +308 -0
  144. package/src/transport/framing.test.ts +227 -0
  145. package/src/transport/framing.ts +98 -0
  146. package/src/transport/webtransport.test.ts +728 -0
  147. package/src/transport/webtransport.ts +323 -0
  148. package/src/types/auth.ts +58 -0
  149. package/src/types/index.ts +1 -0
  150. package/src/utils/formatters.test.ts +26 -0
  151. package/src/utils/formatters.ts +69 -0
  152. package/src/utils/index.ts +16 -0
  153. package/src/utils/normalizePrincipal.test.ts +188 -0
  154. package/src/utils/normalizePrincipal.ts +159 -0
  155. package/src/utils/validators.test.ts +75 -0
  156. package/src/utils/validators.ts +36 -0
@@ -0,0 +1,527 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter client_generic,generate_dependencies
2
+ // @generated from protobuf file "sid/v1/account/account.proto" (package "sid.v1.account", syntax proto3)
3
+ // tslint:disable
4
+ import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
5
+ import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
6
+ import { AccountService } from "./account";
7
+ import type { ListEmailsResponse } from "./account";
8
+ import type { SetPrimaryEmailRequest } from "./account";
9
+ import type { UpdateEmailRequest } from "./account";
10
+ import type { RemoveEmailRequest } from "./account";
11
+ import type { ProfileEmail } from "../identity/identity";
12
+ import type { AddEmailRequest } from "./account";
13
+ import type { ListPhonesResponse } from "./account";
14
+ import type { SetPrimaryPhoneRequest } from "./account";
15
+ import type { UpdatePhoneRequest } from "./account";
16
+ import type { RemovePhoneRequest } from "./account";
17
+ import type { ProfilePhone } from "../identity/identity";
18
+ import type { AddPhoneRequest } from "./account";
19
+ import type { DisablePasswordlessResponse } from "./account";
20
+ import type { PasswordlessStatus } from "./account";
21
+ import type { UpdateNotificationPreferencesRequest } from "./account";
22
+ import type { NotificationPreferences } from "./account";
23
+ import type { LaunchAppResponse } from "./account";
24
+ import type { LaunchAppRequest } from "./account";
25
+ import type { ListAvailableAppsResponse } from "./account";
26
+ import type { ReauthenticateLinkResponse } from "./account";
27
+ import type { ReauthenticateLinkRequest } from "./account";
28
+ import type { UnlinkAccountRequest } from "./account";
29
+ import type { LinkAccountResponse } from "./account";
30
+ import type { LinkAccountRequest } from "./account";
31
+ import type { ListLinkedAccountsResponse } from "./account";
32
+ import type { ReportSuspiciousEventRequest } from "./account";
33
+ import type { ActivityEvent } from "./account";
34
+ import type { GetActivityEventDetailRequest } from "./account";
35
+ import type { ListActivityEventsResponse } from "./account";
36
+ import type { ListActivityEventsRequest } from "./account";
37
+ import type { DisconnectSiteRequest } from "./account";
38
+ import type { Empty } from "../../../google/protobuf/empty";
39
+ import type { UpdateClaimConsentRequest } from "./account";
40
+ import type { GetConsentDetailResponse } from "./account";
41
+ import type { GetConsentDetailRequest } from "./account";
42
+ import { stackIntercept } from "@protobuf-ts/runtime-rpc";
43
+ import type { ListConsentsResponse } from "./account";
44
+ import type { ListConsentsRequest } from "./account";
45
+ import type { UnaryCall } from "@protobuf-ts/runtime-rpc";
46
+ import type { RpcOptions } from "@protobuf-ts/runtime-rpc";
47
+ // ══════════════════════════════════════════════════════════════════════════
48
+ // Service definition
49
+ // ══════════════════════════════════════════════════════════════════════════
50
+
51
+ /**
52
+ * ── Consents ──
53
+ *
54
+ * @generated from protobuf service sid.v1.account.AccountService
55
+ */
56
+ export interface IAccountServiceClient {
57
+ /**
58
+ * List all active consents for the current profile.
59
+ *
60
+ * @generated from protobuf rpc: ListConsents
61
+ */
62
+ listConsents(input: ListConsentsRequest, options?: RpcOptions): UnaryCall<ListConsentsRequest, ListConsentsResponse>;
63
+ /**
64
+ * Get claim-level detail for a specific consent.
65
+ *
66
+ * @generated from protobuf rpc: GetConsentDetail
67
+ */
68
+ getConsentDetail(input: GetConsentDetailRequest, options?: RpcOptions): UnaryCall<GetConsentDetailRequest, GetConsentDetailResponse>;
69
+ /**
70
+ * Update consent for a single claim (grant or deny).
71
+ *
72
+ * @generated from protobuf rpc: UpdateClaimConsent
73
+ */
74
+ updateClaimConsent(input: UpdateClaimConsentRequest, options?: RpcOptions): UnaryCall<UpdateClaimConsentRequest, Empty>;
75
+ /**
76
+ * Disconnect site: revoke all claims + sessions + delete consent.
77
+ *
78
+ * @generated from protobuf rpc: DisconnectSite
79
+ */
80
+ disconnectSite(input: DisconnectSiteRequest, options?: RpcOptions): UnaryCall<DisconnectSiteRequest, Empty>;
81
+ // ── Activity History ──
82
+
83
+ /**
84
+ * List activity events with optional filters.
85
+ *
86
+ * @generated from protobuf rpc: ListActivityEvents
87
+ */
88
+ listActivityEvents(input: ListActivityEventsRequest, options?: RpcOptions): UnaryCall<ListActivityEventsRequest, ListActivityEventsResponse>;
89
+ /**
90
+ * Get full details for a single event.
91
+ *
92
+ * @generated from protobuf rpc: GetActivityEventDetail
93
+ */
94
+ getActivityEventDetail(input: GetActivityEventDetailRequest, options?: RpcOptions): UnaryCall<GetActivityEventDetailRequest, ActivityEvent>;
95
+ /**
96
+ * Report suspicious activity ("This wasn't me").
97
+ * Side effects: revoke associated session, mark as disputed.
98
+ *
99
+ * @generated from protobuf rpc: ReportSuspiciousEvent
100
+ */
101
+ reportSuspiciousEvent(input: ReportSuspiciousEventRequest, options?: RpcOptions): UnaryCall<ReportSuspiciousEventRequest, Empty>;
102
+ // ── Linked Accounts ──
103
+
104
+ /**
105
+ * List all linked upstream identity provider accounts.
106
+ *
107
+ * @generated from protobuf rpc: ListLinkedAccounts
108
+ */
109
+ listLinkedAccounts(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListLinkedAccountsResponse>;
110
+ /**
111
+ * Initiate linking to an upstream IdP. Returns a redirect URL.
112
+ *
113
+ * @generated from protobuf rpc: LinkAccount
114
+ */
115
+ linkAccount(input: LinkAccountRequest, options?: RpcOptions): UnaryCall<LinkAccountRequest, LinkAccountResponse>;
116
+ /**
117
+ * Unlink an upstream IdP account. Blocked if this is the only login method.
118
+ *
119
+ * @generated from protobuf rpc: UnlinkAccount
120
+ */
121
+ unlinkAccount(input: UnlinkAccountRequest, options?: RpcOptions): UnaryCall<UnlinkAccountRequest, Empty>;
122
+ /**
123
+ * Force re-authentication with the upstream IdP to refresh tokens/claims.
124
+ *
125
+ * @generated from protobuf rpc: ReauthenticateLink
126
+ */
127
+ reauthenticateLink(input: ReauthenticateLinkRequest, options?: RpcOptions): UnaryCall<ReauthenticateLinkRequest, ReauthenticateLinkResponse>;
128
+ // ── App Launcher ──
129
+
130
+ /**
131
+ * List applications available for SSO quick-launch.
132
+ *
133
+ * @generated from protobuf rpc: ListAvailableApps
134
+ */
135
+ listAvailableApps(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListAvailableAppsResponse>;
136
+ /**
137
+ * Launch SSO redirect to an application.
138
+ *
139
+ * @generated from protobuf rpc: LaunchApp
140
+ */
141
+ launchApp(input: LaunchAppRequest, options?: RpcOptions): UnaryCall<LaunchAppRequest, LaunchAppResponse>;
142
+ // ── Notification Preferences ──
143
+
144
+ /**
145
+ * Get notification delivery preferences for the current profile.
146
+ *
147
+ * @generated from protobuf rpc: GetNotificationPreferences
148
+ */
149
+ getNotificationPreferences(input: Empty, options?: RpcOptions): UnaryCall<Empty, NotificationPreferences>;
150
+ /**
151
+ * Update notification delivery preferences.
152
+ * Security-critical categories cannot be disabled (server enforces).
153
+ *
154
+ * @generated from protobuf rpc: UpdateNotificationPreferences
155
+ */
156
+ updateNotificationPreferences(input: UpdateNotificationPreferencesRequest, options?: RpcOptions): UnaryCall<UpdateNotificationPreferencesRequest, NotificationPreferences>;
157
+ // ── Passwordless ──
158
+
159
+ /**
160
+ * Get current passwordless status and requirement checks.
161
+ *
162
+ * @generated from protobuf rpc: GetPasswordlessStatus
163
+ */
164
+ getPasswordlessStatus(input: Empty, options?: RpcOptions): UnaryCall<Empty, PasswordlessStatus>;
165
+ /**
166
+ * Enable passwordless mode: removes OPAQUE credential (password hash).
167
+ * Requires step-up authentication. Blocked unless all requirements are met.
168
+ *
169
+ * @generated from protobuf rpc: EnablePasswordless
170
+ */
171
+ enablePasswordless(input: Empty, options?: RpcOptions): UnaryCall<Empty, Empty>;
172
+ /**
173
+ * Disable passwordless mode: triggers password enrollment flow.
174
+ *
175
+ * @generated from protobuf rpc: DisablePasswordless
176
+ */
177
+ disablePasswordless(input: Empty, options?: RpcOptions): UnaryCall<Empty, DisablePasswordlessResponse>;
178
+ // ── Phone Management ──
179
+
180
+ /**
181
+ * Add a phone number to the current profile.
182
+ *
183
+ * @generated from protobuf rpc: AddPhone
184
+ */
185
+ addPhone(input: AddPhoneRequest, options?: RpcOptions): UnaryCall<AddPhoneRequest, ProfilePhone>;
186
+ /**
187
+ * Remove a phone number from the current profile.
188
+ *
189
+ * @generated from protobuf rpc: RemovePhone
190
+ */
191
+ removePhone(input: RemovePhoneRequest, options?: RpcOptions): UnaryCall<RemovePhoneRequest, Empty>;
192
+ /**
193
+ * Update a phone number's label or capabilities.
194
+ *
195
+ * @generated from protobuf rpc: UpdatePhone
196
+ */
197
+ updatePhone(input: UpdatePhoneRequest, options?: RpcOptions): UnaryCall<UpdatePhoneRequest, ProfilePhone>;
198
+ /**
199
+ * Set a phone as the primary phone for this profile.
200
+ *
201
+ * @generated from protobuf rpc: SetPrimaryPhone
202
+ */
203
+ setPrimaryPhone(input: SetPrimaryPhoneRequest, options?: RpcOptions): UnaryCall<SetPrimaryPhoneRequest, ProfilePhone>;
204
+ /**
205
+ * List all phone numbers for the current profile.
206
+ *
207
+ * @generated from protobuf rpc: ListPhones
208
+ */
209
+ listPhones(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListPhonesResponse>;
210
+ // ── Email Management ──
211
+
212
+ /**
213
+ * Add an email address to the current profile.
214
+ *
215
+ * @generated from protobuf rpc: AddEmail
216
+ */
217
+ addEmail(input: AddEmailRequest, options?: RpcOptions): UnaryCall<AddEmailRequest, ProfileEmail>;
218
+ /**
219
+ * Remove an email address from the current profile.
220
+ *
221
+ * @generated from protobuf rpc: RemoveEmail
222
+ */
223
+ removeEmail(input: RemoveEmailRequest, options?: RpcOptions): UnaryCall<RemoveEmailRequest, Empty>;
224
+ /**
225
+ * Update an email address's label.
226
+ *
227
+ * @generated from protobuf rpc: UpdateEmail
228
+ */
229
+ updateEmail(input: UpdateEmailRequest, options?: RpcOptions): UnaryCall<UpdateEmailRequest, ProfileEmail>;
230
+ /**
231
+ * Set an email as the primary email for this profile.
232
+ *
233
+ * @generated from protobuf rpc: SetPrimaryEmail
234
+ */
235
+ setPrimaryEmail(input: SetPrimaryEmailRequest, options?: RpcOptions): UnaryCall<SetPrimaryEmailRequest, ProfileEmail>;
236
+ /**
237
+ * List all email addresses for the current profile.
238
+ *
239
+ * @generated from protobuf rpc: ListEmails
240
+ */
241
+ listEmails(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListEmailsResponse>;
242
+ }
243
+ // ══════════════════════════════════════════════════════════════════════════
244
+ // Service definition
245
+ // ══════════════════════════════════════════════════════════════════════════
246
+
247
+ /**
248
+ * ── Consents ──
249
+ *
250
+ * @generated from protobuf service sid.v1.account.AccountService
251
+ */
252
+ export class AccountServiceClient implements IAccountServiceClient, ServiceInfo {
253
+ typeName = AccountService.typeName;
254
+ methods = AccountService.methods;
255
+ options = AccountService.options;
256
+ constructor(private readonly _transport: RpcTransport) {
257
+ }
258
+ /**
259
+ * List all active consents for the current profile.
260
+ *
261
+ * @generated from protobuf rpc: ListConsents
262
+ */
263
+ listConsents(input: ListConsentsRequest, options?: RpcOptions): UnaryCall<ListConsentsRequest, ListConsentsResponse> {
264
+ const method = this.methods[0], opt = this._transport.mergeOptions(options);
265
+ return stackIntercept<ListConsentsRequest, ListConsentsResponse>("unary", this._transport, method, opt, input);
266
+ }
267
+ /**
268
+ * Get claim-level detail for a specific consent.
269
+ *
270
+ * @generated from protobuf rpc: GetConsentDetail
271
+ */
272
+ getConsentDetail(input: GetConsentDetailRequest, options?: RpcOptions): UnaryCall<GetConsentDetailRequest, GetConsentDetailResponse> {
273
+ const method = this.methods[1], opt = this._transport.mergeOptions(options);
274
+ return stackIntercept<GetConsentDetailRequest, GetConsentDetailResponse>("unary", this._transport, method, opt, input);
275
+ }
276
+ /**
277
+ * Update consent for a single claim (grant or deny).
278
+ *
279
+ * @generated from protobuf rpc: UpdateClaimConsent
280
+ */
281
+ updateClaimConsent(input: UpdateClaimConsentRequest, options?: RpcOptions): UnaryCall<UpdateClaimConsentRequest, Empty> {
282
+ const method = this.methods[2], opt = this._transport.mergeOptions(options);
283
+ return stackIntercept<UpdateClaimConsentRequest, Empty>("unary", this._transport, method, opt, input);
284
+ }
285
+ /**
286
+ * Disconnect site: revoke all claims + sessions + delete consent.
287
+ *
288
+ * @generated from protobuf rpc: DisconnectSite
289
+ */
290
+ disconnectSite(input: DisconnectSiteRequest, options?: RpcOptions): UnaryCall<DisconnectSiteRequest, Empty> {
291
+ const method = this.methods[3], opt = this._transport.mergeOptions(options);
292
+ return stackIntercept<DisconnectSiteRequest, Empty>("unary", this._transport, method, opt, input);
293
+ }
294
+ // ── Activity History ──
295
+
296
+ /**
297
+ * List activity events with optional filters.
298
+ *
299
+ * @generated from protobuf rpc: ListActivityEvents
300
+ */
301
+ listActivityEvents(input: ListActivityEventsRequest, options?: RpcOptions): UnaryCall<ListActivityEventsRequest, ListActivityEventsResponse> {
302
+ const method = this.methods[4], opt = this._transport.mergeOptions(options);
303
+ return stackIntercept<ListActivityEventsRequest, ListActivityEventsResponse>("unary", this._transport, method, opt, input);
304
+ }
305
+ /**
306
+ * Get full details for a single event.
307
+ *
308
+ * @generated from protobuf rpc: GetActivityEventDetail
309
+ */
310
+ getActivityEventDetail(input: GetActivityEventDetailRequest, options?: RpcOptions): UnaryCall<GetActivityEventDetailRequest, ActivityEvent> {
311
+ const method = this.methods[5], opt = this._transport.mergeOptions(options);
312
+ return stackIntercept<GetActivityEventDetailRequest, ActivityEvent>("unary", this._transport, method, opt, input);
313
+ }
314
+ /**
315
+ * Report suspicious activity ("This wasn't me").
316
+ * Side effects: revoke associated session, mark as disputed.
317
+ *
318
+ * @generated from protobuf rpc: ReportSuspiciousEvent
319
+ */
320
+ reportSuspiciousEvent(input: ReportSuspiciousEventRequest, options?: RpcOptions): UnaryCall<ReportSuspiciousEventRequest, Empty> {
321
+ const method = this.methods[6], opt = this._transport.mergeOptions(options);
322
+ return stackIntercept<ReportSuspiciousEventRequest, Empty>("unary", this._transport, method, opt, input);
323
+ }
324
+ // ── Linked Accounts ──
325
+
326
+ /**
327
+ * List all linked upstream identity provider accounts.
328
+ *
329
+ * @generated from protobuf rpc: ListLinkedAccounts
330
+ */
331
+ listLinkedAccounts(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListLinkedAccountsResponse> {
332
+ const method = this.methods[7], opt = this._transport.mergeOptions(options);
333
+ return stackIntercept<Empty, ListLinkedAccountsResponse>("unary", this._transport, method, opt, input);
334
+ }
335
+ /**
336
+ * Initiate linking to an upstream IdP. Returns a redirect URL.
337
+ *
338
+ * @generated from protobuf rpc: LinkAccount
339
+ */
340
+ linkAccount(input: LinkAccountRequest, options?: RpcOptions): UnaryCall<LinkAccountRequest, LinkAccountResponse> {
341
+ const method = this.methods[8], opt = this._transport.mergeOptions(options);
342
+ return stackIntercept<LinkAccountRequest, LinkAccountResponse>("unary", this._transport, method, opt, input);
343
+ }
344
+ /**
345
+ * Unlink an upstream IdP account. Blocked if this is the only login method.
346
+ *
347
+ * @generated from protobuf rpc: UnlinkAccount
348
+ */
349
+ unlinkAccount(input: UnlinkAccountRequest, options?: RpcOptions): UnaryCall<UnlinkAccountRequest, Empty> {
350
+ const method = this.methods[9], opt = this._transport.mergeOptions(options);
351
+ return stackIntercept<UnlinkAccountRequest, Empty>("unary", this._transport, method, opt, input);
352
+ }
353
+ /**
354
+ * Force re-authentication with the upstream IdP to refresh tokens/claims.
355
+ *
356
+ * @generated from protobuf rpc: ReauthenticateLink
357
+ */
358
+ reauthenticateLink(input: ReauthenticateLinkRequest, options?: RpcOptions): UnaryCall<ReauthenticateLinkRequest, ReauthenticateLinkResponse> {
359
+ const method = this.methods[10], opt = this._transport.mergeOptions(options);
360
+ return stackIntercept<ReauthenticateLinkRequest, ReauthenticateLinkResponse>("unary", this._transport, method, opt, input);
361
+ }
362
+ // ── App Launcher ──
363
+
364
+ /**
365
+ * List applications available for SSO quick-launch.
366
+ *
367
+ * @generated from protobuf rpc: ListAvailableApps
368
+ */
369
+ listAvailableApps(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListAvailableAppsResponse> {
370
+ const method = this.methods[11], opt = this._transport.mergeOptions(options);
371
+ return stackIntercept<Empty, ListAvailableAppsResponse>("unary", this._transport, method, opt, input);
372
+ }
373
+ /**
374
+ * Launch SSO redirect to an application.
375
+ *
376
+ * @generated from protobuf rpc: LaunchApp
377
+ */
378
+ launchApp(input: LaunchAppRequest, options?: RpcOptions): UnaryCall<LaunchAppRequest, LaunchAppResponse> {
379
+ const method = this.methods[12], opt = this._transport.mergeOptions(options);
380
+ return stackIntercept<LaunchAppRequest, LaunchAppResponse>("unary", this._transport, method, opt, input);
381
+ }
382
+ // ── Notification Preferences ──
383
+
384
+ /**
385
+ * Get notification delivery preferences for the current profile.
386
+ *
387
+ * @generated from protobuf rpc: GetNotificationPreferences
388
+ */
389
+ getNotificationPreferences(input: Empty, options?: RpcOptions): UnaryCall<Empty, NotificationPreferences> {
390
+ const method = this.methods[13], opt = this._transport.mergeOptions(options);
391
+ return stackIntercept<Empty, NotificationPreferences>("unary", this._transport, method, opt, input);
392
+ }
393
+ /**
394
+ * Update notification delivery preferences.
395
+ * Security-critical categories cannot be disabled (server enforces).
396
+ *
397
+ * @generated from protobuf rpc: UpdateNotificationPreferences
398
+ */
399
+ updateNotificationPreferences(input: UpdateNotificationPreferencesRequest, options?: RpcOptions): UnaryCall<UpdateNotificationPreferencesRequest, NotificationPreferences> {
400
+ const method = this.methods[14], opt = this._transport.mergeOptions(options);
401
+ return stackIntercept<UpdateNotificationPreferencesRequest, NotificationPreferences>("unary", this._transport, method, opt, input);
402
+ }
403
+ // ── Passwordless ──
404
+
405
+ /**
406
+ * Get current passwordless status and requirement checks.
407
+ *
408
+ * @generated from protobuf rpc: GetPasswordlessStatus
409
+ */
410
+ getPasswordlessStatus(input: Empty, options?: RpcOptions): UnaryCall<Empty, PasswordlessStatus> {
411
+ const method = this.methods[15], opt = this._transport.mergeOptions(options);
412
+ return stackIntercept<Empty, PasswordlessStatus>("unary", this._transport, method, opt, input);
413
+ }
414
+ /**
415
+ * Enable passwordless mode: removes OPAQUE credential (password hash).
416
+ * Requires step-up authentication. Blocked unless all requirements are met.
417
+ *
418
+ * @generated from protobuf rpc: EnablePasswordless
419
+ */
420
+ enablePasswordless(input: Empty, options?: RpcOptions): UnaryCall<Empty, Empty> {
421
+ const method = this.methods[16], opt = this._transport.mergeOptions(options);
422
+ return stackIntercept<Empty, Empty>("unary", this._transport, method, opt, input);
423
+ }
424
+ /**
425
+ * Disable passwordless mode: triggers password enrollment flow.
426
+ *
427
+ * @generated from protobuf rpc: DisablePasswordless
428
+ */
429
+ disablePasswordless(input: Empty, options?: RpcOptions): UnaryCall<Empty, DisablePasswordlessResponse> {
430
+ const method = this.methods[17], opt = this._transport.mergeOptions(options);
431
+ return stackIntercept<Empty, DisablePasswordlessResponse>("unary", this._transport, method, opt, input);
432
+ }
433
+ // ── Phone Management ──
434
+
435
+ /**
436
+ * Add a phone number to the current profile.
437
+ *
438
+ * @generated from protobuf rpc: AddPhone
439
+ */
440
+ addPhone(input: AddPhoneRequest, options?: RpcOptions): UnaryCall<AddPhoneRequest, ProfilePhone> {
441
+ const method = this.methods[18], opt = this._transport.mergeOptions(options);
442
+ return stackIntercept<AddPhoneRequest, ProfilePhone>("unary", this._transport, method, opt, input);
443
+ }
444
+ /**
445
+ * Remove a phone number from the current profile.
446
+ *
447
+ * @generated from protobuf rpc: RemovePhone
448
+ */
449
+ removePhone(input: RemovePhoneRequest, options?: RpcOptions): UnaryCall<RemovePhoneRequest, Empty> {
450
+ const method = this.methods[19], opt = this._transport.mergeOptions(options);
451
+ return stackIntercept<RemovePhoneRequest, Empty>("unary", this._transport, method, opt, input);
452
+ }
453
+ /**
454
+ * Update a phone number's label or capabilities.
455
+ *
456
+ * @generated from protobuf rpc: UpdatePhone
457
+ */
458
+ updatePhone(input: UpdatePhoneRequest, options?: RpcOptions): UnaryCall<UpdatePhoneRequest, ProfilePhone> {
459
+ const method = this.methods[20], opt = this._transport.mergeOptions(options);
460
+ return stackIntercept<UpdatePhoneRequest, ProfilePhone>("unary", this._transport, method, opt, input);
461
+ }
462
+ /**
463
+ * Set a phone as the primary phone for this profile.
464
+ *
465
+ * @generated from protobuf rpc: SetPrimaryPhone
466
+ */
467
+ setPrimaryPhone(input: SetPrimaryPhoneRequest, options?: RpcOptions): UnaryCall<SetPrimaryPhoneRequest, ProfilePhone> {
468
+ const method = this.methods[21], opt = this._transport.mergeOptions(options);
469
+ return stackIntercept<SetPrimaryPhoneRequest, ProfilePhone>("unary", this._transport, method, opt, input);
470
+ }
471
+ /**
472
+ * List all phone numbers for the current profile.
473
+ *
474
+ * @generated from protobuf rpc: ListPhones
475
+ */
476
+ listPhones(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListPhonesResponse> {
477
+ const method = this.methods[22], opt = this._transport.mergeOptions(options);
478
+ return stackIntercept<Empty, ListPhonesResponse>("unary", this._transport, method, opt, input);
479
+ }
480
+ // ── Email Management ──
481
+
482
+ /**
483
+ * Add an email address to the current profile.
484
+ *
485
+ * @generated from protobuf rpc: AddEmail
486
+ */
487
+ addEmail(input: AddEmailRequest, options?: RpcOptions): UnaryCall<AddEmailRequest, ProfileEmail> {
488
+ const method = this.methods[23], opt = this._transport.mergeOptions(options);
489
+ return stackIntercept<AddEmailRequest, ProfileEmail>("unary", this._transport, method, opt, input);
490
+ }
491
+ /**
492
+ * Remove an email address from the current profile.
493
+ *
494
+ * @generated from protobuf rpc: RemoveEmail
495
+ */
496
+ removeEmail(input: RemoveEmailRequest, options?: RpcOptions): UnaryCall<RemoveEmailRequest, Empty> {
497
+ const method = this.methods[24], opt = this._transport.mergeOptions(options);
498
+ return stackIntercept<RemoveEmailRequest, Empty>("unary", this._transport, method, opt, input);
499
+ }
500
+ /**
501
+ * Update an email address's label.
502
+ *
503
+ * @generated from protobuf rpc: UpdateEmail
504
+ */
505
+ updateEmail(input: UpdateEmailRequest, options?: RpcOptions): UnaryCall<UpdateEmailRequest, ProfileEmail> {
506
+ const method = this.methods[25], opt = this._transport.mergeOptions(options);
507
+ return stackIntercept<UpdateEmailRequest, ProfileEmail>("unary", this._transport, method, opt, input);
508
+ }
509
+ /**
510
+ * Set an email as the primary email for this profile.
511
+ *
512
+ * @generated from protobuf rpc: SetPrimaryEmail
513
+ */
514
+ setPrimaryEmail(input: SetPrimaryEmailRequest, options?: RpcOptions): UnaryCall<SetPrimaryEmailRequest, ProfileEmail> {
515
+ const method = this.methods[26], opt = this._transport.mergeOptions(options);
516
+ return stackIntercept<SetPrimaryEmailRequest, ProfileEmail>("unary", this._transport, method, opt, input);
517
+ }
518
+ /**
519
+ * List all email addresses for the current profile.
520
+ *
521
+ * @generated from protobuf rpc: ListEmails
522
+ */
523
+ listEmails(input: Empty, options?: RpcOptions): UnaryCall<Empty, ListEmailsResponse> {
524
+ const method = this.methods[27], opt = this._transport.mergeOptions(options);
525
+ return stackIntercept<Empty, ListEmailsResponse>("unary", this._transport, method, opt, input);
526
+ }
527
+ }