@authsome/ui-core 1.3.1 → 1.4.2

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generated/api-client.ts","../src/client.ts","../src/auth.ts","../src/webauthn.ts"],"sourcesContent":["// Code generated by authsome sdkgen. DO NOT EDIT.\n\nimport type {\n ACSRequest,\n AdminDeleteUserRequest,\n AdminGetUserRequest,\n AdminImpersonateRequest,\n AdminListOrgsRequest,\n AdminListUsersRequest,\n AdminStatsRequest,\n AdminStatsResponse,\n AdminStopImpersonationRequest,\n AdminUnbanUserRequest,\n AdminUserListResponse,\n AuthMethod,\n AuthResponse,\n BulkError,\n BulkImportResult,\n BulkRevokeSessionsRequest,\n BulkRevokeSessionsResponse,\n CallbackRequest,\n CallbackResponse,\n ChallengeRequest,\n ChallengeResponse,\n CheckSlugRequest,\n ClientConfigBranding,\n ClientConfigFieldValidation,\n ClientConfigMFA,\n ClientConfigResponse,\n ClientConfigSSO,\n ClientConfigSSOConnection,\n ClientConfigSelectOption,\n ClientConfigSignupField,\n ClientConfigSocial,\n ClientConfigSocialProvider,\n ClientConfigToggle,\n CloneEnvironmentResponse,\n Config,\n CreateKeyRequest,\n CreateKeyResponse,\n CredentialInfo,\n Definition,\n DefinitionGroup,\n DeleteAccountRequest,\n DeleteAppClientConfigRequest,\n DeleteAppSessionConfigRequest,\n DeleteDeviceRequest,\n DeleteOrgRequest,\n DeleteRequest,\n DeleteResponse,\n DeleteSettingRequest,\n DeleteTeamRequest,\n DeleteWebhookRequest,\n Device,\n DeviceListResponse,\n DisableRequest,\n DisableResponse,\n EnrollRequest,\n EnrollResponse,\n Environment,\n EnvironmentListResponse,\n EnvironmentSettingsResponse,\n ExportDataRequest,\n ForgotPasswordResponse,\n GetAppClientConfigRequest,\n GetAppSessionConfigRequest,\n GetClientConfigRequest,\n GetDeviceRequest,\n GetMeRequest,\n GetOrgRequest,\n GetTeamRequest,\n GetWebhookRequest,\n HealthResponse,\n Invitation,\n InvitationListResponse,\n KeyListItem,\n ListAuthMethodsRequest,\n ListAuthMethodsResponse,\n ListDefinitionsResponse,\n ListDevicesRequest,\n ListEnvironmentsRequest,\n ListInvitationsRequest,\n ListKeysRequest,\n ListKeysResponse,\n ListMembersRequest,\n ListNamespaceDefinitionsRequest,\n ListOrgsRequest,\n ListRequest,\n ListResponse,\n ListRolesRequest,\n ListSessionsRequest,\n ListSettingsDefinitionsRequest,\n ListTeamsRequest,\n ListWebhooksRequest,\n LoginBeginRequest,\n LoginBeginResponse,\n LoginFinishRequest,\n LoginFinishResponse,\n LoginRequest,\n LoginResponse,\n Member,\n MemberListResponse,\n Object,\n ObjectFieldDef,\n OrgListResponse,\n Organization,\n Permission,\n PermissionListResponse,\n RecoveryRegenerateRequest,\n RecoveryRegenerateResponse,\n RecoveryVerifyRequest,\n RecoveryVerifyResponse,\n RegisterBeginRequest,\n RegisterBeginResponse,\n RegisterFinishRequest,\n RegisterFinishResponse,\n RemoveMemberRequest,\n ResolveSettingRequest,\n ResolveSettingsRequest,\n ResolvedSetting,\n ResolvedSettingResponse,\n ResolvedSettingsResponse,\n RevokeKeyRequest,\n RevokeSessionRequest,\n Role,\n RoleListResponse,\n SMSSendRequest,\n SMSSendResponse,\n SMSVerifyRequest,\n SMSVerifyResponse,\n ScopeValue,\n SelectOption,\n SendRequest,\n SendResponse,\n SessionListResponse,\n SettingValueResponse,\n Settings,\n SignOutRequest,\n SlugAvailableResponse,\n StartRequest,\n StartResponse,\n StatusResponse,\n Team,\n TeamListResponse,\n TokenResponse,\n TrustDeviceRequest,\n UIMetadata,\n UnenforceSettingRequest,\n UnlinkAuthMethodRequest,\n UnlinkAuthMethodResponse,\n User,\n UserRoleListResponse,\n Validation,\n VerifyMFARequest,\n VerifyMFAResponse,\n VerifyRequest,\n VerifyResponse,\n VisibilityCondition,\n Webhook,\n WebhookListResponse,\n SetAppClientConfigRequest,\n SetAppSessionConfigRequest,\n AdminBulkRevokeSessionsRequest,\n AdminBulkImportUsersRequest,\n EnforceSettingRequest,\n SetSettingRequest,\n AdminBanUserRequest,\n ChangePasswordRequest,\n CreateEnvironmentRequest,\n UpdateEnvironmentRequest,\n CloneEnvironmentRequest,\n UpdateEnvironmentSettingsRequest,\n ForgotPasswordRequest,\n CreateAPIKeyRequest,\n RevokeAPIKeyRequest,\n SendMagicLinkRequest,\n VerifyMagicLinkRequest,\n UpdateMeRequest,\n DeleteMeRequest,\n ChallengeMFARequest,\n EnrollMFARequest,\n DisableMFARequest,\n RegenerateMFARecoveryCodesRequest,\n VerifyRecoveryCodeRequest,\n SendSMSCodeRequest,\n VerifySMSCodeRequest,\n CreateOrganizationRequest,\n AcceptInvitationRequest,\n DeclineInvitationRequest,\n UpdateOrganizationRequest,\n DeleteOrganizationRequest,\n CreateInvitationRequest,\n AddMemberRequest,\n UpdateMemberRequest,\n CreateTeamRequest,\n UpdateTeamRequest,\n PasskeyLoginBeginRequest,\n PasskeyLoginFinishRequest,\n PasskeyRegisterBeginRequest,\n PasskeyRegisterFinishRequest,\n DeletePasskeyRequest,\n RefreshRequest,\n ResetPasswordRequest,\n AuthsomeCreateRoleRequest,\n AuthsomeUpdateRoleRequest,\n AuthsomeAssignRoleRequest,\n AuthsomeAddPermissionRequest,\n AuthsomeUnassignRoleRequest,\n SignInRequest,\n SignUpRequest,\n StartOAuthRequest,\n SsoACSRequest,\n SsoCallbackRequest,\n StartSSOLoginRequest,\n VerifyEmailRequest,\n CreateWebhookRequest,\n UpdateWebhookRequest,\n} from './api-types';\n\nexport interface AuthClientConfig {\n /** Base URL of the AuthSome API (e.g., \"https://api.example.com\") */\n baseURL: string;\n /** Optional custom fetch implementation */\n fetch?: typeof globalThis.fetch;\n}\n\nexport class AuthClient {\n private baseURL: string;\n private fetchFn: typeof globalThis.fetch;\n\n constructor(config: AuthClientConfig | Pick<{ baseURL: string; fetch?: typeof globalThis.fetch }, 'baseURL' | 'fetch'>) {\n this.baseURL = config.baseURL.replace(/\\/+$/, '');\n this.fetchFn = config.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n // ──────────────────────────────────────────────────\n // Generated methods\n // ──────────────────────────────────────────────────\n\n /**\n * Get AuthSome manifest\n * GET /.well-known/authsome/manifest\n */\n async getManifest(): Promise<Record<string, unknown>> {\n const path = \"/.well-known/authsome/manifest\";\n return this.request<Record<string, unknown>>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Get OpenAPI specification\n * GET /.well-known/authsome/openapi\n */\n async getOpenAPI(): Promise<Record<string, unknown>> {\n const path = \"/.well-known/authsome/openapi\";\n return this.request<Record<string, unknown>>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Get per-app client config overrides\n * GET /v1/admin/apps/{appId}/client-config\n */\n async getAppClientConfig(appId: string, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/client-config`;\n return this.request<Config>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Set per-app client config overrides\n * PUT /v1/admin/apps/{appId}/client-config\n */\n async setAppClientConfig(appId: string, body: SetAppClientConfigRequest, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/client-config`;\n return this.request<Config>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete per-app client config overrides\n * DELETE /v1/admin/apps/{appId}/client-config\n */\n async deleteAppClientConfig(appId: string, body: DeleteAppClientConfigRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/apps/${appId}/client-config`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get per-app session config\n * GET /v1/admin/apps/{appId}/session-config\n */\n async getAppSessionConfig(appId: string, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/session-config`;\n return this.request<Config>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Set per-app session config\n * PUT /v1/admin/apps/{appId}/session-config\n */\n async setAppSessionConfig(appId: string, body: SetAppSessionConfigRequest, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/session-config`;\n return this.request<Config>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete per-app session config\n * DELETE /v1/admin/apps/{appId}/session-config\n */\n async deleteAppSessionConfig(appId: string, body: DeleteAppSessionConfigRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/apps/${appId}/session-config`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Bulk revoke sessions (admin)\n * DELETE /v1/admin/bulk/sessions\n */\n async adminBulkRevokeSessions(body: AdminBulkRevokeSessionsRequest, token: string): Promise<BulkRevokeSessionsResponse> {\n const path = \"/v1/admin/bulk/sessions\";\n return this.request<BulkRevokeSessionsResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Bulk import users (admin)\n * POST /v1/admin/bulk/users/import\n */\n async adminBulkImportUsers(body: AdminBulkImportUsersRequest, token: string): Promise<BulkImportResult> {\n const path = \"/v1/admin/bulk/users/import\";\n return this.request<BulkImportResult>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Stop impersonation (admin)\n * POST /v1/admin/impersonate/stop\n */\n async adminStopImpersonation(body: AdminStopImpersonationRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/admin/impersonate/stop\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Impersonate user (admin)\n * POST /v1/admin/impersonate/{userId}\n */\n async adminImpersonate(userId: string, body: AdminImpersonateRequest, token: string): Promise<AuthResponse> {\n const path = `/v1/admin/impersonate/${userId}`;\n return this.request<AuthResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List organizations (admin)\n * GET /v1/admin/orgs\n */\n async adminListOrgs(token: string): Promise<OrgListResponse> {\n const path = \"/v1/admin/orgs\";\n return this.request<OrgListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List all setting definitions\n * GET /v1/admin/settings/definitions\n */\n async listSettingsDefinitions(token: string): Promise<ListDefinitionsResponse> {\n const path = \"/v1/admin/settings/definitions\";\n return this.request<ListDefinitionsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List definitions for a namespace\n * GET /v1/admin/settings/definitions/{namespace}\n */\n async listNamespaceSettingsDefinitions(namespace: string, token: string): Promise<ListDefinitionsResponse> {\n const path = `/v1/admin/settings/definitions/${namespace}`;\n return this.request<ListDefinitionsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Enforce a setting value at a scope\n * PUT /v1/admin/settings/enforce/{key}\n */\n async enforceSetting(key: string, body: EnforceSettingRequest, token: string): Promise<SettingValueResponse> {\n const path = `/v1/admin/settings/enforce/${key}`;\n return this.request<SettingValueResponse>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Remove enforcement from a setting\n * DELETE /v1/admin/settings/enforce/{key}\n */\n async unenforceSetting(key: string, body: UnenforceSettingRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/settings/enforce/${key}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Resolve all settings at a scope\n * GET /v1/admin/settings/resolve\n */\n async resolveSettings(token: string): Promise<ResolvedSettingsResponse> {\n const path = \"/v1/admin/settings/resolve\";\n return this.request<ResolvedSettingsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Resolve one setting with cascade details\n * GET /v1/admin/settings/resolve/{key}\n */\n async resolveSetting(key: string, token: string): Promise<ResolvedSettingResponse> {\n const path = `/v1/admin/settings/resolve/${key}`;\n return this.request<ResolvedSettingResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Set a setting value at a scope\n * PUT /v1/admin/settings/values/{key}\n */\n async setSetting(key: string, body: SetSettingRequest, token: string): Promise<SettingValueResponse> {\n const path = `/v1/admin/settings/values/${key}`;\n return this.request<SettingValueResponse>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete a setting override at a scope\n * DELETE /v1/admin/settings/values/{key}\n */\n async deleteSetting(key: string, body: DeleteSettingRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/settings/values/${key}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get stats (admin)\n * GET /v1/admin/stats\n */\n async adminGetStats(token: string): Promise<AdminStatsResponse> {\n const path = \"/v1/admin/stats\";\n return this.request<AdminStatsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List users (admin)\n * GET /v1/admin/users\n */\n async adminListUsers(token: string): Promise<AdminUserListResponse> {\n const path = \"/v1/admin/users\";\n return this.request<AdminUserListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get user (admin)\n * GET /v1/admin/users/{userId}\n */\n async adminGetUser(userId: string, token: string): Promise<User> {\n const path = `/v1/admin/users/${userId}`;\n return this.request<User>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Delete user (admin)\n * DELETE /v1/admin/users/{userId}\n */\n async adminDeleteUser(userId: string, body: AdminDeleteUserRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/users/${userId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Ban user (admin)\n * POST /v1/admin/users/{userId}/ban\n */\n async adminBanUser(userId: string, body: AdminBanUserRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/users/${userId}/ban`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Unban user (admin)\n * POST /v1/admin/users/{userId}/unban\n */\n async adminUnbanUser(userId: string, body: AdminUnbanUserRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/users/${userId}/unban`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Change password\n * POST /v1/change-password\n */\n async changePassword(body: ChangePasswordRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/change-password\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get client configuration\n * GET /v1/client-config\n */\n async getClientConfig(token: string): Promise<ClientConfigResponse> {\n const path = \"/v1/client-config\";\n return this.request<ClientConfigResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List devices\n * GET /v1/devices\n */\n async listDevices(token: string): Promise<DeviceListResponse> {\n const path = \"/v1/devices\";\n return this.request<DeviceListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get device\n * GET /v1/devices/{deviceId}\n */\n async getDevice(deviceId: string, token: string): Promise<Device> {\n const path = `/v1/devices/${deviceId}`;\n return this.request<Device>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Delete device\n * DELETE /v1/devices/{deviceId}\n */\n async deleteDevice(deviceId: string, body: DeleteDeviceRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/devices/${deviceId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Trust device\n * PATCH /v1/devices/{deviceId}/trust\n */\n async trustDevice(deviceId: string, body: TrustDeviceRequest, token: string): Promise<Device> {\n const path = `/v1/devices/${deviceId}/trust`;\n return this.request<Device>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * List environments\n * GET /v1/environments\n */\n async listEnvironments(token: string): Promise<EnvironmentListResponse> {\n const path = \"/v1/environments\";\n return this.request<EnvironmentListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create environment\n * POST /v1/environments\n */\n async createEnvironment(body: CreateEnvironmentRequest, token: string): Promise<Environment> {\n const path = \"/v1/environments\";\n return this.request<Environment>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get environment\n * GET /v1/environments/{envId}\n */\n async getEnvironment(envId: string, token: string): Promise<Environment> {\n const path = `/v1/environments/${envId}`;\n return this.request<Environment>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update environment\n * PATCH /v1/environments/{envId}\n */\n async updateEnvironment(envId: string, body: UpdateEnvironmentRequest, token: string): Promise<Environment> {\n const path = `/v1/environments/${envId}`;\n return this.request<Environment>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete environment\n * DELETE /v1/environments/{envId}\n */\n async deleteEnvironment(envId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/environments/${envId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Clone environment\n * POST /v1/environments/{envId}/clone\n */\n async cloneEnvironment(envId: string, body: CloneEnvironmentRequest, token: string): Promise<CloneEnvironmentResponse> {\n const path = `/v1/environments/${envId}/clone`;\n return this.request<CloneEnvironmentResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Set default environment\n * POST /v1/environments/{envId}/set-default\n */\n async setDefaultEnvironment(envId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/environments/${envId}/set-default`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get environment settings\n * GET /v1/environments/{envId}/settings\n */\n async getEnvironmentSettings(envId: string, token: string): Promise<EnvironmentSettingsResponse> {\n const path = `/v1/environments/${envId}/settings`;\n return this.request<EnvironmentSettingsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update environment settings\n * PATCH /v1/environments/{envId}/settings\n */\n async updateEnvironmentSettings(envId: string, body: UpdateEnvironmentSettingsRequest, token: string): Promise<Environment> {\n const path = `/v1/environments/${envId}/settings`;\n return this.request<Environment>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Forgot password\n * POST /v1/forgot-password\n */\n async forgotPassword(body: ForgotPasswordRequest): Promise<ForgotPasswordResponse> {\n const path = \"/v1/forgot-password\";\n return this.request<ForgotPasswordResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Health check\n * GET /v1/health\n */\n async getHealth(): Promise<HealthResponse> {\n const path = \"/v1/health\";\n return this.request<HealthResponse>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * List API keys\n * GET /v1/keys\n */\n async listAPIKeys(token: string): Promise<ListKeysResponse> {\n const path = \"/v1/keys\";\n return this.request<ListKeysResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create API key\n * POST /v1/keys\n */\n async createAPIKey(body: CreateAPIKeyRequest, token: string): Promise<CreateKeyResponse> {\n const path = \"/v1/keys\";\n return this.request<CreateKeyResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Revoke API key\n * DELETE /v1/keys/{keyId}\n */\n async revokeAPIKey(keyId: string, body: RevokeAPIKeyRequest, token: string): Promise<void> {\n const path = `/v1/keys/${keyId}`;\n return this.request<void>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Send magic link\n * POST /v1/magic-link/send\n */\n async sendMagicLink(body: SendMagicLinkRequest): Promise<SendResponse> {\n const path = \"/v1/magic-link/send\";\n return this.request<SendResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Verify magic link\n * POST /v1/magic-link/verify\n */\n async verifyMagicLink(body: VerifyMagicLinkRequest): Promise<VerifyResponse> {\n const path = \"/v1/magic-link/verify\";\n return this.request<VerifyResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Get current user\n * GET /v1/me\n */\n async getMe(token: string): Promise<User> {\n const path = \"/v1/me\";\n return this.request<User>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update current user\n * PATCH /v1/me\n */\n async updateMe(body: UpdateMeRequest, token: string): Promise<User> {\n const path = \"/v1/me\";\n return this.request<User>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete account\n * DELETE /v1/me\n */\n async deleteMe(body: DeleteMeRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/me\";\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List linked auth methods\n * GET /v1/me/auth-methods\n */\n async listAuthMethods(token: string): Promise<ListAuthMethodsResponse> {\n const path = \"/v1/me/auth-methods\";\n return this.request<ListAuthMethodsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Unlink an auth method\n * DELETE /v1/me/auth-methods/{provider}\n */\n async unlinkAuthMethod(provider: string, body: UnlinkAuthMethodRequest, token: string): Promise<UnlinkAuthMethodResponse> {\n const path = `/v1/me/auth-methods/${provider}`;\n return this.request<UnlinkAuthMethodResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Export user data\n * GET /v1/me/export\n */\n async exportMyData(token: string): Promise<Record<string, unknown>> {\n const path = \"/v1/me/export\";\n return this.request<Record<string, unknown>>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * MFA challenge\n * POST /v1/mfa/challenge\n */\n async challengeMFA(body: ChallengeMFARequest): Promise<ChallengeResponse> {\n const path = \"/v1/mfa/challenge\";\n return this.request<ChallengeResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Enroll in MFA\n * POST /v1/mfa/enroll\n */\n async enrollMFA(body: EnrollMFARequest, token: string): Promise<EnrollResponse> {\n const path = \"/v1/mfa/enroll\";\n return this.request<EnrollResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Disable MFA\n * DELETE /v1/mfa/enrollment\n */\n async disableMFA(body: DisableMFARequest, token: string): Promise<DisableResponse> {\n const path = \"/v1/mfa/enrollment\";\n return this.request<DisableResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Regenerate MFA recovery codes\n * POST /v1/mfa/recovery/regenerate\n */\n async regenerateMFARecoveryCodes(body: RegenerateMFARecoveryCodesRequest, token: string): Promise<RecoveryRegenerateResponse> {\n const path = \"/v1/mfa/recovery/regenerate\";\n return this.request<RecoveryRegenerateResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Verify MFA recovery code\n * POST /v1/mfa/recovery/verify\n */\n async verifyRecoveryCode(body: VerifyRecoveryCodeRequest): Promise<RecoveryVerifyResponse> {\n const path = \"/v1/mfa/recovery/verify\";\n return this.request<RecoveryVerifyResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Send SMS verification code\n * POST /v1/mfa/sms/send\n */\n async sendSMSCode(body: SendSMSCodeRequest, token: string): Promise<SMSSendResponse> {\n const path = \"/v1/mfa/sms/send\";\n return this.request<SMSSendResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Verify SMS code\n * POST /v1/mfa/sms/verify\n */\n async verifySMSCode(body: VerifySMSCodeRequest, token: string): Promise<SMSVerifyResponse> {\n const path = \"/v1/mfa/sms/verify\";\n return this.request<SMSVerifyResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Verify MFA code\n * POST /v1/mfa/verify\n */\n async verifyMFA(body: VerifyMFARequest): Promise<VerifyMFAResponse> {\n const path = \"/v1/mfa/verify\";\n return this.request<VerifyMFAResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List organizations\n * GET /v1/orgs\n */\n async listOrganizations(token: string): Promise<OrgListResponse> {\n const path = \"/v1/orgs\";\n return this.request<OrgListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create organization\n * POST /v1/orgs\n */\n async createOrganization(body: CreateOrganizationRequest, token: string): Promise<Organization> {\n const path = \"/v1/orgs\";\n return this.request<Organization>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Check slug availability\n * GET /v1/orgs/check-slug\n */\n async checkOrgSlug(token: string): Promise<SlugAvailableResponse> {\n const path = \"/v1/orgs/check-slug\";\n return this.request<SlugAvailableResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Accept invitation\n * POST /v1/orgs/invitations/accept\n */\n async acceptInvitation(body: AcceptInvitationRequest, token: string): Promise<Member> {\n const path = \"/v1/orgs/invitations/accept\";\n return this.request<Member>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Decline invitation\n * POST /v1/orgs/invitations/decline\n */\n async declineInvitation(body: DeclineInvitationRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/orgs/invitations/decline\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get organization\n * GET /v1/orgs/{orgId}\n */\n async getOrganization(orgId: string, token: string): Promise<Organization> {\n const path = `/v1/orgs/${orgId}`;\n return this.request<Organization>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update organization\n * PATCH /v1/orgs/{orgId}\n */\n async updateOrganization(orgId: string, body: UpdateOrganizationRequest, token: string): Promise<Organization> {\n const path = `/v1/orgs/${orgId}`;\n return this.request<Organization>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete organization\n * DELETE /v1/orgs/{orgId}\n */\n async deleteOrganization(orgId: string, body: DeleteOrganizationRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/orgs/${orgId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List invitations\n * GET /v1/orgs/{orgId}/invitations\n */\n async listInvitations(orgId: string, token: string): Promise<InvitationListResponse> {\n const path = `/v1/orgs/${orgId}/invitations`;\n return this.request<InvitationListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create invitation\n * POST /v1/orgs/{orgId}/invitations\n */\n async createInvitation(orgId: string, body: CreateInvitationRequest, token: string): Promise<Invitation> {\n const path = `/v1/orgs/${orgId}/invitations`;\n return this.request<Invitation>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List members\n * GET /v1/orgs/{orgId}/members\n */\n async listMembers(orgId: string, token: string): Promise<MemberListResponse> {\n const path = `/v1/orgs/${orgId}/members`;\n return this.request<MemberListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Add member\n * POST /v1/orgs/{orgId}/members\n */\n async addMember(orgId: string, body: AddMemberRequest, token: string): Promise<Member> {\n const path = `/v1/orgs/${orgId}/members`;\n return this.request<Member>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Update member role\n * PATCH /v1/orgs/{orgId}/members/{memberId}\n */\n async updateMember(orgId: string, memberId: string, body: UpdateMemberRequest, token: string): Promise<Member> {\n const path = `/v1/orgs/${orgId}/members/${memberId}`;\n return this.request<Member>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Remove member\n * DELETE /v1/orgs/{orgId}/members/{memberId}\n */\n async removeMember(orgId: string, memberId: string, body: RemoveMemberRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/orgs/${orgId}/members/${memberId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List teams\n * GET /v1/orgs/{orgId}/teams\n */\n async listTeams(orgId: string, token: string): Promise<TeamListResponse> {\n const path = `/v1/orgs/${orgId}/teams`;\n return this.request<TeamListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create team\n * POST /v1/orgs/{orgId}/teams\n */\n async createTeam(orgId: string, body: CreateTeamRequest, token: string): Promise<Team> {\n const path = `/v1/orgs/${orgId}/teams`;\n return this.request<Team>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get team\n * GET /v1/orgs/{orgId}/teams/{teamId}\n */\n async getTeam(orgId: string, teamId: string, token: string): Promise<Team> {\n const path = `/v1/orgs/${orgId}/teams/${teamId}`;\n return this.request<Team>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update team\n * PATCH /v1/orgs/{orgId}/teams/{teamId}\n */\n async updateTeam(orgId: string, teamId: string, body: UpdateTeamRequest, token: string): Promise<Team> {\n const path = `/v1/orgs/${orgId}/teams/${teamId}`;\n return this.request<Team>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete team\n * DELETE /v1/orgs/{orgId}/teams/{teamId}\n */\n async deleteTeam(orgId: string, teamId: string, body: DeleteTeamRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/orgs/${orgId}/teams/${teamId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List passkeys\n * GET /v1/passkeys/\n */\n async listPasskeys(token: string): Promise<ListResponse> {\n const path = \"/v1/passkeys/\";\n return this.request<ListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Begin passkey login\n * POST /v1/passkeys/login/begin\n */\n async passkeyLoginBegin(body: PasskeyLoginBeginRequest): Promise<LoginBeginResponse> {\n const path = \"/v1/passkeys/login/begin\";\n return this.request<LoginBeginResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Complete passkey login\n * POST /v1/passkeys/login/finish\n */\n async passkeyLoginFinish(body: PasskeyLoginFinishRequest): Promise<LoginFinishResponse> {\n const path = \"/v1/passkeys/login/finish\";\n return this.request<LoginFinishResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Begin passkey registration\n * POST /v1/passkeys/register/begin\n */\n async passkeyRegisterBegin(body: PasskeyRegisterBeginRequest, token: string): Promise<RegisterBeginResponse> {\n const path = \"/v1/passkeys/register/begin\";\n return this.request<RegisterBeginResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Complete passkey registration\n * POST /v1/passkeys/register/finish\n */\n async passkeyRegisterFinish(body: PasskeyRegisterFinishRequest, token: string): Promise<RegisterFinishResponse> {\n const path = \"/v1/passkeys/register/finish\";\n return this.request<RegisterFinishResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete passkey\n * DELETE /v1/passkeys/{credentialId}\n */\n async deletePasskey(credentialId: string, body: DeletePasskeyRequest, token: string): Promise<DeleteResponse> {\n const path = `/v1/passkeys/${credentialId}`;\n return this.request<DeleteResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Refresh tokens\n * POST /v1/refresh\n */\n async refresh(body: RefreshRequest): Promise<TokenResponse> {\n const path = \"/v1/refresh\";\n return this.request<TokenResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Reset password\n * POST /v1/reset-password\n */\n async resetPassword(body: ResetPasswordRequest): Promise<StatusResponse> {\n const path = \"/v1/reset-password\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List roles\n * GET /v1/roles\n */\n async authsomeListRoles(token: string): Promise<RoleListResponse> {\n const path = \"/v1/roles\";\n return this.request<RoleListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create role\n * POST /v1/roles\n */\n async authsomeCreateRole(body: AuthsomeCreateRoleRequest, token: string): Promise<Role> {\n const path = \"/v1/roles\";\n return this.request<Role>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get role\n * GET /v1/roles/{roleId}\n */\n async authsomeGetRole(roleId: string, token: string): Promise<Role> {\n const path = `/v1/roles/${roleId}`;\n return this.request<Role>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update role\n * PATCH /v1/roles/{roleId}\n */\n async authsomeUpdateRole(roleId: string, body: AuthsomeUpdateRoleRequest, token: string): Promise<Role> {\n const path = `/v1/roles/${roleId}`;\n return this.request<Role>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete role\n * DELETE /v1/roles/{roleId}\n */\n async authsomeDeleteRole(roleId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Assign role to user\n * POST /v1/roles/{roleId}/assign\n */\n async authsomeAssignRole(roleId: string, body: AuthsomeAssignRoleRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}/assign`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List role permissions\n * GET /v1/roles/{roleId}/permissions\n */\n async authsomeListRolePermissions(roleId: string, token: string): Promise<PermissionListResponse> {\n const path = `/v1/roles/${roleId}/permissions`;\n return this.request<PermissionListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Add permission to role\n * POST /v1/roles/{roleId}/permissions\n */\n async authsomeAddPermission(roleId: string, body: AuthsomeAddPermissionRequest, token: string): Promise<Permission> {\n const path = `/v1/roles/${roleId}/permissions`;\n return this.request<Permission>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Remove permission from role\n * DELETE /v1/roles/{roleId}/permissions/{permissionId}\n */\n async authsomeRemovePermission(roleId: string, permissionId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}/permissions/${permissionId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Unassign role from user\n * POST /v1/roles/{roleId}/unassign\n */\n async authsomeUnassignRole(roleId: string, body: AuthsomeUnassignRoleRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}/unassign`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List sessions\n * GET /v1/sessions\n */\n async listSessions(token: string): Promise<SessionListResponse> {\n const path = \"/v1/sessions\";\n return this.request<SessionListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Revoke session\n * DELETE /v1/sessions/{sessionId}\n */\n async revokeSession(sessionId: string, body: RevokeSessionRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/sessions/${sessionId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Sign in\n * POST /v1/signin\n */\n async signIn(body: SignInRequest): Promise<AuthResponse> {\n const path = \"/v1/signin\";\n return this.request<AuthResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Sign out\n * POST /v1/signout\n */\n async signOut(body: SignOutRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/signout\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Sign up\n * POST /v1/signup\n */\n async signUp(body: SignUpRequest): Promise<AuthResponse> {\n const path = \"/v1/signup\";\n return this.request<AuthResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Start OAuth flow\n * POST /v1/social/{provider}\n */\n async startOAuth(provider: string, body: StartOAuthRequest): Promise<StartResponse> {\n const path = `/v1/social/${provider}`;\n return this.request<StartResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * OAuth callback\n * GET /v1/social/{provider}/callback\n */\n async oauthCallback(provider: string): Promise<CallbackResponse> {\n const path = `/v1/social/${provider}/callback`;\n return this.request<CallbackResponse>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * SSO SAML ACS endpoint\n * POST /v1/sso/{provider}/acs\n */\n async ssoACS(provider: string, body: SsoACSRequest): Promise<CallbackResponse> {\n const path = `/v1/sso/${provider}/acs`;\n return this.request<CallbackResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * SSO callback (OIDC)\n * POST /v1/sso/{provider}/callback\n */\n async ssoCallback(provider: string, body: SsoCallbackRequest): Promise<CallbackResponse> {\n const path = `/v1/sso/${provider}/callback`;\n return this.request<CallbackResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Start SSO login flow\n * POST /v1/sso/{provider}/login\n */\n async startSSOLogin(provider: string, body: StartSSOLoginRequest): Promise<LoginResponse> {\n const path = `/v1/sso/${provider}/login`;\n return this.request<LoginResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List user roles\n * GET /v1/users/{userId}/roles\n */\n async authsomeListUserRoles(userId: string, token: string): Promise<UserRoleListResponse> {\n const path = `/v1/users/${userId}/roles`;\n return this.request<UserRoleListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Verify email\n * POST /v1/verify-email\n */\n async verifyEmail(body: VerifyEmailRequest): Promise<StatusResponse> {\n const path = \"/v1/verify-email\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List webhooks\n * GET /v1/webhooks\n */\n async listWebhooks(token: string): Promise<WebhookListResponse> {\n const path = \"/v1/webhooks\";\n return this.request<WebhookListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create webhook\n * POST /v1/webhooks\n */\n async createWebhook(body: CreateWebhookRequest, token: string): Promise<Webhook> {\n const path = \"/v1/webhooks\";\n return this.request<Webhook>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get webhook\n * GET /v1/webhooks/{webhookId}\n */\n async getWebhook(webhookId: string, token: string): Promise<Webhook> {\n const path = `/v1/webhooks/${webhookId}`;\n return this.request<Webhook>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update webhook\n * PATCH /v1/webhooks/{webhookId}\n */\n async updateWebhook(webhookId: string, body: UpdateWebhookRequest, token: string): Promise<Webhook> {\n const path = `/v1/webhooks/${webhookId}`;\n return this.request<Webhook>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete webhook\n * DELETE /v1/webhooks/{webhookId}\n */\n async deleteWebhook(webhookId: string, body: DeleteWebhookRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/webhooks/${webhookId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n // ──────────────────────────────────────────────────\n // Internal request helper\n // ──────────────────────────────────────────────────\n\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n token?: string,\n ): Promise<T> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n };\n\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const response = await this.fetchFn(`${this.baseURL}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let apiError: { error?: string; code?: number } | undefined;\n try {\n apiError = await response.json();\n } catch {\n // Response body is not JSON.\n }\n throw new AuthClientError(\n apiError?.error ?? `Request failed with status ${response.status}`,\n apiError?.code ?? response.status,\n );\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n }\n}\n\nexport class AuthClientError extends Error {\n code?: number;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'AuthClientError';\n this.code = code;\n }\n}\n\n","/**\n * AuthClient adapter — thin wrapper over the auto-generated API client.\n *\n * The generated client lives in ./generated/api-client.ts and covers all\n * core + plugin endpoints. This file extends it with a few convenience\n * overrides so that auth.ts (and downstream consumers) keep working\n * without changes.\n */\n\nimport {\n AuthClient as GeneratedClient,\n AuthClientError,\n type AuthClientConfig,\n} from \"./generated/api-client\";\nimport type { ClientConfig } from \"./types\";\n\n// ── Re-exports ───────────────────────────────────────\n\nexport { AuthClientError };\nexport type { AuthClientConfig };\n\n// Re-export generated request types used by auth.ts\nexport type { SignInRequest, SignUpRequest } from \"./generated/api-types\";\n\n// Re-export all generated API model types\nexport type {\n AuthResponse,\n Device,\n EnrollResponse,\n Invitation,\n KeyListItem,\n Member,\n Organization,\n TokenResponse,\n User,\n} from \"./generated/api-types\";\n\n// Backward-compatible type aliases for types renamed in the dynamic spec.\nexport type { KeyListItem as APIKey } from \"./generated/api-types\";\nexport type { EnrollResponse as MFAEnrollment } from \"./generated/api-types\";\n\n// Re-export all generated request types\nexport type {\n AdminBanUserRequest,\n ChangePasswordRequest,\n ForgotPasswordRequest,\n CreateAPIKeyRequest,\n SendMagicLinkRequest,\n VerifyMagicLinkRequest,\n UpdateMeRequest,\n ChallengeMFARequest,\n EnrollMFARequest,\n SendSMSCodeRequest,\n VerifySMSCodeRequest,\n VerifyMFARequest,\n CreateOrganizationRequest,\n UpdateOrganizationRequest,\n CreateInvitationRequest,\n AddMemberRequest,\n RefreshRequest,\n ResetPasswordRequest,\n SsoACSRequest,\n SsoCallbackRequest,\n VerifyEmailRequest,\n VerifyRecoveryCodeRequest,\n} from \"./generated/api-types\";\n\n// Backward-compatible request type aliases\nexport type { SendMagicLinkRequest as MagicLinkSendRequest } from \"./generated/api-types\";\nexport type { VerifyMagicLinkRequest as MagicLinkVerifyRequest } from \"./generated/api-types\";\nexport type { ChallengeMFARequest as MfaChallengeRequest } from \"./generated/api-types\";\nexport type { EnrollMFARequest as MfaEnrollRequest } from \"./generated/api-types\";\nexport type { SendSMSCodeRequest as MfaSMSSendRequest } from \"./generated/api-types\";\nexport type { VerifySMSCodeRequest as MfaSMSVerifyRequest } from \"./generated/api-types\";\nexport type { VerifyMFARequest as MfaVerifyRequest } from \"./generated/api-types\";\nexport type { CreateOrganizationRequest as CreateOrgRequest } from \"./generated/api-types\";\nexport type { UpdateOrganizationRequest as UpdateOrgRequest } from \"./generated/api-types\";\n\n// ── Manual types (not in the OpenAPI spec) ───────────\n\n/** Options for paginated list endpoints. */\nexport interface ListOptions {\n limit?: number;\n offset?: number;\n}\n\n/** Paginated list response. */\nexport interface ListResponse<T> {\n items: T[];\n total: number;\n}\n\n// ── AuthClient adapter ──────────────────────────────\n\n/**\n * AuthClient extends the auto-generated client with backward-compatible\n * convenience methods that auth.ts depends on.\n *\n * All 80+ generated endpoints are inherited as-is. Only two methods\n * are overridden to preserve the simpler call-site signatures used by\n * the auth state machine.\n */\nexport class AuthClient extends GeneratedClient {\n /**\n * Refresh session tokens.\n *\n * Accepts a raw refresh-token string (used by auth.ts) or the full\n * RefreshRequest body.\n */\n override async refresh(body: { refresh_token: string } | string): Promise<any> {\n const req = typeof body === \"string\" ? { refresh_token: body } : body;\n return super.refresh(req);\n }\n\n /**\n * Sign out.\n *\n * Accepts a raw token string (used by auth.ts) or the full\n * (body, token) pair from the generated client.\n */\n override async signOut(bodyOrToken: unknown, token?: string): Promise<any> {\n if (typeof bodyOrToken === \"string\") {\n return super.signOut({} as any, bodyOrToken);\n }\n return super.signOut(bodyOrToken as any, token!);\n }\n\n /**\n * MFA challenge — bridge for auth.ts.\n *\n * auth.ts calls `mfaChallenge({ enrollment_id, code })` and expects\n * an AuthResponse back. The generated client uses `challengeMFA`.\n */\n async mfaChallenge(body: { enrollment_id?: string; code: string }): Promise<any> {\n return super.challengeMFA(body as any);\n }\n\n /**\n * Verify an MFA recovery code.\n *\n * Accepts a raw code string (used by auth.ts) or the full request body.\n */\n override async verifyRecoveryCode(body: { code: string } | string): Promise<any> {\n const req = typeof body === \"string\" ? { code: body } : body;\n return super.verifyRecoveryCode(req);\n }\n\n /**\n * Send an SMS code for MFA — bridge for auth.ts.\n *\n * Simplifies the call-site by accepting just the session token.\n */\n async sendSMSCodeForMFA(token: string): Promise<any> {\n return super.sendSMSCode({}, token);\n }\n\n /**\n * Verify an SMS code for MFA — bridge for auth.ts.\n *\n * Simplifies the call-site by accepting code + token directly.\n */\n async verifySMSCodeForMFA(code: string, token: string): Promise<any> {\n return super.verifySMSCode({ code }, token);\n }\n\n /**\n * Fetch the client configuration from the backend.\n *\n * The config describes which auth methods are enabled so SDK\n * components can auto-configure without manual props.\n */\n async fetchClientConfig(publishableKey?: string): Promise<ClientConfig> {\n const url = new URL(\"/v1/client-config\", (this as any).config.baseURL);\n if (publishableKey) {\n url.searchParams.set(\"key\", publishableKey);\n }\n const fetchFn = (this as any).config.fetch ?? globalThis.fetch;\n const res = await fetchFn(url.toString(), {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n if (!res.ok) {\n throw new AuthClientError(\"Failed to fetch client config\", res.status);\n }\n return res.json();\n }\n}\n","/**\n * Framework-agnostic authentication state machine.\n *\n * Manages sign-in/sign-up flows, token persistence, automatic refresh,\n * and MFA challenges. Framework adapters (React, Vue, etc.) wrap this\n * class and expose reactive state.\n */\n\nimport { AuthClient, type SignInRequest, type SignUpRequest, AuthClientError } from \"./client\";\nimport type { AuthConfig, AuthState, ClientConfig, Session, TokenStorage, User } from \"./types\";\n\nconst SESSION_KEY = \"authsome:session\";\nconst CONFIG_KEY = \"authsome:client_config\";\nconst REFRESH_BEFORE_MS = 60_000; // Refresh 60 s before expiry.\nconst CONFIG_TTL_MS = 5 * 60_000; // Cache client config for 5 minutes.\n\n/** Default in-memory storage (lost on page reload). */\nconst memoryStorage: TokenStorage = (() => {\n const store = new Map<string, string>();\n return {\n getItem: (key: string) => store.get(key) ?? null,\n setItem: (key: string, value: string) => {\n store.set(key, value);\n },\n removeItem: (key: string) => {\n store.delete(key);\n },\n };\n})();\n\n/** Try to use localStorage, fall back to memory. */\nfunction defaultStorage(): TokenStorage {\n try {\n if (typeof window !== \"undefined\" && window.localStorage) {\n return window.localStorage;\n }\n } catch {\n // SSR or restricted environments.\n }\n return memoryStorage;\n}\n\n/**\n * AuthManager is the core state machine that drives authentication.\n *\n * Usage:\n * ```ts\n * const auth = new AuthManager({ baseURL: \"https://api.example.com\" });\n * auth.subscribe((state) => console.log(state));\n * await auth.initialize(); // hydrate from storage\n * await auth.signIn({ email, password });\n * ```\n */\nexport class AuthManager {\n private client: AuthClient;\n private storage: TokenStorage;\n private state: AuthState = { status: \"idle\" };\n private listeners = new Set<(state: AuthState) => void>();\n private refreshTimer: ReturnType<typeof setTimeout> | null = null;\n private onError?: (error: { error: string; code?: number }) => void;\n\n private publishableKey?: string;\n private clientConfig: ClientConfig | null = null;\n private configListeners = new Set<(config: ClientConfig | null) => void>();\n private configFetchPromise: Promise<ClientConfig> | null = null;\n\n constructor(config: AuthConfig) {\n this.client = new AuthClient(config);\n this.storage = config.storage ?? defaultStorage();\n this.onError = config.onError;\n this.publishableKey = config.publishableKey;\n\n if (config.initialClientConfig) {\n this.clientConfig = config.initialClientConfig;\n }\n\n if (config.onStateChange) {\n this.listeners.add(config.onStateChange);\n }\n }\n\n // ── Public API ────────────────────────────────────\n\n /** Current auth state (snapshot). */\n getState(): AuthState {\n return this.state;\n }\n\n /** Subscribe to state changes. Returns an unsubscribe function. */\n subscribe(listener: (state: AuthState) => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /** Access the underlying HTTP client. */\n getClient(): AuthClient {\n return this.client;\n }\n\n /**\n * Initialize by hydrating the session from storage.\n * When a publishableKey is set, also fetches client config in parallel.\n * Call this once on app start.\n */\n async initialize(): Promise<void> {\n // Kick off config fetch in parallel (non-blocking).\n if (this.publishableKey && !this.clientConfig) {\n void this.fetchClientConfig();\n }\n\n try {\n const raw = await this.storage.getItem(SESSION_KEY);\n if (!raw) {\n this.setState({ status: \"unauthenticated\" });\n return;\n }\n\n const session: Session = JSON.parse(raw);\n const expiresAt = new Date(session.expires_at).getTime();\n\n if (Date.now() >= expiresAt) {\n // Token expired — try refresh.\n await this.refreshSession(session.refresh_token);\n return;\n }\n\n // Token still valid — fetch user profile.\n this.setState({ status: \"loading\" });\n const user = await this.client.getMe(session.session_token);\n this.setState({ status: \"authenticated\", user, session });\n this.scheduleRefresh(session);\n } catch {\n // Never destroy the session on errors during initialization.\n // The server may be temporarily unreachable (404/500/network) or the\n // token might need refreshing. Only an explicit signOut() clears storage.\n // Preserve whatever session we have and schedule a refresh attempt.\n const stored = await this.storage.getItem(SESSION_KEY);\n if (stored) {\n const session: Session = JSON.parse(stored);\n this.setState({ status: \"authenticated\", user: null as unknown as User, session });\n this.scheduleRefresh(session);\n } else {\n this.setState({ status: \"unauthenticated\" });\n }\n }\n }\n\n /** Sign in with email & password. */\n async signIn(credentials: SignInRequest): Promise<void> {\n // Note: we intentionally do NOT set global state to \"loading\" here.\n // The form components manage their own isSubmitting state. Setting global\n // \"loading\" would cause parent components that conditionally render based\n // on isLoading to unmount the form, losing its local state (step, fields).\n try {\n const res = await this.client.signIn(credentials);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(), // fallback\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n throw err;\n }\n }\n\n /** Sign up with email & password. */\n async signUp(data: SignUpRequest): Promise<void> {\n // See signIn() comment — forms manage their own loading state.\n try {\n const res = await this.client.signUp(data);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n throw err;\n }\n }\n\n /** Sign out and clear the session. */\n async signOut(): Promise<void> {\n const token = this.getSessionToken();\n if (token) {\n try {\n await this.client.signOut(token);\n } catch {\n // Best-effort server sign-out.\n }\n }\n this.clearRefreshTimer();\n await this.clearSession();\n this.setState({ status: \"unauthenticated\" });\n }\n\n /** Submit an MFA challenge code. */\n async submitMFACode(enrollmentId: string, code: string): Promise<void> {\n this.setState({ status: \"loading\" });\n try {\n const res = await this.client.mfaChallenge({ enrollment_id: enrollmentId, code });\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n }\n }\n\n /** Submit an MFA recovery code. */\n async submitRecoveryCode(code: string): Promise<void> {\n this.setState({ status: \"loading\" });\n try {\n const res = await this.client.verifyRecoveryCode(code);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n }\n }\n\n /** Send an SMS code for MFA verification. Returns masked phone + expiry info. */\n async sendSMSCode(): Promise<{ sent: boolean; phone_masked: string; expires_in_seconds: number }> {\n const token = this.getSessionToken();\n if (!token) throw new Error(\"No session token available\");\n return this.client.sendSMSCodeForMFA(token);\n }\n\n /** Submit an SMS verification code during MFA challenge. */\n async submitSMSCode(code: string): Promise<void> {\n this.setState({ status: \"loading\" });\n try {\n const token = this.getSessionToken();\n if (!token) throw new Error(\"No session token available\");\n const res = await this.client.verifySMSCodeForMFA(code, token);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n }\n }\n\n /** Refresh the current session manually. */\n async refreshNow(): Promise<void> {\n const state = this.state;\n if (state.status !== \"authenticated\") return;\n await this.refreshSession(state.session.refresh_token);\n }\n\n /** Get the current session token (if authenticated). */\n getSessionToken(): string | null {\n if (this.state.status === \"authenticated\") {\n return this.state.session.session_token;\n }\n if (this.state.status === \"mfa_required\") {\n return this.state.session.session_token;\n }\n return null;\n }\n\n /** Get the current user (if authenticated). */\n getUser(): User | null {\n if (this.state.status === \"authenticated\") {\n return this.state.user;\n }\n return null;\n }\n\n // ── Client Config API ────────────────────────────\n\n /** Get the cached client config (or null if not yet fetched). */\n getClientConfig(): ClientConfig | null {\n return this.clientConfig;\n }\n\n /** Subscribe to client config changes. Returns an unsubscribe function. */\n subscribeConfig(listener: (config: ClientConfig | null) => void): () => void {\n this.configListeners.add(listener);\n return () => {\n this.configListeners.delete(listener);\n };\n }\n\n /**\n * Fetch client config from the backend.\n * Deduplicates concurrent calls and caches the result with a TTL.\n */\n async fetchClientConfig(): Promise<ClientConfig> {\n // Deduplicate concurrent fetches.\n if (this.configFetchPromise) {\n return this.configFetchPromise;\n }\n\n // Check storage cache.\n try {\n const cached = await this.storage.getItem(CONFIG_KEY);\n if (cached) {\n const { config, fetchedAt } = JSON.parse(cached) as { config: ClientConfig; fetchedAt: number };\n if (Date.now() - fetchedAt < CONFIG_TTL_MS) {\n this.setClientConfig(config);\n return config;\n }\n }\n } catch {\n // Cache miss or parse error — fetch fresh.\n }\n\n this.configFetchPromise = this.client\n .fetchClientConfig(this.publishableKey)\n .then(async (config) => {\n this.setClientConfig(config);\n // Cache with timestamp.\n try {\n await this.storage.setItem(\n CONFIG_KEY,\n JSON.stringify({ config, fetchedAt: Date.now() }),\n );\n } catch {\n // Storage write failure is non-fatal.\n }\n return config;\n })\n .finally(() => {\n this.configFetchPromise = null;\n });\n\n return this.configFetchPromise;\n }\n\n /** Tear down: clear timers and listeners. */\n destroy(): void {\n this.clearRefreshTimer();\n this.listeners.clear();\n this.configListeners.clear();\n }\n\n // ── Internals ─────────────────────────────────────\n\n private async handleAuthResponse(user: User, session: Session): Promise<void> {\n await this.persistSession(session);\n this.setState({ status: \"authenticated\", user, session });\n this.scheduleRefresh(session);\n }\n\n private async refreshSession(refreshToken: string, attempt = 0): Promise<void> {\n try {\n const newSession = await this.client.refresh(refreshToken);\n const user = await this.client.getMe(newSession.session_token);\n await this.persistSession(newSession);\n this.setState({ status: \"authenticated\", user, session: newSession });\n this.scheduleRefresh(newSession);\n } catch {\n // Never destroy the session on refresh failure. The refresh token\n // may still be valid — the server could be temporarily unreachable.\n // Schedule a retry in 30 seconds. Only explicit signOut() clears storage.\n this.clearRefreshTimer();\n this.refreshTimer = setTimeout(() => {\n void this.refreshSession(refreshToken);\n }, 30_000);\n }\n }\n\n private scheduleRefresh(session: Session): void {\n this.clearRefreshTimer();\n const expiresAt = new Date(session.expires_at).getTime();\n const delay = expiresAt - Date.now() - REFRESH_BEFORE_MS;\n\n if (delay <= 0) {\n // Already near expiry — refresh immediately.\n void this.refreshSession(session.refresh_token);\n return;\n }\n\n this.refreshTimer = setTimeout(() => {\n void this.refreshSession(session.refresh_token);\n }, delay);\n }\n\n private clearRefreshTimer(): void {\n if (this.refreshTimer !== null) {\n clearTimeout(this.refreshTimer);\n this.refreshTimer = null;\n }\n }\n\n private async persistSession(session: Session): Promise<void> {\n await this.storage.setItem(SESSION_KEY, JSON.stringify(session));\n }\n\n private async clearSession(): Promise<void> {\n await this.storage.removeItem(SESSION_KEY);\n }\n\n private setClientConfig(config: ClientConfig): void {\n this.clientConfig = config;\n for (const listener of this.configListeners) {\n try {\n listener(config);\n } catch {\n // Listener errors should not break the config flow.\n }\n }\n }\n\n private setState(newState: AuthState): void {\n this.state = newState;\n for (const listener of this.listeners) {\n try {\n listener(newState);\n } catch {\n // Listener errors should not break the state machine.\n }\n }\n }\n\n private handleError(err: unknown): void {\n const message = err instanceof AuthClientError ? err.message : \"An unexpected error occurred\";\n const code = err instanceof AuthClientError ? err.code : undefined;\n\n // MFA required is returned as a specific error code.\n if (code === 403 && message.toLowerCase().includes(\"mfa\")) {\n const token = this.getSessionToken();\n if (token) {\n this.setState({\n status: \"mfa_required\",\n session: {\n session_token: token,\n refresh_token: \"\",\n expires_at: new Date(Date.now() + 300_000).toISOString(),\n },\n });\n return;\n }\n }\n\n this.setState({ status: \"error\", error: message });\n this.onError?.({ error: message, code });\n }\n}\n","/**\n * WebAuthn encoding helpers.\n *\n * The go-webauthn backend serialises binary fields (challenge, user.id,\n * credential IDs, …) as **base64url strings** in JSON. The browser\n * WebAuthn API requires those same fields as ArrayBuffer / Uint8Array.\n *\n * These helpers bridge the gap in both directions:\n * begin response → browser API (base64url string → ArrayBuffer)\n * browser API → finish POST (ArrayBuffer → base64url string)\n */\n\n// ── low-level codecs ──────────────────────────────────────────────\n\n/** Decode a base64url-encoded string into a Uint8Array. */\nexport function base64urlToBuffer(base64url: string): Uint8Array {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64 + \"=\".repeat((4 - (base64.length % 4)) % 4);\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\n/** Encode an ArrayBuffer (or Uint8Array) to a base64url string (no padding). */\nexport function bufferToBase64url(\n buffer: ArrayBuffer | Uint8Array,\n): string {\n const bytes =\n buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\n let binary = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\n// ── begin → browser helpers ────────────────────────────────────────\n\n/**\n * Prepare the options object returned by `/passkeys/register/begin`\n * for `navigator.credentials.create({ publicKey })`.\n *\n * Converts base64url strings → Uint8Array for:\n * challenge, user.id, excludeCredentials[].id\n */\nexport function prepareCreationOptions(\n options: Record<string, unknown>,\n): PublicKeyCredentialCreationOptions {\n const publicKey = (options.publicKey ?? options) as Record<string, unknown>;\n\n const out: Record<string, unknown> = { ...publicKey };\n\n // challenge\n if (typeof out.challenge === \"string\") {\n out.challenge = base64urlToBuffer(out.challenge);\n }\n\n // user.id\n if (out.user && typeof out.user === \"object\") {\n const user = { ...(out.user as Record<string, unknown>) };\n if (typeof user.id === \"string\") {\n user.id = base64urlToBuffer(user.id);\n }\n out.user = user;\n }\n\n // excludeCredentials[].id\n if (Array.isArray(out.excludeCredentials)) {\n out.excludeCredentials = (\n out.excludeCredentials as Record<string, unknown>[]\n ).map((c) => {\n if (typeof c.id === \"string\") {\n return { ...c, id: base64urlToBuffer(c.id) };\n }\n return c;\n });\n }\n\n return out as unknown as PublicKeyCredentialCreationOptions;\n}\n\n/**\n * Prepare the options object returned by `/passkeys/login/begin`\n * for `navigator.credentials.get({ publicKey })`.\n *\n * Converts base64url strings → Uint8Array for:\n * challenge, allowCredentials[].id\n */\nexport function prepareRequestOptions(\n options: Record<string, unknown>,\n): PublicKeyCredentialRequestOptions {\n const publicKey = (options.publicKey ?? options) as Record<string, unknown>;\n\n const out: Record<string, unknown> = { ...publicKey };\n\n // challenge\n if (typeof out.challenge === \"string\") {\n out.challenge = base64urlToBuffer(out.challenge);\n }\n\n // allowCredentials[].id\n if (Array.isArray(out.allowCredentials)) {\n out.allowCredentials = (\n out.allowCredentials as Record<string, unknown>[]\n ).map((c) => {\n if (typeof c.id === \"string\") {\n return { ...c, id: base64urlToBuffer(c.id) };\n }\n return c;\n });\n }\n\n return out as unknown as PublicKeyCredentialRequestOptions;\n}\n\n// ── browser → finish helpers ───────────────────────────────────────\n\n/**\n * Serialize a PublicKeyCredential returned by navigator.credentials\n * into a plain object suitable for POSTing to the `/finish` endpoint.\n *\n * Converts ArrayBuffer fields → base64url strings so they survive\n * JSON.stringify and match what go-webauthn expects.\n */\nexport function serializeCredential(\n credential: Credential,\n): Record<string, unknown> {\n const cred = credential as PublicKeyCredential;\n const response = cred.response;\n\n const result: Record<string, unknown> = {\n id: cred.id,\n rawId: bufferToBase64url(cred.rawId),\n type: cred.type,\n response: {} as Record<string, unknown>,\n };\n\n const serializedResponse: Record<string, unknown> = {\n clientDataJSON: bufferToBase64url(response.clientDataJSON),\n };\n\n // Attestation response (register finish)\n if (\"attestationObject\" in response) {\n const attestation = response as AuthenticatorAttestationResponse;\n serializedResponse.attestationObject = bufferToBase64url(\n attestation.attestationObject,\n );\n }\n\n // Assertion response (login finish)\n if (\"authenticatorData\" in response) {\n const assertion = response as AuthenticatorAssertionResponse;\n serializedResponse.authenticatorData = bufferToBase64url(\n assertion.authenticatorData,\n );\n serializedResponse.signature = bufferToBase64url(assertion.signature);\n if (assertion.userHandle) {\n serializedResponse.userHandle = bufferToBase64url(assertion.userHandle);\n }\n }\n\n result.response = serializedResponse;\n\n // Include authenticatorAttachment if present\n if (cred.authenticatorAttachment) {\n result.authenticatorAttachment = cred.authenticatorAttachment;\n }\n\n return result;\n}\n"],"mappings":"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","names":["AuthClient","AuthClient"]}
1
+ {"version":3,"sources":["../src/generated/api-client.ts","../src/client.ts","../src/auth.ts","../src/webauthn.ts"],"sourcesContent":["// Code generated by authsome sdkgen. DO NOT EDIT.\n\nimport type {\n ACSRequest,\n AdminAppResponse,\n AdminCatalogProvider,\n AdminCatalogResponse,\n AdminCreateConnectionResponse,\n AdminDeleteAppRequest,\n AdminDeleteConnectionResponse,\n AdminDeleteProviderResponse,\n AdminDeleteServiceAccountRequest,\n AdminDeleteUserRequest,\n AdminGetServiceAccountRequest,\n AdminGetUserRequest,\n AdminImpersonateRequest,\n AdminListConnectionsResponse,\n AdminListOrgsRequest,\n AdminListProvidersResponse,\n AdminListServiceAccountsRequest,\n AdminListUsersRequest,\n AdminPlatformOwnerResponse,\n AdminProvider,\n AdminProviderResponse,\n AdminRevokePlatformOwnerRequest,\n AdminServiceAccountAPIKeyResponse,\n AdminServiceAccountListResponse,\n AdminServiceAccountResponse,\n AdminStatsRequest,\n AdminStatsResponse,\n AdminStopImpersonationRequest,\n AdminUnbanUserRequest,\n AdminUserListResponse,\n AuthMethod,\n AuthResponse,\n AuthorizeRequest,\n BulkError,\n BulkImportResult,\n BulkRevokeSessionsRequest,\n BulkRevokeSessionsResponse,\n CallbackRequest,\n CallbackResponse,\n CancelSubscriptionRequest,\n ChallengeRequest,\n ChallengeResponse,\n ChangePlanRequest,\n CheckEntitlementRequest,\n CheckSlugRequest,\n ClientConfigBranding,\n ClientConfigCaptcha,\n ClientConfigEmailVerification,\n ClientConfigFieldValidation,\n ClientConfigMFA,\n ClientConfigResponse,\n ClientConfigSSO,\n ClientConfigSSOConnection,\n ClientConfigSelectOption,\n ClientConfigSignupField,\n ClientConfigSocial,\n ClientConfigSocialProvider,\n ClientConfigToggle,\n CloneEnvironmentResponse,\n Config,\n Connection,\n Consent,\n CouponResponse,\n CreateClientResponse,\n CreateCouponRequest,\n CreateKeyRequest,\n CreateKeyResponse,\n CreatePlanRequest,\n CreateSubscriptionRequest,\n CredentialInfo,\n Definition,\n DefinitionGroup,\n DeleteAccountRequest,\n DeleteAppClientConfigRequest,\n DeleteAppSessionConfigRequest,\n DeleteClientRequest,\n DeleteCouponRequest,\n DeleteDeviceRequest,\n DeleteOrgRequest,\n DeleteRequest,\n DeleteResponse,\n DeleteSettingRequest,\n DeleteTeamRequest,\n DeleteWebhookRequest,\n Device,\n DeviceAuthRequest,\n DeviceAuthResponse,\n DeviceCompleteRequest,\n DeviceCompleteResponse,\n DeviceListResponse,\n DisableRequest,\n DisableResponse,\n DiscoveryRequest,\n DiscoveryResponse,\n Email,\n EnrollRequest,\n EnrollResponse,\n EntitlementResponse,\n Environment,\n EnvironmentListResponse,\n EnvironmentSettingsResponse,\n ExportDataRequest,\n FeatureInput,\n ForgotPasswordResponse,\n GetActiveSubRequest,\n GetAppClientConfigRequest,\n GetAppSessionConfigRequest,\n GetClientConfigRequest,\n GetDeviceRequest,\n GetInvoiceRequest,\n GetMeRequest,\n GetOrgRequest,\n GetPlanRequest,\n GetTeamRequest,\n GetWebhookRequest,\n GroupRef,\n GroupResource,\n HealthResponse,\n IntrospectResponse,\n IntrospectUser,\n Invitation,\n InvitationListResponse,\n InvoiceResponse,\n KeyListItem,\n ListAuthMethodsRequest,\n ListAuthMethodsResponse,\n ListClientsRequest,\n ListClientsResponse,\n ListConsentsRequest,\n ListCouponsRequest,\n ListCouponsResponse,\n ListDefinitionsResponse,\n ListDevicesRequest,\n ListEnvironmentsRequest,\n ListInvitationsRequest,\n ListInvoicesRequest,\n ListInvoicesResponse,\n ListKeysRequest,\n ListKeysResponse,\n ListMembersRequest,\n ListNamespaceDefinitionsRequest,\n ListOrgsRequest,\n ListPlansRequest,\n ListPlansResponse,\n ListRequest,\n ListResponse,\n ListRolesRequest,\n ListSessionsRequest,\n ListSettingsDefinitionsRequest,\n ListSubscriptionsRequest,\n ListSubscriptionsResponse,\n ListTeamsRequest,\n ListWebhooksRequest,\n LoginBeginRequest,\n LoginBeginResponse,\n LoginFinishRequest,\n LoginFinishResponse,\n LoginRequest,\n LoginResponse,\n MarkInvoicePaidRequest,\n Member,\n MemberListResponse,\n MemberRef,\n Meta,\n Name,\n OAuth2Client,\n Object,\n ObjectFieldDef,\n OrgListResponse,\n Organization,\n Permission,\n PermissionListResponse,\n PlanIDRequest,\n PlanResponse,\n RecoveryRegenerateRequest,\n RecoveryRegenerateResponse,\n RecoveryVerifyRequest,\n RecoveryVerifyResponse,\n RegisterBeginRequest,\n RegisterBeginResponse,\n RegisterFinishRequest,\n RegisterFinishResponse,\n RemoveMemberRequest,\n ResolveSettingRequest,\n ResolveSettingsRequest,\n ResolvedSetting,\n ResolvedSettingResponse,\n ResolvedSettingsResponse,\n Response,\n RevokeKeyRequest,\n RevokeRequest,\n RevokeSessionRequest,\n Role,\n RoleListResponse,\n SMSSendRequest,\n SMSSendResponse,\n SMSVerifyRequest,\n SMSVerifyResponse,\n ScopeValue,\n SelectOption,\n SendRequest,\n SendResponse,\n SessionListResponse,\n SettingValueResponse,\n Settings,\n SignOutRequest,\n SlugAvailableResponse,\n StartRequest,\n StartResponse,\n StatusResponse,\n SubIDRequest,\n SwitchOrgResponse,\n Team,\n TeamListResponse,\n TokenRequest,\n TokenResponse,\n TrustDeviceRequest,\n UIMetadata,\n UnenforceSettingRequest,\n UnlinkAuthMethodRequest,\n UnlinkAuthMethodResponse,\n UsageItemResponse,\n UsageSummaryRequest,\n UsageSummaryResponse,\n User,\n UserInfo,\n UserInfoRequest,\n UserResource,\n UserRoleListResponse,\n Validation,\n VerifyMFARequest,\n VerifyMFAResponse,\n VerifyRequest,\n VerifyResponse,\n VisibilityCondition,\n VoidInvoiceRequest,\n Webhook,\n WebhookListResponse,\n scimGroupPathParam,\n scimUserPathParam,\n ScimCreateGroupRequest,\n ScimReplaceGroupRequest,\n ScimPatchGroupRequest,\n ScimDeleteGroupRequest,\n ScimCreateUserRequest,\n ScimReplaceUserRequest,\n ScimPatchUserRequest,\n ScimDeleteUserRequest,\n AdminCreateAppRequest,\n SetAppClientConfigRequest,\n SetAppSessionConfigRequest,\n AdminBulkRevokeSessionsRequest,\n AdminBulkImportUsersRequest,\n CreateOAuth2ClientRequest,\n DeleteOAuth2ClientRequest,\n AdminGrantPlatformOwnerRequest,\n AdminCreateServiceAccountRequest,\n AdminCreateServiceAccountAPIKeyRequest,\n EnforceSettingRequest,\n SetSettingRequest,\n SocialAdminUpsertProviderRequest,\n SsoAdminCreateConnectionRequest,\n SsoAdminUpdateConnectionRequest,\n AdminCreateUserRequest,\n AdminUpdateUserRequest,\n AdminBanUserRequest,\n CreateBillingPlanRequest,\n ActivateBillingPlanRequest,\n ArchiveBillingPlanRequest,\n ChangeSubscriptionPlanRequest,\n PauseSubscriptionRequest,\n ResumeSubscriptionRequest,\n ChangePasswordRequest,\n GrantConsentRequest,\n RevokeConsentRequest,\n CreateEnvironmentRequest,\n UpdateEnvironmentRequest,\n CloneEnvironmentRequest,\n UpdateEnvironmentSettingsRequest,\n ForgotPasswordRequest,\n IntrospectTokenRequest,\n CreateAPIKeyRequest,\n RevokeAPIKeyRequest,\n SendMagicLinkRequest,\n VerifyMagicLinkRequest,\n UpdateMeRequest,\n DeleteMeRequest,\n SwitchOrgRequest,\n ChallengeMFARequest,\n EnrollMFARequest,\n DisableMFARequest,\n RegenerateMFARecoveryCodesRequest,\n VerifyRecoveryCodeRequest,\n SendSMSCodeRequest,\n VerifySMSCodeRequest,\n Oauth2DeviceAuthorizeRequest,\n Oauth2DeviceCompleteRequest,\n Oauth2RevokeRequest,\n Oauth2TokenRequest,\n CreateOrganizationRequest,\n AcceptInvitationRequest,\n DeclineInvitationRequest,\n UpdateOrganizationRequest,\n DeleteOrganizationRequest,\n CreateInvitationRequest,\n AddMemberRequest,\n UpdateMemberRequest,\n CreateTeamRequest,\n UpdateTeamRequest,\n PasskeyLoginBeginRequest,\n PasskeyLoginFinishRequest,\n PasskeyRegisterBeginRequest,\n PasskeyRegisterFinishRequest,\n DeletePasskeyRequest,\n PhoneAuthStartRequest,\n PhoneAuthVerifyRequest,\n RefreshRequest,\n ResetPasswordRequest,\n AuthsomeCreateRoleRequest,\n AuthsomeUpdateRoleRequest,\n AuthsomeAssignRoleRequest,\n AuthsomeAddPermissionRequest,\n AuthsomeUnassignRoleRequest,\n SignInRequest,\n SignUpRequest,\n StartOAuthRequest,\n SsoACSRequest,\n SsoCallbackRequest,\n StartSSOLoginRequest,\n VerifyEmailRequest,\n ResendEmailVerificationRequest,\n CreateWebhookRequest,\n UpdateWebhookRequest,\n} from './api-types';\n\nexport interface AuthClientConfig {\n /** Base URL of the AuthSome API (e.g., \"https://api.example.com\") */\n baseURL: string;\n /**\n * Publishable key (`pk_live_*` / `pk_test_*` / `pk_stg_*`) sent on every\n * request as the X-Publishable-Key header. The server resolves this to\n * the owning App on the public-auth path (signup, signin, forgot-\n * password, resend-verification), so frontends never need to know — or\n * send — the App's UUID. Without it, those endpoints reject with 400\n * \"app context required\".\n */\n publishableKey?: string;\n /** Optional custom fetch implementation */\n fetch?: typeof globalThis.fetch;\n}\n\nexport class AuthClient {\n private baseURL: string;\n private publishableKey: string | undefined;\n private fetchFn: typeof globalThis.fetch;\n\n constructor(config: AuthClientConfig | Pick<{ baseURL: string; publishableKey?: string; fetch?: typeof globalThis.fetch }, 'baseURL' | 'publishableKey' | 'fetch'>) {\n this.baseURL = config.baseURL.replace(/\\/+$/, '');\n this.publishableKey = (config as { publishableKey?: string }).publishableKey;\n this.fetchFn = config.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n /** Set the publishable key sent on every request as X-Publishable-Key. */\n setPublishableKey(key: string | undefined): void {\n this.publishableKey = key;\n }\n\n /** Get the current publishable key. */\n getPublishableKey(): string | undefined {\n return this.publishableKey;\n }\n\n // ──────────────────────────────────────────────────\n // Generated methods\n // ──────────────────────────────────────────────────\n\n /**\n * Get AuthSome manifest\n * GET /.well-known/authsome/manifest\n */\n async getManifest(): Promise<Record<string, unknown>> {\n const path = \"/.well-known/authsome/manifest\";\n return this.request<Record<string, unknown>>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Get OpenAPI specification\n * GET /.well-known/authsome/openapi\n */\n async getOpenAPI(): Promise<Record<string, unknown>> {\n const path = \"/.well-known/authsome/openapi\";\n return this.request<Record<string, unknown>>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * OpenID Connect Discovery\n * GET /.well-known/openid-configuration\n */\n async oidcDiscovery(token: string): Promise<DiscoveryResponse> {\n const path = \"/.well-known/openid-configuration\";\n return this.request<DiscoveryResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List SCIM Groups\n * GET /scim/v2/Groups\n */\n async scimListGroups(token: string): Promise<ListResponse> {\n const path = \"/scim/v2/Groups\";\n return this.request<ListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create SCIM Group\n * POST /scim/v2/Groups\n */\n async scimCreateGroup(body: ScimCreateGroupRequest, token: string): Promise<GroupResource> {\n const path = \"/scim/v2/Groups\";\n return this.request<GroupResource>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get SCIM Group\n * GET /scim/v2/Groups/{groupId}\n */\n async scimGetGroup(groupId: string, token: string): Promise<GroupResource> {\n const path = `/scim/v2/Groups/${groupId}`;\n return this.request<GroupResource>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Replace SCIM Group\n * PUT /scim/v2/Groups/{groupId}\n */\n async scimReplaceGroup(groupId: string, body: ScimReplaceGroupRequest, token: string): Promise<GroupResource> {\n const path = `/scim/v2/Groups/${groupId}`;\n return this.request<GroupResource>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Patch SCIM Group\n * PATCH /scim/v2/Groups/{groupId}\n */\n async scimPatchGroup(groupId: string, body: ScimPatchGroupRequest, token: string): Promise<GroupResource> {\n const path = `/scim/v2/Groups/${groupId}`;\n return this.request<GroupResource>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete SCIM Group\n * DELETE /scim/v2/Groups/{groupId}\n */\n async scimDeleteGroup(groupId: string, body: ScimDeleteGroupRequest, token: string): Promise<Object> {\n const path = `/scim/v2/Groups/${groupId}`;\n return this.request<Object>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * SCIM Resource Types\n * GET /scim/v2/ResourceTypes\n */\n async scimResourceTypes(token: string): Promise<Object> {\n const path = \"/scim/v2/ResourceTypes\";\n return this.request<Object>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * SCIM Schemas\n * GET /scim/v2/Schemas\n */\n async scimSchemas(token: string): Promise<Object> {\n const path = \"/scim/v2/Schemas\";\n return this.request<Object>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * SCIM Service Provider Configuration\n * GET /scim/v2/ServiceProviderConfig\n */\n async scimServiceProviderConfig(token: string): Promise<Object> {\n const path = \"/scim/v2/ServiceProviderConfig\";\n return this.request<Object>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List SCIM Users\n * GET /scim/v2/Users\n */\n async scimListUsers(token: string): Promise<ListResponse> {\n const path = \"/scim/v2/Users\";\n return this.request<ListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create SCIM User\n * POST /scim/v2/Users\n */\n async scimCreateUser(body: ScimCreateUserRequest, token: string): Promise<UserResource> {\n const path = \"/scim/v2/Users\";\n return this.request<UserResource>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get SCIM User\n * GET /scim/v2/Users/{userId}\n */\n async scimGetUser(userId: string, token: string): Promise<UserResource> {\n const path = `/scim/v2/Users/${userId}`;\n return this.request<UserResource>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Replace SCIM User\n * PUT /scim/v2/Users/{userId}\n */\n async scimReplaceUser(userId: string, body: ScimReplaceUserRequest, token: string): Promise<UserResource> {\n const path = `/scim/v2/Users/${userId}`;\n return this.request<UserResource>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Patch SCIM User\n * PATCH /scim/v2/Users/{userId}\n */\n async scimPatchUser(userId: string, body: ScimPatchUserRequest, token: string): Promise<UserResource> {\n const path = `/scim/v2/Users/${userId}`;\n return this.request<UserResource>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete SCIM User\n * DELETE /scim/v2/Users/{userId}\n */\n async scimDeleteUser(userId: string, body: ScimDeleteUserRequest, token: string): Promise<Object> {\n const path = `/scim/v2/Users/${userId}`;\n return this.request<Object>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Create application (admin)\n * POST /v1/admin/apps\n */\n async adminCreateApp(body: AdminCreateAppRequest, token: string): Promise<AdminAppResponse> {\n const path = \"/v1/admin/apps\";\n return this.request<AdminAppResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete application (admin)\n * DELETE /v1/admin/apps/{appId}\n */\n async adminDeleteApp(appId: string, body: AdminDeleteAppRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/apps/${appId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get per-app client config overrides\n * GET /v1/admin/apps/{appId}/client-config\n */\n async getAppClientConfig(appId: string, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/client-config`;\n return this.request<Config>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Set per-app client config overrides\n * PUT /v1/admin/apps/{appId}/client-config\n */\n async setAppClientConfig(appId: string, body: SetAppClientConfigRequest, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/client-config`;\n return this.request<Config>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete per-app client config overrides\n * DELETE /v1/admin/apps/{appId}/client-config\n */\n async deleteAppClientConfig(appId: string, body: DeleteAppClientConfigRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/apps/${appId}/client-config`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get per-app session config\n * GET /v1/admin/apps/{appId}/session-config\n */\n async getAppSessionConfig(appId: string, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/session-config`;\n return this.request<Config>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Set per-app session config\n * PUT /v1/admin/apps/{appId}/session-config\n */\n async setAppSessionConfig(appId: string, body: SetAppSessionConfigRequest, token: string): Promise<Config> {\n const path = `/v1/admin/apps/${appId}/session-config`;\n return this.request<Config>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete per-app session config\n * DELETE /v1/admin/apps/{appId}/session-config\n */\n async deleteAppSessionConfig(appId: string, body: DeleteAppSessionConfigRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/apps/${appId}/session-config`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Bulk revoke sessions (admin)\n * DELETE /v1/admin/bulk/sessions\n */\n async adminBulkRevokeSessions(body: AdminBulkRevokeSessionsRequest, token: string): Promise<BulkRevokeSessionsResponse> {\n const path = \"/v1/admin/bulk/sessions\";\n return this.request<BulkRevokeSessionsResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Bulk import users (admin)\n * POST /v1/admin/bulk/users/import\n */\n async adminBulkImportUsers(body: AdminBulkImportUsersRequest, token: string): Promise<BulkImportResult> {\n const path = \"/v1/admin/bulk/users/import\";\n return this.request<BulkImportResult>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Stop impersonation (admin)\n * POST /v1/admin/impersonate/stop\n */\n async adminStopImpersonation(body: AdminStopImpersonationRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/admin/impersonate/stop\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Impersonate user (admin)\n * POST /v1/admin/impersonate/{userId}\n */\n async adminImpersonate(userId: string, body: AdminImpersonateRequest, token: string): Promise<AuthResponse> {\n const path = `/v1/admin/impersonate/${userId}`;\n return this.request<AuthResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List OAuth2 clients\n * GET /v1/admin/oauth/clients\n */\n async listOAuth2Clients(token: string): Promise<ListClientsResponse> {\n const path = \"/v1/admin/oauth/clients\";\n return this.request<ListClientsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create OAuth2 client\n * POST /v1/admin/oauth/clients\n */\n async createOAuth2Client(body: CreateOAuth2ClientRequest, token: string): Promise<CreateClientResponse> {\n const path = \"/v1/admin/oauth/clients\";\n return this.request<CreateClientResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete OAuth2 client\n * DELETE /v1/admin/oauth/clients/{clientId}\n */\n async deleteOAuth2Client(clientId: string, body: DeleteOAuth2ClientRequest, token: string): Promise<void> {\n const path = `/v1/admin/oauth/clients/${clientId}`;\n return this.request<void>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List organizations (admin)\n * GET /v1/admin/orgs\n */\n async adminListOrgs(): Promise<OrgListResponse> {\n const path = \"/v1/admin/orgs\";\n return this.request<OrgListResponse>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Grant platform-owner role (admin)\n * POST /v1/admin/platform/owners\n */\n async adminGrantPlatformOwner(body: AdminGrantPlatformOwnerRequest, token: string): Promise<AdminPlatformOwnerResponse> {\n const path = \"/v1/admin/platform/owners\";\n return this.request<AdminPlatformOwnerResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Revoke platform-owner role (admin)\n * DELETE /v1/admin/platform/owners/{userID}\n */\n async adminRevokePlatformOwner(userID: string, body: AdminRevokePlatformOwnerRequest, token: string): Promise<AdminPlatformOwnerResponse> {\n const path = `/v1/admin/platform/owners/${userID}`;\n return this.request<AdminPlatformOwnerResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List service accounts (admin)\n * GET /v1/admin/service-accounts\n */\n async adminListServiceAccounts(token: string): Promise<AdminServiceAccountListResponse> {\n const path = \"/v1/admin/service-accounts\";\n return this.request<AdminServiceAccountListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create service account (admin)\n * POST /v1/admin/service-accounts\n */\n async adminCreateServiceAccount(body: AdminCreateServiceAccountRequest, token: string): Promise<AdminServiceAccountResponse> {\n const path = \"/v1/admin/service-accounts\";\n return this.request<AdminServiceAccountResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get service account (admin)\n * GET /v1/admin/service-accounts/{serviceAccountId}\n */\n async adminGetServiceAccount(serviceAccountId: string, token: string): Promise<AdminServiceAccountResponse> {\n const path = `/v1/admin/service-accounts/${serviceAccountId}`;\n return this.request<AdminServiceAccountResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Delete service account (admin)\n * DELETE /v1/admin/service-accounts/{serviceAccountId}\n */\n async adminDeleteServiceAccount(serviceAccountId: string, body: AdminDeleteServiceAccountRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/service-accounts/${serviceAccountId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Create service account API key (admin)\n * POST /v1/admin/service-accounts/{serviceAccountId}/api-keys\n */\n async adminCreateServiceAccountAPIKey(serviceAccountId: string, body: AdminCreateServiceAccountAPIKeyRequest, token: string): Promise<AdminServiceAccountAPIKeyResponse> {\n const path = `/v1/admin/service-accounts/${serviceAccountId}/api-keys`;\n return this.request<AdminServiceAccountAPIKeyResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List all setting definitions\n * GET /v1/admin/settings/definitions\n */\n async listSettingsDefinitions(token: string): Promise<ListDefinitionsResponse> {\n const path = \"/v1/admin/settings/definitions\";\n return this.request<ListDefinitionsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List definitions for a namespace\n * GET /v1/admin/settings/definitions/{namespace}\n */\n async listNamespaceSettingsDefinitions(namespace: string, token: string): Promise<ListDefinitionsResponse> {\n const path = `/v1/admin/settings/definitions/${namespace}`;\n return this.request<ListDefinitionsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Enforce a setting value at a scope\n * PUT /v1/admin/settings/enforce/{key}\n */\n async enforceSetting(key: string, body: EnforceSettingRequest, token: string): Promise<SettingValueResponse> {\n const path = `/v1/admin/settings/enforce/${key}`;\n return this.request<SettingValueResponse>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Remove enforcement from a setting\n * DELETE /v1/admin/settings/enforce/{key}\n */\n async unenforceSetting(key: string, body: UnenforceSettingRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/settings/enforce/${key}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Resolve all settings at a scope\n * GET /v1/admin/settings/resolve\n */\n async resolveSettings(token: string): Promise<ResolvedSettingsResponse> {\n const path = \"/v1/admin/settings/resolve\";\n return this.request<ResolvedSettingsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Resolve one setting with cascade details\n * GET /v1/admin/settings/resolve/{key}\n */\n async resolveSetting(key: string, token: string): Promise<ResolvedSettingResponse> {\n const path = `/v1/admin/settings/resolve/${key}`;\n return this.request<ResolvedSettingResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Set a setting value at a scope\n * PUT /v1/admin/settings/values/{key}\n */\n async setSetting(key: string, body: SetSettingRequest, token: string): Promise<SettingValueResponse> {\n const path = `/v1/admin/settings/values/${key}`;\n return this.request<SettingValueResponse>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete a setting override at a scope\n * DELETE /v1/admin/settings/values/{key}\n */\n async deleteSetting(key: string, body: DeleteSettingRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/settings/values/${key}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List social providers (admin)\n * GET /v1/admin/social/providers\n */\n async socialAdminListProviders(app_id: string, token: string): Promise<AdminListProvidersResponse> {\n const params = new URLSearchParams();\n if (app_id !== undefined) params.set('app_id', String(app_id));\n const qs = params.toString();\n const path = \"/v1/admin/social/providers\" + (qs ? `?${qs}` : '');\n return this.request<AdminListProvidersResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List supported social providers\n * GET /v1/admin/social/providers/catalog\n */\n async socialAdminCatalog(token: string): Promise<AdminCatalogResponse> {\n const path = \"/v1/admin/social/providers/catalog\";\n return this.request<AdminCatalogResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Configure a social provider (admin)\n * PUT /v1/admin/social/providers/{provider}\n */\n async socialAdminUpsertProvider(provider: string, body: SocialAdminUpsertProviderRequest, app_id: string, token: string): Promise<AdminProviderResponse> {\n const params = new URLSearchParams();\n if (app_id !== undefined) params.set('app_id', String(app_id));\n const qs = params.toString();\n const path = `/v1/admin/social/providers/${provider}` + (qs ? `?${qs}` : '');\n return this.request<AdminProviderResponse>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete a social provider (admin)\n * DELETE /v1/admin/social/providers/{provider}\n */\n async socialAdminDeleteProvider(provider: string, app_id: string, token: string): Promise<AdminDeleteProviderResponse> {\n const params = new URLSearchParams();\n if (app_id !== undefined) params.set('app_id', String(app_id));\n const qs = params.toString();\n const path = `/v1/admin/social/providers/${provider}` + (qs ? `?${qs}` : '');\n return this.request<AdminDeleteProviderResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List SSO connections for an app (admin)\n * GET /v1/admin/sso/connections\n */\n async ssoAdminListConnections(app_id: string, token: string): Promise<AdminListConnectionsResponse> {\n const params = new URLSearchParams();\n if (app_id !== undefined) params.set('app_id', String(app_id));\n const qs = params.toString();\n const path = \"/v1/admin/sso/connections\" + (qs ? `?${qs}` : '');\n return this.request<AdminListConnectionsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create SSO connection (admin)\n * POST /v1/admin/sso/connections\n */\n async ssoAdminCreateConnection(body: SsoAdminCreateConnectionRequest, token: string): Promise<AdminCreateConnectionResponse> {\n const path = \"/v1/admin/sso/connections\";\n return this.request<AdminCreateConnectionResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get SSO connection (admin)\n * GET /v1/admin/sso/connections/{connectionId}\n */\n async ssoAdminGetConnection(connectionId: string, token: string): Promise<Connection> {\n const path = `/v1/admin/sso/connections/${connectionId}`;\n return this.request<Connection>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update SSO connection (admin)\n * PUT /v1/admin/sso/connections/{connectionId}\n */\n async ssoAdminUpdateConnection(connectionId: string, body: SsoAdminUpdateConnectionRequest, token: string): Promise<Connection> {\n const path = `/v1/admin/sso/connections/${connectionId}`;\n return this.request<Connection>(\n 'PUT',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete SSO connection (admin)\n * DELETE /v1/admin/sso/connections/{connectionId}\n */\n async ssoAdminDeleteConnection(connectionId: string, token: string): Promise<AdminDeleteConnectionResponse> {\n const path = `/v1/admin/sso/connections/${connectionId}`;\n return this.request<AdminDeleteConnectionResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get stats (admin)\n * GET /v1/admin/stats\n */\n async adminGetStats(token: string): Promise<AdminStatsResponse> {\n const path = \"/v1/admin/stats\";\n return this.request<AdminStatsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List users (admin)\n * GET /v1/admin/users\n */\n async adminListUsers(token: string): Promise<AdminUserListResponse> {\n const path = \"/v1/admin/users\";\n return this.request<AdminUserListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create user (admin)\n * POST /v1/admin/users/create\n */\n async adminCreateUser(body: AdminCreateUserRequest, token: string): Promise<User> {\n const path = \"/v1/admin/users/create\";\n return this.request<User>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get user (admin)\n * GET /v1/admin/users/{userId}\n */\n async adminGetUser(userId: string, token: string): Promise<User> {\n const path = `/v1/admin/users/${userId}`;\n return this.request<User>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update user (admin)\n * PATCH /v1/admin/users/{userId}\n */\n async adminUpdateUser(userId: string, body: AdminUpdateUserRequest, token: string): Promise<User> {\n const path = `/v1/admin/users/${userId}`;\n return this.request<User>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete user (admin)\n * DELETE /v1/admin/users/{userId}\n */\n async adminDeleteUser(userId: string, body: AdminDeleteUserRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/users/${userId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Ban user (admin)\n * POST /v1/admin/users/{userId}/ban\n */\n async adminBanUser(userId: string, body: AdminBanUserRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/users/${userId}/ban`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Unban user (admin)\n * POST /v1/admin/users/{userId}/unban\n */\n async adminUnbanUser(userId: string, body: AdminUnbanUserRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/admin/users/${userId}/unban`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List coupons\n * GET /v1/billing/coupons\n */\n async listCoupons(token: string): Promise<ListCouponsResponse> {\n const path = \"/v1/billing/coupons\";\n return this.request<ListCouponsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create coupon\n * POST /v1/billing/coupons\n */\n async createCoupon(body: CreateCouponRequest, token: string): Promise<CouponResponse> {\n const path = \"/v1/billing/coupons\";\n return this.request<CouponResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete coupon\n * DELETE /v1/billing/coupons/{couponId}\n */\n async deleteCoupon(couponId: string, body: DeleteCouponRequest, token: string): Promise<void> {\n const path = `/v1/billing/coupons/${couponId}`;\n return this.request<void>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Check feature entitlement\n * GET /v1/billing/entitlements/{featureKey}\n */\n async checkEntitlement(featureKey: string, token: string): Promise<EntitlementResponse> {\n const path = `/v1/billing/entitlements/${featureKey}`;\n return this.request<EntitlementResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List invoices\n * GET /v1/billing/invoices\n */\n async listInvoices(token: string): Promise<ListInvoicesResponse> {\n const path = \"/v1/billing/invoices\";\n return this.request<ListInvoicesResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get invoice\n * GET /v1/billing/invoices/{invoiceId}\n */\n async getInvoice(invoiceId: string, token: string): Promise<InvoiceResponse> {\n const path = `/v1/billing/invoices/${invoiceId}`;\n return this.request<InvoiceResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Mark invoice as paid\n * POST /v1/billing/invoices/{invoiceId}/pay\n */\n async markInvoicePaid(invoiceId: string, body: MarkInvoicePaidRequest, token: string): Promise<void> {\n const path = `/v1/billing/invoices/${invoiceId}/pay`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Void an invoice\n * POST /v1/billing/invoices/{invoiceId}/void\n */\n async voidInvoice(invoiceId: string, body: VoidInvoiceRequest, token: string): Promise<void> {\n const path = `/v1/billing/invoices/${invoiceId}/void`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List billing plans\n * GET /v1/billing/plans\n */\n async listBillingPlans(token: string): Promise<ListPlansResponse> {\n const path = \"/v1/billing/plans\";\n return this.request<ListPlansResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create billing plan\n * POST /v1/billing/plans\n */\n async createBillingPlan(body: CreateBillingPlanRequest, token: string): Promise<PlanResponse> {\n const path = \"/v1/billing/plans\";\n return this.request<PlanResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get billing plan\n * GET /v1/billing/plans/{planId}\n */\n async getBillingPlan(planId: string, token: string): Promise<PlanResponse> {\n const path = `/v1/billing/plans/${planId}`;\n return this.request<PlanResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Activate a billing plan\n * POST /v1/billing/plans/{planId}/activate\n */\n async activateBillingPlan(planId: string, body: ActivateBillingPlanRequest, token: string): Promise<void> {\n const path = `/v1/billing/plans/${planId}/activate`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Archive a billing plan\n * POST /v1/billing/plans/{planId}/archive\n */\n async archiveBillingPlan(planId: string, body: ArchiveBillingPlanRequest, token: string): Promise<void> {\n const path = `/v1/billing/plans/${planId}/archive`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List subscriptions\n * GET /v1/billing/subscriptions\n */\n async listSubscriptions(token: string): Promise<ListSubscriptionsResponse> {\n const path = \"/v1/billing/subscriptions\";\n return this.request<ListSubscriptionsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create subscription\n * POST /v1/billing/subscriptions\n */\n async createSubscription(body: CreateSubscriptionRequest, token: string): Promise<Response> {\n const path = \"/v1/billing/subscriptions\";\n return this.request<Response>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get active subscription\n * GET /v1/billing/subscriptions/active\n */\n async getActiveSubscription(token: string): Promise<Response> {\n const path = \"/v1/billing/subscriptions/active\";\n return this.request<Response>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Cancel subscription\n * POST /v1/billing/subscriptions/{subId}/cancel\n */\n async cancelSubscription(subId: string, body: CancelSubscriptionRequest, token: string): Promise<void> {\n const path = `/v1/billing/subscriptions/${subId}/cancel`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Change subscription plan\n * POST /v1/billing/subscriptions/{subId}/change-plan\n */\n async changeSubscriptionPlan(subId: string, body: ChangeSubscriptionPlanRequest, token: string): Promise<void> {\n const path = `/v1/billing/subscriptions/${subId}/change-plan`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Pause subscription\n * POST /v1/billing/subscriptions/{subId}/pause\n */\n async pauseSubscription(subId: string, body: PauseSubscriptionRequest, token: string): Promise<void> {\n const path = `/v1/billing/subscriptions/${subId}/pause`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Resume subscription\n * POST /v1/billing/subscriptions/{subId}/resume\n */\n async resumeSubscription(subId: string, body: ResumeSubscriptionRequest, token: string): Promise<void> {\n const path = `/v1/billing/subscriptions/${subId}/resume`;\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get usage summary\n * GET /v1/billing/usage\n */\n async getUsageSummary(token: string): Promise<UsageSummaryResponse> {\n const path = \"/v1/billing/usage\";\n return this.request<UsageSummaryResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Change password\n * POST /v1/change-password\n */\n async changePassword(body: ChangePasswordRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/change-password\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get client configuration\n * GET /v1/client-config\n */\n async getClientConfig(token: string): Promise<ClientConfigResponse> {\n const path = \"/v1/client-config\";\n return this.request<ClientConfigResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List consents\n * GET /v1/consent\n */\n async listConsents(): Promise<ListResponse> {\n const path = \"/v1/consent\";\n return this.request<ListResponse>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Grant consent\n * POST /v1/consent/grant\n */\n async grantConsent(body: GrantConsentRequest): Promise<Consent> {\n const path = \"/v1/consent/grant\";\n return this.request<Consent>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Revoke consent\n * POST /v1/consent/revoke\n */\n async revokeConsent(body: RevokeConsentRequest): Promise<StatusResponse> {\n const path = \"/v1/consent/revoke\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List devices\n * GET /v1/devices\n */\n async listDevices(token: string): Promise<DeviceListResponse> {\n const path = \"/v1/devices\";\n return this.request<DeviceListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get device\n * GET /v1/devices/{deviceId}\n */\n async getDevice(deviceId: string, token: string): Promise<Device> {\n const path = `/v1/devices/${deviceId}`;\n return this.request<Device>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Delete device\n * DELETE /v1/devices/{deviceId}\n */\n async deleteDevice(deviceId: string, body: DeleteDeviceRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/devices/${deviceId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Trust device\n * PATCH /v1/devices/{deviceId}/trust\n */\n async trustDevice(deviceId: string, body: TrustDeviceRequest, token: string): Promise<Device> {\n const path = `/v1/devices/${deviceId}/trust`;\n return this.request<Device>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * List environments\n * GET /v1/environments\n */\n async listEnvironments(token: string): Promise<EnvironmentListResponse> {\n const path = \"/v1/environments\";\n return this.request<EnvironmentListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create environment\n * POST /v1/environments\n */\n async createEnvironment(body: CreateEnvironmentRequest, token: string): Promise<Environment> {\n const path = \"/v1/environments\";\n return this.request<Environment>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get environment\n * GET /v1/environments/{envId}\n */\n async getEnvironment(envId: string, token: string): Promise<Environment> {\n const path = `/v1/environments/${envId}`;\n return this.request<Environment>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update environment\n * PATCH /v1/environments/{envId}\n */\n async updateEnvironment(envId: string, body: UpdateEnvironmentRequest, token: string): Promise<Environment> {\n const path = `/v1/environments/${envId}`;\n return this.request<Environment>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete environment\n * DELETE /v1/environments/{envId}\n */\n async deleteEnvironment(envId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/environments/${envId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Clone environment\n * POST /v1/environments/{envId}/clone\n */\n async cloneEnvironment(envId: string, body: CloneEnvironmentRequest, token: string): Promise<CloneEnvironmentResponse> {\n const path = `/v1/environments/${envId}/clone`;\n return this.request<CloneEnvironmentResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Set default environment\n * POST /v1/environments/{envId}/set-default\n */\n async setDefaultEnvironment(envId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/environments/${envId}/set-default`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Get environment settings\n * GET /v1/environments/{envId}/settings\n */\n async getEnvironmentSettings(envId: string, token: string): Promise<EnvironmentSettingsResponse> {\n const path = `/v1/environments/${envId}/settings`;\n return this.request<EnvironmentSettingsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update environment settings\n * PATCH /v1/environments/{envId}/settings\n */\n async updateEnvironmentSettings(envId: string, body: UpdateEnvironmentSettingsRequest, token: string): Promise<Environment> {\n const path = `/v1/environments/${envId}/settings`;\n return this.request<Environment>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Forgot password\n * POST /v1/forgot-password\n */\n async forgotPassword(body: ForgotPasswordRequest): Promise<ForgotPasswordResponse> {\n const path = \"/v1/forgot-password\";\n return this.request<ForgotPasswordResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Health check\n * GET /v1/health\n */\n async getHealth(): Promise<HealthResponse> {\n const path = \"/v1/health\";\n return this.request<HealthResponse>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Introspect token\n * POST /v1/introspect\n */\n async introspectToken(body: IntrospectTokenRequest): Promise<IntrospectResponse> {\n const path = \"/v1/introspect\";\n return this.request<IntrospectResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List API keys\n * GET /v1/keys\n */\n async listAPIKeys(token: string): Promise<ListKeysResponse> {\n const path = \"/v1/keys\";\n return this.request<ListKeysResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create API key\n * POST /v1/keys\n */\n async createAPIKey(body: CreateAPIKeyRequest, token: string): Promise<CreateKeyResponse> {\n const path = \"/v1/keys\";\n return this.request<CreateKeyResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Revoke API key\n * DELETE /v1/keys/{keyId}\n */\n async revokeAPIKey(keyId: string, body: RevokeAPIKeyRequest, token: string): Promise<void> {\n const path = `/v1/keys/${keyId}`;\n return this.request<void>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Send magic link\n * POST /v1/magic-link/send\n */\n async sendMagicLink(body: SendMagicLinkRequest): Promise<SendResponse> {\n const path = \"/v1/magic-link/send\";\n return this.request<SendResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Verify magic link\n * POST /v1/magic-link/verify\n */\n async verifyMagicLink(body: VerifyMagicLinkRequest): Promise<VerifyResponse> {\n const path = \"/v1/magic-link/verify\";\n return this.request<VerifyResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Get current user\n * GET /v1/me\n */\n async getMe(token: string): Promise<User> {\n const path = \"/v1/me\";\n return this.request<User>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update current user\n * PATCH /v1/me\n */\n async updateMe(body: UpdateMeRequest, token: string): Promise<User> {\n const path = \"/v1/me\";\n return this.request<User>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete account\n * DELETE /v1/me\n */\n async deleteMe(body: DeleteMeRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/me\";\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List linked auth methods\n * GET /v1/me/auth-methods\n */\n async listAuthMethods(token: string): Promise<ListAuthMethodsResponse> {\n const path = \"/v1/me/auth-methods\";\n return this.request<ListAuthMethodsResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Unlink an auth method\n * DELETE /v1/me/auth-methods/{provider}\n */\n async unlinkAuthMethod(provider: string, body: UnlinkAuthMethodRequest, token: string): Promise<UnlinkAuthMethodResponse> {\n const path = `/v1/me/auth-methods/${provider}`;\n return this.request<UnlinkAuthMethodResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Export user data\n * GET /v1/me/export\n */\n async exportMyData(token: string): Promise<Record<string, unknown>> {\n const path = \"/v1/me/export\";\n return this.request<Record<string, unknown>>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Switch active organization\n * POST /v1/me/switch-org\n */\n async switchOrg(body: SwitchOrgRequest, token: string): Promise<SwitchOrgResponse> {\n const path = \"/v1/me/switch-org\";\n return this.request<SwitchOrgResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * MFA challenge\n * POST /v1/mfa/challenge\n */\n async challengeMFA(body: ChallengeMFARequest): Promise<ChallengeResponse> {\n const path = \"/v1/mfa/challenge\";\n return this.request<ChallengeResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Enroll in MFA\n * POST /v1/mfa/enroll\n */\n async enrollMFA(body: EnrollMFARequest, token: string): Promise<EnrollResponse> {\n const path = \"/v1/mfa/enroll\";\n return this.request<EnrollResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Disable MFA\n * DELETE /v1/mfa/enrollment\n */\n async disableMFA(body: DisableMFARequest, token: string): Promise<DisableResponse> {\n const path = \"/v1/mfa/enrollment\";\n return this.request<DisableResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Regenerate MFA recovery codes\n * POST /v1/mfa/recovery/regenerate\n */\n async regenerateMFARecoveryCodes(body: RegenerateMFARecoveryCodesRequest, token: string): Promise<RecoveryRegenerateResponse> {\n const path = \"/v1/mfa/recovery/regenerate\";\n return this.request<RecoveryRegenerateResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Verify MFA recovery code\n * POST /v1/mfa/recovery/verify\n */\n async verifyRecoveryCode(body: VerifyRecoveryCodeRequest): Promise<RecoveryVerifyResponse> {\n const path = \"/v1/mfa/recovery/verify\";\n return this.request<RecoveryVerifyResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Send SMS verification code\n * POST /v1/mfa/sms/send\n */\n async sendSMSCode(body: SendSMSCodeRequest, token: string): Promise<SMSSendResponse> {\n const path = \"/v1/mfa/sms/send\";\n return this.request<SMSSendResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Verify SMS code\n * POST /v1/mfa/sms/verify\n */\n async verifySMSCode(body: VerifySMSCodeRequest, token: string): Promise<SMSVerifyResponse> {\n const path = \"/v1/mfa/sms/verify\";\n return this.request<SMSVerifyResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Verify MFA code\n * POST /v1/mfa/verify\n */\n async verifyMFA(body: VerifyMFARequest): Promise<VerifyMFAResponse> {\n const path = \"/v1/mfa/verify\";\n return this.request<VerifyMFAResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * OAuth2 Authorization\n * GET /v1/oauth/authorize\n */\n async oauth2Authorize(): Promise<void> {\n const path = \"/v1/oauth/authorize\";\n return this.request<void>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * Device Authorization\n * POST /v1/oauth/device/authorize\n */\n async oauth2DeviceAuthorize(body: Oauth2DeviceAuthorizeRequest): Promise<DeviceAuthResponse> {\n const path = \"/v1/oauth/device/authorize\";\n return this.request<DeviceAuthResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Complete device authorization\n * POST /v1/oauth/device/complete\n */\n async oauth2DeviceComplete(body: Oauth2DeviceCompleteRequest): Promise<DeviceCompleteResponse> {\n const path = \"/v1/oauth/device/complete\";\n return this.request<DeviceCompleteResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Revoke token\n * POST /v1/oauth/revoke\n */\n async oauth2Revoke(body: Oauth2RevokeRequest, token: string): Promise<void> {\n const path = \"/v1/oauth/revoke\";\n return this.request<void>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * OAuth2 Token\n * POST /v1/oauth/token\n */\n async oauth2Token(body: Oauth2TokenRequest): Promise<TokenResponse> {\n const path = \"/v1/oauth/token\";\n return this.request<TokenResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * OIDC UserInfo\n * GET /v1/oauth/userinfo\n */\n async oauth2UserInfo(token: string): Promise<UserInfo> {\n const path = \"/v1/oauth/userinfo\";\n return this.request<UserInfo>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * List organizations\n * GET /v1/orgs\n */\n async listOrganizations(token: string): Promise<OrgListResponse> {\n const path = \"/v1/orgs\";\n return this.request<OrgListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create organization\n * POST /v1/orgs\n */\n async createOrganization(body: CreateOrganizationRequest, token: string): Promise<Organization> {\n const path = \"/v1/orgs\";\n return this.request<Organization>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Check slug availability\n * GET /v1/orgs/check-slug\n */\n async checkOrgSlug(token: string): Promise<SlugAvailableResponse> {\n const path = \"/v1/orgs/check-slug\";\n return this.request<SlugAvailableResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Accept invitation\n * POST /v1/orgs/invitations/accept\n */\n async acceptInvitation(body: AcceptInvitationRequest, token: string): Promise<Member> {\n const path = \"/v1/orgs/invitations/accept\";\n return this.request<Member>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Decline invitation\n * POST /v1/orgs/invitations/decline\n */\n async declineInvitation(body: DeclineInvitationRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/orgs/invitations/decline\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get organization\n * GET /v1/orgs/{orgId}\n */\n async getOrganization(orgId: string, token: string): Promise<Organization> {\n const path = `/v1/orgs/${orgId}`;\n return this.request<Organization>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update organization\n * PATCH /v1/orgs/{orgId}\n */\n async updateOrganization(orgId: string, body: UpdateOrganizationRequest, token: string): Promise<Organization> {\n const path = `/v1/orgs/${orgId}`;\n return this.request<Organization>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete organization\n * DELETE /v1/orgs/{orgId}\n */\n async deleteOrganization(orgId: string, body: DeleteOrganizationRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/orgs/${orgId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List invitations\n * GET /v1/orgs/{orgId}/invitations\n */\n async listInvitations(orgId: string, token: string): Promise<InvitationListResponse> {\n const path = `/v1/orgs/${orgId}/invitations`;\n return this.request<InvitationListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create invitation\n * POST /v1/orgs/{orgId}/invitations\n */\n async createInvitation(orgId: string, body: CreateInvitationRequest, token: string): Promise<Invitation> {\n const path = `/v1/orgs/${orgId}/invitations`;\n return this.request<Invitation>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List members\n * GET /v1/orgs/{orgId}/members\n */\n async listMembers(orgId: string, token: string): Promise<MemberListResponse> {\n const path = `/v1/orgs/${orgId}/members`;\n return this.request<MemberListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Add member\n * POST /v1/orgs/{orgId}/members\n */\n async addMember(orgId: string, body: AddMemberRequest, token: string): Promise<Member> {\n const path = `/v1/orgs/${orgId}/members`;\n return this.request<Member>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Update member role\n * PATCH /v1/orgs/{orgId}/members/{memberId}\n */\n async updateMember(orgId: string, memberId: string, body: UpdateMemberRequest, token: string): Promise<Member> {\n const path = `/v1/orgs/${orgId}/members/${memberId}`;\n return this.request<Member>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Remove member\n * DELETE /v1/orgs/{orgId}/members/{memberId}\n */\n async removeMember(orgId: string, memberId: string, body: RemoveMemberRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/orgs/${orgId}/members/${memberId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List teams\n * GET /v1/orgs/{orgId}/teams\n */\n async listTeams(orgId: string, token: string): Promise<TeamListResponse> {\n const path = `/v1/orgs/${orgId}/teams`;\n return this.request<TeamListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create team\n * POST /v1/orgs/{orgId}/teams\n */\n async createTeam(orgId: string, body: CreateTeamRequest, token: string): Promise<Team> {\n const path = `/v1/orgs/${orgId}/teams`;\n return this.request<Team>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get team\n * GET /v1/orgs/{orgId}/teams/{teamId}\n */\n async getTeam(orgId: string, teamId: string, token: string): Promise<Team> {\n const path = `/v1/orgs/${orgId}/teams/${teamId}`;\n return this.request<Team>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update team\n * PATCH /v1/orgs/{orgId}/teams/{teamId}\n */\n async updateTeam(orgId: string, teamId: string, body: UpdateTeamRequest, token: string): Promise<Team> {\n const path = `/v1/orgs/${orgId}/teams/${teamId}`;\n return this.request<Team>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete team\n * DELETE /v1/orgs/{orgId}/teams/{teamId}\n */\n async deleteTeam(orgId: string, teamId: string, body: DeleteTeamRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/orgs/${orgId}/teams/${teamId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * List passkeys\n * GET /v1/passkeys\n */\n async listPasskeys(token: string): Promise<ListResponse> {\n const path = \"/v1/passkeys\";\n return this.request<ListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Begin passkey login\n * POST /v1/passkeys/login/begin\n */\n async passkeyLoginBegin(body: PasskeyLoginBeginRequest): Promise<LoginBeginResponse> {\n const path = \"/v1/passkeys/login/begin\";\n return this.request<LoginBeginResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Complete passkey login\n * POST /v1/passkeys/login/finish\n */\n async passkeyLoginFinish(body: PasskeyLoginFinishRequest): Promise<LoginFinishResponse> {\n const path = \"/v1/passkeys/login/finish\";\n return this.request<LoginFinishResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Begin passkey registration\n * POST /v1/passkeys/register/begin\n */\n async passkeyRegisterBegin(body: PasskeyRegisterBeginRequest, token: string): Promise<RegisterBeginResponse> {\n const path = \"/v1/passkeys/register/begin\";\n return this.request<RegisterBeginResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Complete passkey registration\n * POST /v1/passkeys/register/finish\n */\n async passkeyRegisterFinish(body: PasskeyRegisterFinishRequest, token: string): Promise<RegisterFinishResponse> {\n const path = \"/v1/passkeys/register/finish\";\n return this.request<RegisterFinishResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete passkey\n * DELETE /v1/passkeys/{credentialId}\n */\n async deletePasskey(credentialId: string, body: DeletePasskeyRequest, token: string): Promise<DeleteResponse> {\n const path = `/v1/passkeys/${credentialId}`;\n return this.request<DeleteResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Start phone authentication\n * POST /v1/phone/start\n */\n async phoneAuthStart(body: PhoneAuthStartRequest): Promise<StartResponse> {\n const path = \"/v1/phone/start\";\n return this.request<StartResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Verify phone OTP\n * POST /v1/phone/verify\n */\n async phoneAuthVerify(body: PhoneAuthVerifyRequest): Promise<VerifyResponse> {\n const path = \"/v1/phone/verify\";\n return this.request<VerifyResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Refresh tokens\n * POST /v1/refresh\n */\n async refresh(body: RefreshRequest): Promise<TokenResponse> {\n const path = \"/v1/refresh\";\n return this.request<TokenResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Reset password\n * POST /v1/reset-password\n */\n async resetPassword(body: ResetPasswordRequest): Promise<StatusResponse> {\n const path = \"/v1/reset-password\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List roles\n * GET /v1/roles\n */\n async authsomeListRoles(token: string): Promise<RoleListResponse> {\n const path = \"/v1/roles\";\n return this.request<RoleListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create role\n * POST /v1/roles\n */\n async authsomeCreateRole(body: AuthsomeCreateRoleRequest, token: string): Promise<Role> {\n const path = \"/v1/roles\";\n return this.request<Role>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get role\n * GET /v1/roles/{roleId}\n */\n async authsomeGetRole(roleId: string, token: string): Promise<Role> {\n const path = `/v1/roles/${roleId}`;\n return this.request<Role>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update role\n * PATCH /v1/roles/{roleId}\n */\n async authsomeUpdateRole(roleId: string, body: AuthsomeUpdateRoleRequest, token: string): Promise<Role> {\n const path = `/v1/roles/${roleId}`;\n return this.request<Role>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete role\n * DELETE /v1/roles/{roleId}\n */\n async authsomeDeleteRole(roleId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Assign role to user\n * POST /v1/roles/{roleId}/assign\n */\n async authsomeAssignRole(roleId: string, body: AuthsomeAssignRoleRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}/assign`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List role permissions\n * GET /v1/roles/{roleId}/permissions\n */\n async authsomeListRolePermissions(roleId: string, token: string): Promise<PermissionListResponse> {\n const path = `/v1/roles/${roleId}/permissions`;\n return this.request<PermissionListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Add permission to role\n * POST /v1/roles/{roleId}/permissions\n */\n async authsomeAddPermission(roleId: string, body: AuthsomeAddPermissionRequest, token: string): Promise<Permission> {\n const path = `/v1/roles/${roleId}/permissions`;\n return this.request<Permission>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Remove permission from role\n * DELETE /v1/roles/{roleId}/permissions/{permissionId}\n */\n async authsomeRemovePermission(roleId: string, permissionId: string, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}/permissions/${permissionId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Unassign role from user\n * POST /v1/roles/{roleId}/unassign\n */\n async authsomeUnassignRole(roleId: string, body: AuthsomeUnassignRoleRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/roles/${roleId}/unassign`;\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * List sessions\n * GET /v1/sessions\n */\n async listSessions(token: string): Promise<SessionListResponse> {\n const path = \"/v1/sessions\";\n return this.request<SessionListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Revoke session\n * DELETE /v1/sessions/{sessionId}\n */\n async revokeSession(sessionId: string, body: RevokeSessionRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/sessions/${sessionId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n /**\n * Sign in\n * POST /v1/signin\n */\n async signIn(body: SignInRequest): Promise<AuthResponse> {\n const path = \"/v1/signin\";\n return this.request<AuthResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Sign out\n * POST /v1/signout\n */\n async signOut(body: SignOutRequest, token: string): Promise<StatusResponse> {\n const path = \"/v1/signout\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Sign up\n * POST /v1/signup\n */\n async signUp(body: SignUpRequest): Promise<AuthResponse> {\n const path = \"/v1/signup\";\n return this.request<AuthResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Start OAuth flow\n * POST /v1/social/{provider}\n */\n async startOAuth(provider: string, body: StartOAuthRequest): Promise<StartResponse> {\n const path = `/v1/social/${provider}`;\n return this.request<StartResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * OAuth callback\n * GET /v1/social/{provider}/callback\n */\n async oauthCallback(provider: string): Promise<CallbackResponse> {\n const path = `/v1/social/${provider}/callback`;\n return this.request<CallbackResponse>(\n 'GET',\n path,\n undefined,\n );\n }\n\n /**\n * SSO SAML ACS endpoint\n * POST /v1/sso/{provider}/acs\n */\n async ssoACS(provider: string, body: SsoACSRequest): Promise<CallbackResponse> {\n const path = `/v1/sso/${provider}/acs`;\n return this.request<CallbackResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * SSO callback (OIDC)\n * POST /v1/sso/{provider}/callback\n */\n async ssoCallback(provider: string, body: SsoCallbackRequest): Promise<CallbackResponse> {\n const path = `/v1/sso/${provider}/callback`;\n return this.request<CallbackResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Start SSO login flow\n * POST /v1/sso/{provider}/login\n */\n async startSSOLogin(provider: string, body: StartSSOLoginRequest): Promise<LoginResponse> {\n const path = `/v1/sso/${provider}/login`;\n return this.request<LoginResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List user roles\n * GET /v1/users/{userId}/roles\n */\n async authsomeListUserRoles(userId: string, token: string): Promise<UserRoleListResponse> {\n const path = `/v1/users/${userId}/roles`;\n return this.request<UserRoleListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Verify email\n * POST /v1/verify-email\n */\n async verifyEmail(body: VerifyEmailRequest): Promise<StatusResponse> {\n const path = \"/v1/verify-email\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * Resend email verification\n * POST /v1/verify-email/resend\n */\n async resendEmailVerification(body: ResendEmailVerificationRequest): Promise<StatusResponse> {\n const path = \"/v1/verify-email/resend\";\n return this.request<StatusResponse>(\n 'POST',\n path,\n body,\n );\n }\n\n /**\n * List webhooks\n * GET /v1/webhooks\n */\n async listWebhooks(token: string): Promise<WebhookListResponse> {\n const path = \"/v1/webhooks\";\n return this.request<WebhookListResponse>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Create webhook\n * POST /v1/webhooks\n */\n async createWebhook(body: CreateWebhookRequest, token: string): Promise<Webhook> {\n const path = \"/v1/webhooks\";\n return this.request<Webhook>(\n 'POST',\n path,\n body,\n token,\n );\n }\n\n /**\n * Get webhook\n * GET /v1/webhooks/{webhookId}\n */\n async getWebhook(webhookId: string, token: string): Promise<Webhook> {\n const path = `/v1/webhooks/${webhookId}`;\n return this.request<Webhook>(\n 'GET',\n path,\n undefined,\n token,\n );\n }\n\n /**\n * Update webhook\n * PATCH /v1/webhooks/{webhookId}\n */\n async updateWebhook(webhookId: string, body: UpdateWebhookRequest, token: string): Promise<Webhook> {\n const path = `/v1/webhooks/${webhookId}`;\n return this.request<Webhook>(\n 'PATCH',\n path,\n body,\n token,\n );\n }\n\n /**\n * Delete webhook\n * DELETE /v1/webhooks/{webhookId}\n */\n async deleteWebhook(webhookId: string, body: DeleteWebhookRequest, token: string): Promise<StatusResponse> {\n const path = `/v1/webhooks/${webhookId}`;\n return this.request<StatusResponse>(\n 'DELETE',\n path,\n body,\n token,\n );\n }\n\n // ──────────────────────────────────────────────────\n // Internal request helper\n // ──────────────────────────────────────────────────\n\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n token?: string,\n ): Promise<T> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n };\n\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n if (this.publishableKey) {\n headers['X-Publishable-Key'] = this.publishableKey;\n }\n\n const response = await this.fetchFn(`${this.baseURL}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let apiError: { error?: string; code?: number; type?: string; [k: string]: unknown } | undefined;\n try {\n apiError = await response.json();\n } catch {\n // Response body is not JSON.\n }\n throw new AuthClientError(\n apiError?.error ?? `Request failed with status ${response.status}`,\n apiError?.code ?? response.status,\n apiError?.type,\n apiError, // full decoded body so callers can read extras like mfa_ticket / available_methods\n );\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n }\n}\n\nexport class AuthClientError extends Error {\n code?: number;\n // Stable string error code from the backend envelope (e.g.\n // \"email_not_verified\", \"captcha_required\", \"mfa_required\"). Lets\n // the UI branch on specific failure modes instead of pattern-\n // matching on the human-readable message.\n type?: string;\n // Full decoded JSON body when the response body was JSON. Lets\n // callers read tagged extras the envelope carries beyond\n // {error, code, type} — e.g. mfa_ticket and available_methods on\n // a 403 with type:\"mfa_required\". Undefined when the body wasn't\n // JSON.\n details?: Record<string, unknown>;\n\n constructor(message: string, code?: number, type?: string, details?: Record<string, unknown>) {\n super(message);\n this.name = 'AuthClientError';\n this.code = code;\n this.type = type;\n this.details = details;\n }\n}\n\n","/**\n * AuthClient adapter — thin wrapper over the auto-generated API client.\n *\n * The generated client lives in ./generated/api-client.ts and covers all\n * core + plugin endpoints. This file extends it with a few convenience\n * overrides so that auth.ts (and downstream consumers) keep working\n * without changes.\n */\n\nimport {\n AuthClient as GeneratedClient,\n AuthClientError,\n type AuthClientConfig,\n} from \"./generated/api-client\";\nimport type { ClientConfig } from \"./types\";\n\n// ── Re-exports ───────────────────────────────────────\n\nexport { AuthClientError };\nexport type { AuthClientConfig };\n\n// Re-export generated request types used by auth.ts\nexport type { SignInRequest, SignUpRequest } from \"./generated/api-types\";\n\n// Re-export all generated API model types\nexport type {\n AuthResponse,\n Device,\n EnrollResponse,\n Invitation,\n KeyListItem,\n Member,\n Organization,\n TokenResponse,\n User,\n} from \"./generated/api-types\";\n\n// Backward-compatible type aliases for types renamed in the dynamic spec.\nexport type { KeyListItem as APIKey } from \"./generated/api-types\";\nexport type { EnrollResponse as MFAEnrollment } from \"./generated/api-types\";\n\n// Re-export all generated request types\nexport type {\n AdminBanUserRequest,\n ChangePasswordRequest,\n ForgotPasswordRequest,\n CreateAPIKeyRequest,\n SendMagicLinkRequest,\n VerifyMagicLinkRequest,\n UpdateMeRequest,\n ChallengeMFARequest,\n EnrollMFARequest,\n SendSMSCodeRequest,\n VerifySMSCodeRequest,\n VerifyMFARequest,\n CreateOrganizationRequest,\n UpdateOrganizationRequest,\n CreateInvitationRequest,\n AddMemberRequest,\n RefreshRequest,\n ResetPasswordRequest,\n SsoACSRequest,\n SsoCallbackRequest,\n VerifyEmailRequest,\n VerifyRecoveryCodeRequest,\n} from \"./generated/api-types\";\n\n// Backward-compatible request type aliases\nexport type { SendMagicLinkRequest as MagicLinkSendRequest } from \"./generated/api-types\";\nexport type { VerifyMagicLinkRequest as MagicLinkVerifyRequest } from \"./generated/api-types\";\nexport type { ChallengeMFARequest as MfaChallengeRequest } from \"./generated/api-types\";\nexport type { EnrollMFARequest as MfaEnrollRequest } from \"./generated/api-types\";\nexport type { SendSMSCodeRequest as MfaSMSSendRequest } from \"./generated/api-types\";\nexport type { VerifySMSCodeRequest as MfaSMSVerifyRequest } from \"./generated/api-types\";\nexport type { VerifyMFARequest as MfaVerifyRequest } from \"./generated/api-types\";\nexport type { CreateOrganizationRequest as CreateOrgRequest } from \"./generated/api-types\";\nexport type { UpdateOrganizationRequest as UpdateOrgRequest } from \"./generated/api-types\";\n\n// ── Manual types (not in the OpenAPI spec) ───────────\n\n/** Options for paginated list endpoints. */\nexport interface ListOptions {\n limit?: number;\n offset?: number;\n}\n\n/** Paginated list response. */\nexport interface ListResponse<T> {\n items: T[];\n total: number;\n}\n\n// ── AuthClient adapter ──────────────────────────────\n\n/**\n * AuthClient extends the auto-generated client with backward-compatible\n * convenience methods that auth.ts depends on.\n *\n * All 80+ generated endpoints are inherited as-is. Only two methods\n * are overridden to preserve the simpler call-site signatures used by\n * the auth state machine.\n */\nexport class AuthClient extends GeneratedClient {\n /**\n * Refresh session tokens.\n *\n * Accepts a raw refresh-token string (used by auth.ts) or the full\n * RefreshRequest body.\n */\n override async refresh(body: { refresh_token: string } | string): Promise<any> {\n const req = typeof body === \"string\" ? { refresh_token: body } : body;\n return super.refresh(req);\n }\n\n /**\n * Sign out.\n *\n * Accepts a raw token string (used by auth.ts) or the full\n * (body, token) pair from the generated client.\n */\n override async signOut(bodyOrToken: unknown, token?: string): Promise<any> {\n if (typeof bodyOrToken === \"string\") {\n return super.signOut({} as any, bodyOrToken);\n }\n return super.signOut(bodyOrToken as any, token!);\n }\n\n /**\n * MFA challenge — bridge for auth.ts.\n *\n * auth.ts calls `mfaChallenge({ enrollment_id, code })` and expects\n * an AuthResponse back. The generated client uses `challengeMFA`.\n */\n async mfaChallenge(body: { enrollment_id?: string; code: string }): Promise<any> {\n return super.challengeMFA(body as any);\n }\n\n /**\n * Verify an MFA recovery code.\n *\n * Accepts a raw code string (used by auth.ts) or the full request body.\n */\n override async verifyRecoveryCode(body: { code: string } | string): Promise<any> {\n const req = typeof body === \"string\" ? { code: body } : body;\n return super.verifyRecoveryCode(req);\n }\n\n /**\n * Send an SMS code for MFA — bridge for auth.ts.\n *\n * Simplifies the call-site by accepting just the session token.\n */\n async sendSMSCodeForMFA(token: string): Promise<any> {\n return super.sendSMSCode({}, token);\n }\n\n /**\n * Verify an SMS code for MFA — bridge for auth.ts.\n *\n * Simplifies the call-site by accepting code + token directly.\n */\n async verifySMSCodeForMFA(code: string, token: string): Promise<any> {\n return super.verifySMSCode({ code }, token);\n }\n\n /**\n * Complete a device authorization (RFC 8628).\n *\n * Approves or denies a device code. Requires an authenticated session —\n * pass the session token so the backend can identify the user.\n */\n async completeDeviceAuthorization(\n userCode: string,\n action: \"approve\" | \"deny\",\n token?: string,\n ): Promise<{ status: string }> {\n const base = (this as any).baseURL as string;\n const fetchFn = (this as any).fetchFn as typeof globalThis.fetch;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n const res = await fetchFn(`${base}/v1/oauth/device/complete`, {\n method: \"POST\",\n headers,\n credentials: \"include\",\n body: JSON.stringify({ user_code: userCode, action }),\n });\n\n if (!res.ok) {\n const body = await res.json().catch(() => ({}));\n throw new AuthClientError(\n (body as Record<string, string>).error || \"Failed to authorize device\",\n res.status,\n );\n }\n return res.json();\n }\n\n /**\n * Fetch the client configuration from the backend.\n *\n * The config describes which auth methods are enabled so SDK\n * components can auto-configure without manual props.\n *\n * Reads `baseURL` and `fetchFn` directly off the generated parent\n * class — earlier generator templates kept a `this.config` ref but\n * the current embedded template stores fields individually, so the\n * old `(this as any).config.baseURL` shape produced `undefined` and\n * the URL constructor threw.\n */\n async fetchClientConfig(publishableKey?: string): Promise<ClientConfig> {\n const baseURL = (this as any).baseURL as string;\n const fetchFn = ((this as any).fetchFn as typeof globalThis.fetch) ?? globalThis.fetch;\n const url = new URL(\"/v1/client-config\", baseURL);\n if (publishableKey) {\n url.searchParams.set(\"key\", publishableKey);\n }\n const res = await fetchFn(url.toString(), {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n if (!res.ok) {\n throw new AuthClientError(\"Failed to fetch client config\", res.status);\n }\n return res.json();\n }\n}\n","/**\n * Framework-agnostic authentication state machine.\n *\n * Manages sign-in/sign-up flows, token persistence, automatic refresh,\n * and MFA challenges. Framework adapters (React, Vue, etc.) wrap this\n * class and expose reactive state.\n */\n\nimport { AuthClient, type SignInRequest, type SignUpRequest, AuthClientError } from \"./client\";\nimport type { AuthConfig, AuthState, ClientConfig, Session, TokenStorage, User } from \"./types\";\n\nconst SESSION_KEY = \"authsome:session\";\nconst CONFIG_KEY = \"authsome:client_config\";\nconst REFRESH_BEFORE_MS = 60_000; // Refresh 60 s before expiry.\nconst CONFIG_TTL_MS = 5 * 60_000; // Cache client config for 5 minutes.\n\n/** Default in-memory storage (lost on page reload). */\nconst memoryStorage: TokenStorage = (() => {\n const store = new Map<string, string>();\n return {\n getItem: (key: string) => store.get(key) ?? null,\n setItem: (key: string, value: string) => {\n store.set(key, value);\n },\n removeItem: (key: string) => {\n store.delete(key);\n },\n };\n})();\n\n/** Try to use localStorage, fall back to memory. */\nfunction defaultStorage(): TokenStorage {\n try {\n if (typeof window !== \"undefined\" && window.localStorage) {\n return window.localStorage;\n }\n } catch {\n // SSR or restricted environments.\n }\n return memoryStorage;\n}\n\n/**\n * AuthManager is the core state machine that drives authentication.\n *\n * Usage:\n * ```ts\n * const auth = new AuthManager({ baseURL: \"https://api.example.com\" });\n * auth.subscribe((state) => console.log(state));\n * await auth.initialize(); // hydrate from storage\n * await auth.signIn({ email, password });\n * ```\n */\nexport class AuthManager {\n private client: AuthClient;\n private storage: TokenStorage;\n private state: AuthState = { status: \"idle\" };\n private listeners = new Set<(state: AuthState) => void>();\n private refreshTimer: ReturnType<typeof setTimeout> | null = null;\n private onError?: (error: { error: string; code?: number; type?: string }) => void;\n\n private publishableKey?: string;\n private clientConfig: ClientConfig | null = null;\n private configListeners = new Set<(config: ClientConfig | null) => void>();\n private configFetchPromise: Promise<ClientConfig> | null = null;\n\n constructor(config: AuthConfig) {\n this.client = new AuthClient(config);\n this.storage = config.storage ?? defaultStorage();\n this.onError = config.onError;\n this.publishableKey = config.publishableKey;\n\n if (config.initialClientConfig) {\n this.clientConfig = config.initialClientConfig;\n }\n\n if (config.onStateChange) {\n this.listeners.add(config.onStateChange);\n }\n }\n\n // ── Public API ────────────────────────────────────\n\n /** Current auth state (snapshot). */\n getState(): AuthState {\n return this.state;\n }\n\n /** Subscribe to state changes. Returns an unsubscribe function. */\n subscribe(listener: (state: AuthState) => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /** Access the underlying HTTP client. */\n getClient(): AuthClient {\n return this.client;\n }\n\n /**\n * Initialize by hydrating the session from storage.\n * When a publishableKey is set, also fetches client config in parallel.\n * Call this once on app start.\n */\n async initialize(): Promise<void> {\n // Kick off config fetch in parallel (non-blocking).\n if (this.publishableKey && !this.clientConfig) {\n void this.fetchClientConfig();\n }\n\n try {\n const raw = await this.storage.getItem(SESSION_KEY);\n if (!raw) {\n this.setState({ status: \"unauthenticated\" });\n return;\n }\n\n const session: Session = JSON.parse(raw);\n const expiresAt = new Date(session.expires_at).getTime();\n\n if (Date.now() >= expiresAt) {\n // Token expired — try refresh.\n await this.refreshSession(session.refresh_token);\n return;\n }\n\n // Token still valid — fetch user profile.\n this.setState({ status: \"loading\" });\n const user = await this.client.getMe(session.session_token);\n this.setState({ status: \"authenticated\", user, session });\n this.scheduleRefresh(session);\n } catch {\n // Never destroy the session on errors during initialization.\n // The server may be temporarily unreachable (404/500/network) or the\n // token might need refreshing. Only an explicit signOut() clears storage.\n // Preserve whatever session we have and schedule a refresh attempt.\n const stored = await this.storage.getItem(SESSION_KEY);\n if (stored) {\n const session: Session = JSON.parse(stored);\n this.setState({ status: \"authenticated\", user: null as unknown as User, session });\n this.scheduleRefresh(session);\n } else {\n this.setState({ status: \"unauthenticated\" });\n }\n }\n }\n\n /** Sign in with email & password. */\n async signIn(credentials: SignInRequest): Promise<void> {\n // Note: we intentionally do NOT set global state to \"loading\" here.\n // The form components manage their own isSubmitting state. Setting global\n // \"loading\" would cause parent components that conditionally render based\n // on isLoading to unmount the form, losing its local state (step, fields).\n try {\n const res = await this.client.signIn(credentials);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(), // fallback\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n // MFA required: surface the ticket + available methods so the\n // form can swap to the challenge UI. The ticket is server-side\n // partial-auth; submitMFAChallenge below completes the round-\n // trip and issues a real session.\n if (\n err instanceof AuthClientError &&\n err.type === \"mfa_required\" &&\n err.details\n ) {\n const ticket = typeof err.details[\"mfa_ticket\"] === \"string\"\n ? (err.details[\"mfa_ticket\"] as string)\n : \"\";\n const methods = Array.isArray(err.details[\"available_methods\"])\n ? (err.details[\"available_methods\"] as string[])\n : [];\n if (ticket) {\n this.setState({\n status: \"mfa_required\",\n email: credentials.email ?? \"\",\n mfaTicket: ticket,\n availableMethods: methods,\n });\n // Do NOT rethrow — the form switches to the challenge view\n // on this state, the same way it switches on\n // verification_pending after sign-up.\n return;\n }\n }\n\n // Specifically surface email_not_verified as a first-class state\n // so the UI can swap to a \"verify your email\" panel rather than a\n // generic error.\n if (\n err instanceof AuthClientError &&\n err.type === \"email_not_verified\"\n ) {\n this.setState({\n status: \"email_not_verified\",\n email: credentials.email ?? \"\",\n });\n throw err;\n }\n this.handleError(err);\n throw err;\n }\n }\n\n /** Sign up with email & password. */\n async signUp(data: SignUpRequest): Promise<void> {\n // See signIn() comment — forms manage their own loading state.\n try {\n // The signup response always includes a session token, but when the\n // backend has email verification enabled (the default) that token is\n // unusable until the email is verified. The UI must NOT route the\n // user into the signed-in shell — it should show a \"check your inbox\"\n // panel. We therefore discard the session entirely and surface a\n // verification_pending state.\n //\n // Enumeration-resistance note: when a duplicate signup is detected,\n // the backend returns a byte-shape-identical 201 with a synthetic\n // session token. We treat both real and duplicate signups the same.\n await this.client.signUp(data);\n this.setState({\n status: \"verification_pending\",\n email: data.email,\n });\n } catch (err) {\n this.handleError(err);\n throw err;\n }\n }\n\n /**\n * Resend the verification email for an unverified account.\n *\n * Always resolves; the backend returns 200 regardless of whether the\n * email is registered, unregistered, or already verified — that's the\n * enumeration-resistance contract. UI callers should disable the\n * button + show a generic \"if your email is registered, we sent a new\n * link\" confirmation rather than branching on the response.\n */\n async resendVerification(email: string): Promise<void> {\n if (!email) return;\n try {\n await this.client.resendEmailVerification({ email });\n } catch (err) {\n // Surface transport errors via onError but don't propagate —\n // the UI message is intentionally generic.\n this.onError?.({\n error: err instanceof Error ? err.message : \"resend failed\",\n });\n }\n }\n\n /** Sign out and clear the session. */\n async signOut(): Promise<void> {\n const token = this.getSessionToken();\n if (token) {\n try {\n await this.client.signOut(token);\n } catch {\n // Best-effort server sign-out.\n }\n }\n this.clearRefreshTimer();\n await this.clearSession();\n this.setState({ status: \"unauthenticated\" });\n }\n\n /**\n * Submit the MFA challenge code against the ticket from the\n * mfa_required state. On success: real session minted, state →\n * \"authenticated\". On bad code: state stays \"mfa_required\" so\n * the form can show the error inline; the ticket remains valid\n * for the 5-minute server-side TTL.\n *\n * Throws if called outside the mfa_required state — the caller\n * has nowhere to send the code.\n */\n async submitMFAChallenge(code: string): Promise<void> {\n const state = this.state;\n if (state.status !== \"mfa_required\") {\n throw new Error(\"auth: submitMFAChallenge called outside the mfa_required state\");\n }\n try {\n const res = await this.client.challengeMFA({\n mfa_ticket: state.mfaTicket,\n code,\n });\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: res.expires_at ?? new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user as User, session);\n } catch (err) {\n // Don't fall into the generic error handler — bad code should\n // leave the form on the challenge view, not bounce back to the\n // sign-in form. The caller (the challenge form) surfaces the\n // 401 inline.\n this.onError?.({\n error: err instanceof Error ? err.message : \"challenge failed\",\n });\n throw err;\n }\n }\n\n /**\n * @deprecated Use submitMFAChallenge(code). The old enrollment-id\n * + partial-session shape was removed in the MFA consolidation;\n * this thin shim only exists so older callers don't break their\n * build, but the enrollmentId argument is now ignored.\n */\n async submitMFACode(_enrollmentId: string, code: string): Promise<void> {\n return this.submitMFAChallenge(code);\n }\n\n /** Submit an MFA recovery code. */\n async submitRecoveryCode(code: string): Promise<void> {\n this.setState({ status: \"loading\" });\n try {\n const res = await this.client.verifyRecoveryCode(code);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n }\n }\n\n /** Send an SMS code for MFA verification. Returns masked phone + expiry info. */\n async sendSMSCode(): Promise<{ sent: boolean; phone_masked: string; expires_in_seconds: number }> {\n const token = this.getSessionToken();\n if (!token) throw new Error(\"No session token available\");\n return this.client.sendSMSCodeForMFA(token);\n }\n\n /** Submit an SMS verification code during MFA challenge. */\n async submitSMSCode(code: string): Promise<void> {\n this.setState({ status: \"loading\" });\n try {\n const token = this.getSessionToken();\n if (!token) throw new Error(\"No session token available\");\n const res = await this.client.verifySMSCodeForMFA(code, token);\n const session: Session = {\n session_token: res.session_token,\n refresh_token: res.refresh_token,\n expires_at: new Date(Date.now() + 3600_000).toISOString(),\n };\n await this.handleAuthResponse(res.user, session);\n } catch (err) {\n this.handleError(err);\n }\n }\n\n /** Refresh the current session manually. */\n async refreshNow(): Promise<void> {\n const state = this.state;\n if (state.status !== \"authenticated\") return;\n await this.refreshSession(state.session.refresh_token);\n }\n\n /**\n * Get the current session token (if authenticated). Returns null\n * during the MFA challenge — there is no real session yet, only a\n * ticket the challenge handler validates internally.\n */\n getSessionToken(): string | null {\n if (this.state.status === \"authenticated\") {\n return this.state.session.session_token;\n }\n return null;\n }\n\n /**\n * Get the active MFA ticket (only set during the mfa_required\n * state). Form components driving the challenge UI read this to\n * confirm they have a partial-auth credential before letting the\n * user submit a code.\n */\n getMFATicket(): string | null {\n return this.state.status === \"mfa_required\" ? this.state.mfaTicket : null;\n }\n\n /** Get the current user (if authenticated). */\n getUser(): User | null {\n if (this.state.status === \"authenticated\") {\n return this.state.user;\n }\n return null;\n }\n\n // ── Client Config API ────────────────────────────\n\n /** Get the cached client config (or null if not yet fetched). */\n getClientConfig(): ClientConfig | null {\n return this.clientConfig;\n }\n\n /** Subscribe to client config changes. Returns an unsubscribe function. */\n subscribeConfig(listener: (config: ClientConfig | null) => void): () => void {\n this.configListeners.add(listener);\n return () => {\n this.configListeners.delete(listener);\n };\n }\n\n /**\n * Fetch client config from the backend.\n * Deduplicates concurrent calls and caches the result with a TTL.\n */\n async fetchClientConfig(): Promise<ClientConfig> {\n // Deduplicate concurrent fetches.\n if (this.configFetchPromise) {\n return this.configFetchPromise;\n }\n\n // Check storage cache.\n try {\n const cached = await this.storage.getItem(CONFIG_KEY);\n if (cached) {\n const { config, fetchedAt } = JSON.parse(cached) as { config: ClientConfig; fetchedAt: number };\n if (Date.now() - fetchedAt < CONFIG_TTL_MS) {\n this.setClientConfig(config);\n return config;\n }\n }\n } catch {\n // Cache miss or parse error — fetch fresh.\n }\n\n this.configFetchPromise = this.client\n .fetchClientConfig(this.publishableKey)\n .then(async (config) => {\n this.setClientConfig(config);\n // Cache with timestamp.\n try {\n await this.storage.setItem(\n CONFIG_KEY,\n JSON.stringify({ config, fetchedAt: Date.now() }),\n );\n } catch {\n // Storage write failure is non-fatal.\n }\n return config;\n })\n .finally(() => {\n this.configFetchPromise = null;\n });\n\n return this.configFetchPromise;\n }\n\n /** Tear down: clear timers and listeners. */\n destroy(): void {\n this.clearRefreshTimer();\n this.listeners.clear();\n this.configListeners.clear();\n }\n\n // ── Internals ─────────────────────────────────────\n\n private async handleAuthResponse(user: User, session: Session): Promise<void> {\n await this.persistSession(session);\n this.setState({ status: \"authenticated\", user, session });\n this.scheduleRefresh(session);\n }\n\n private async refreshSession(refreshToken: string, attempt = 0): Promise<void> {\n try {\n const newSession = await this.client.refresh(refreshToken);\n const user = await this.client.getMe(newSession.session_token);\n await this.persistSession(newSession);\n this.setState({ status: \"authenticated\", user, session: newSession });\n this.scheduleRefresh(newSession);\n } catch {\n // Never destroy the session on refresh failure. The refresh token\n // may still be valid — the server could be temporarily unreachable.\n // Schedule a retry in 30 seconds. Only explicit signOut() clears storage.\n this.clearRefreshTimer();\n this.refreshTimer = setTimeout(() => {\n void this.refreshSession(refreshToken);\n }, 30_000);\n }\n }\n\n private scheduleRefresh(session: Session): void {\n this.clearRefreshTimer();\n const expiresAt = new Date(session.expires_at).getTime();\n const delay = expiresAt - Date.now() - REFRESH_BEFORE_MS;\n\n if (delay <= 0) {\n // Already near expiry — refresh immediately.\n void this.refreshSession(session.refresh_token);\n return;\n }\n\n this.refreshTimer = setTimeout(() => {\n void this.refreshSession(session.refresh_token);\n }, delay);\n }\n\n private clearRefreshTimer(): void {\n if (this.refreshTimer !== null) {\n clearTimeout(this.refreshTimer);\n this.refreshTimer = null;\n }\n }\n\n private async persistSession(session: Session): Promise<void> {\n await this.storage.setItem(SESSION_KEY, JSON.stringify(session));\n }\n\n private async clearSession(): Promise<void> {\n await this.storage.removeItem(SESSION_KEY);\n }\n\n private setClientConfig(config: ClientConfig): void {\n this.clientConfig = config;\n for (const listener of this.configListeners) {\n try {\n listener(config);\n } catch {\n // Listener errors should not break the config flow.\n }\n }\n }\n\n private setState(newState: AuthState): void {\n this.state = newState;\n for (const listener of this.listeners) {\n try {\n listener(newState);\n } catch {\n // Listener errors should not break the state machine.\n }\n }\n }\n\n private handleError(err: unknown): void {\n const message = err instanceof AuthClientError ? err.message : \"An unexpected error occurred\";\n const code = err instanceof AuthClientError ? err.code : undefined;\n const type = err instanceof AuthClientError ? err.type : undefined;\n\n // MFA required is now handled directly inside signIn() — the\n // backend returns it as a structured error envelope with a\n // mfa_ticket extra and the new contract requires that ticket\n // be carried into state, not the (no-longer-issued) partial-\n // session token. The legacy \"code === 403 && contains 'mfa'\"\n // branch was removed; if a 403 with type:\"mfa_required\" reaches\n // handleError it means signIn didn't catch it, which is a bug\n // worth surfacing as an error rather than silently transitioning.\n\n this.setState({ status: \"error\", error: message });\n this.onError?.({ error: message, code, type });\n }\n}\n","/**\n * WebAuthn encoding helpers.\n *\n * The go-webauthn backend serialises binary fields (challenge, user.id,\n * credential IDs, …) as **base64url strings** in JSON. The browser\n * WebAuthn API requires those same fields as ArrayBuffer / Uint8Array.\n *\n * These helpers bridge the gap in both directions:\n * begin response → browser API (base64url string → ArrayBuffer)\n * browser API → finish POST (ArrayBuffer → base64url string)\n */\n\n// ── low-level codecs ──────────────────────────────────────────────\n\n/** Decode a base64url-encoded string into a Uint8Array. */\nexport function base64urlToBuffer(base64url: string): Uint8Array {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64 + \"=\".repeat((4 - (base64.length % 4)) % 4);\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\n/** Encode an ArrayBuffer (or Uint8Array) to a base64url string (no padding). */\nexport function bufferToBase64url(\n buffer: ArrayBuffer | Uint8Array,\n): string {\n const bytes =\n buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\n let binary = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\n// ── begin → browser helpers ────────────────────────────────────────\n\n/**\n * Prepare the options object returned by `/passkeys/register/begin`\n * for `navigator.credentials.create({ publicKey })`.\n *\n * Converts base64url strings → Uint8Array for:\n * challenge, user.id, excludeCredentials[].id\n */\nexport function prepareCreationOptions(\n options: Record<string, unknown>,\n): PublicKeyCredentialCreationOptions {\n const publicKey = (options.publicKey ?? options) as Record<string, unknown>;\n\n const out: Record<string, unknown> = { ...publicKey };\n\n // challenge\n if (typeof out.challenge === \"string\") {\n out.challenge = base64urlToBuffer(out.challenge);\n }\n\n // user.id\n if (out.user && typeof out.user === \"object\") {\n const user = { ...(out.user as Record<string, unknown>) };\n if (typeof user.id === \"string\") {\n user.id = base64urlToBuffer(user.id);\n }\n out.user = user;\n }\n\n // excludeCredentials[].id\n if (Array.isArray(out.excludeCredentials)) {\n out.excludeCredentials = (\n out.excludeCredentials as Record<string, unknown>[]\n ).map((c) => {\n if (typeof c.id === \"string\") {\n return { ...c, id: base64urlToBuffer(c.id) };\n }\n return c;\n });\n }\n\n return out as unknown as PublicKeyCredentialCreationOptions;\n}\n\n/**\n * Prepare the options object returned by `/passkeys/login/begin`\n * for `navigator.credentials.get({ publicKey })`.\n *\n * Converts base64url strings → Uint8Array for:\n * challenge, allowCredentials[].id\n */\nexport function prepareRequestOptions(\n options: Record<string, unknown>,\n): PublicKeyCredentialRequestOptions {\n const publicKey = (options.publicKey ?? options) as Record<string, unknown>;\n\n const out: Record<string, unknown> = { ...publicKey };\n\n // challenge\n if (typeof out.challenge === \"string\") {\n out.challenge = base64urlToBuffer(out.challenge);\n }\n\n // allowCredentials[].id\n if (Array.isArray(out.allowCredentials)) {\n out.allowCredentials = (\n out.allowCredentials as Record<string, unknown>[]\n ).map((c) => {\n if (typeof c.id === \"string\") {\n return { ...c, id: base64urlToBuffer(c.id) };\n }\n return c;\n });\n }\n\n return out as unknown as PublicKeyCredentialRequestOptions;\n}\n\n// ── browser → finish helpers ───────────────────────────────────────\n\n/**\n * Serialize a PublicKeyCredential returned by navigator.credentials\n * into a plain object suitable for POSTing to the `/finish` endpoint.\n *\n * Converts ArrayBuffer fields → base64url strings so they survive\n * JSON.stringify and match what go-webauthn expects.\n */\nexport function serializeCredential(\n credential: Credential,\n): Record<string, unknown> {\n const cred = credential as PublicKeyCredential;\n const response = cred.response;\n\n const result: Record<string, unknown> = {\n id: cred.id,\n rawId: bufferToBase64url(cred.rawId),\n type: cred.type,\n response: {} as Record<string, unknown>,\n };\n\n const serializedResponse: Record<string, unknown> = {\n clientDataJSON: bufferToBase64url(response.clientDataJSON),\n };\n\n // Attestation response (register finish)\n if (\"attestationObject\" in response) {\n const attestation = response as AuthenticatorAttestationResponse;\n serializedResponse.attestationObject = bufferToBase64url(\n attestation.attestationObject,\n );\n }\n\n // Assertion response (login finish)\n if (\"authenticatorData\" in response) {\n const assertion = response as AuthenticatorAssertionResponse;\n serializedResponse.authenticatorData = bufferToBase64url(\n assertion.authenticatorData,\n );\n serializedResponse.signature = bufferToBase64url(assertion.signature);\n if (assertion.userHandle) {\n serializedResponse.userHandle = bufferToBase64url(assertion.userHandle);\n }\n }\n\n result.response = serializedResponse;\n\n // Include authenticatorAttachment if present\n if (cred.authenticatorAttachment) {\n result.authenticatorAttachment = cred.authenticatorAttachment;\n }\n\n return result;\n}\n"],"mappings":"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","names":["AuthClient","AuthClient"]}