@authyon/server 0.2.0-beta.12 → 0.2.0-beta.14

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/README.md CHANGED
@@ -120,7 +120,7 @@ await authyon.environment.audit.list({ take: 50 });
120
120
 
121
121
  Veja [`examples/organizationMembership.ts`](./examples/organizationMembership.ts) para o fluxo completo, incluindo as rotas de backend que o `@authyon/auth` chamaria.
122
122
 
123
- Namespaces disponíveis: `environment.users`, `environment.tenants` (com `.members` e `.roles` aninhados), `environment.roles`, `environment.permissions`, `environment.audit`.
123
+ Namespaces disponíveis: `environment.users`, `environment.tenants` (com `.members` e `.roles` aninhados), `environment.roles`, `environment.permissions`, `environment.audit`, `environment.financialAuthorizations`.
124
124
 
125
125
  ## Autorização local
126
126
 
@@ -191,6 +191,35 @@ Chamadas server-side propagam `clientIp` em `X-Forwarded-For`. O middleware Expr
191
191
  await authyon.validate(token, { clientIp: "203.0.113.10" });
192
192
  ```
193
193
 
194
+ ## Confirmação de transações financeiras
195
+
196
+ Exige uma credencial de ambiente com o escopo `authyon:financial:authorize`. Guia
197
+ completo, incluindo o lado do cliente: [`docs/financialStepUp.md`](../../docs/financialStepUp.md).
198
+
199
+ ```ts
200
+ const transaction = {
201
+ action: "pix.transfer",
202
+ amount: 150.5,
203
+ currency: "BRL",
204
+ beneficiary: "Maria Silva",
205
+ };
206
+
207
+ // 1. Antes de executar, peça a aprovação do cliente.
208
+ const { id } = await authyon.environment.financialAuthorizations.create({
209
+ ...transaction,
210
+ subjectId: customerId,
211
+ idempotencyKey: orderId,
212
+ });
213
+
214
+ // 2. O cliente confirma com o código (@authyon/auth → financialAuthorizations.confirm).
215
+
216
+ // 3. Consuma com a mesma transação e só então execute.
217
+ const { assurance } = await authyon.environment.financialAuthorizations.consume(id, transaction);
218
+ ```
219
+
220
+ Se o seu servidor guarda o token do cliente (BFF), o lado do cliente também está em
221
+ `authyon.user(accessToken).financialAuthorizations`.
222
+
194
223
  ## Administração por tenant (`tenant()`)
195
224
 
196
225
  As credenciais de um tenant são próprias dele — use `authyon.tenant(credentials)` para obter um cliente escopado, que minta e cacheia seu próprio token via `POST /tenant/oauth/token`:
@@ -298,73 +327,34 @@ const issued = await authyon.environment.tenants.credentials.create(tenantId, {
298
327
  });
299
328
  // Armazene issued.clientSecret no gerenciador de segredos. Não registre a resposta.
300
329
 
301
- // Token de um usuário da plataforma. Pode ser um callback assíncrono que
302
- // consulta a sessão atual a cada operação, sem compartilhar tokens entre usuários.
303
- const platform = authyon.platform(() => getCurrentPlatformAccessToken());
304
- const scope = { workspaceId, environmentId, tenantId };
305
- await platform.credentials.list(scope, { search: "ERP", skip: 0, take: 25 });
306
- await platform.credentials.get(scope, credentialId);
307
- await platform.credentials.create(scope, {
330
+ await authyon.environment.tenants.credentials.listPage(tenantId, {
331
+ search: "ERP",
332
+ skip: 0,
333
+ take: 25,
334
+ });
335
+ await authyon.environment.tenants.credentials.get(tenantId, credentialId);
336
+ await authyon.environment.tenants.credentials.create(tenantId, {
308
337
  description: "Leitura",
309
338
  permissions: ["monkeypay:transactions:read"],
310
339
  });
311
- await platform.credentials.updateScopes(scope, credentialId, ["monkeypay:transactions:read"]);
312
- await platform.credentials.updatePermissions(scope, credentialId, {
340
+ await authyon.environment.tenants.credentials.updateScopes(tenantId, credentialId, [
341
+ "monkeypay:transactions:read",
342
+ ]);
343
+ await authyon.environment.tenants.credentials.updatePermissions(tenantId, credentialId, {
313
344
  permissions: ["monkeypay:transactions:read"],
314
345
  });
315
- const rotated = await platform.credentials.rotate(scope, credentialId);
316
- await platform.credentials.revoke(scope, credentialId);
346
+ const rotated = await authyon.environment.tenants.credentials.rotate(tenantId, credentialId);
347
+ await authyon.environment.tenants.credentials.revoke(tenantId, credentialId);
317
348
  ```
318
349
 
319
- Omita `tenantId` de `scope` para gerenciar credenciais do ambiente. Criação e
320
- rotação retornam o segredo uma única vez. Alterar permissões substitui a lista
350
+ Criação e rotação retornam o segredo uma única vez. Alterar permissões substitui a lista
321
351
  completa. A concessão OAuth continua recebendo apenas `clientId`/`clientSecret`;
322
352
  `scopes` não é um parâmetro de redução de acesso na troca de token.
323
353
 
324
- Os endpoints `/env` oferecem criação, listagem e detalhe de credenciais do
325
- tenant. Atualização, rotação e revogação usam os endpoints `/platform` com
326
- **token de usuário da plataforma**, sem fallback para credenciais de máquina.
327
- Se a API exigir `auth.step_up_required`, solicite confirmação de senha na sua
328
- aplicação e chame explicitamente `platform.auth.stepUp(currentPassword)` antes
329
- de tentar a operação novamente. O SDK não repete mutações automaticamente.
330
-
331
- ## Convites e remoção de acesso
332
-
333
- ### Workspace
334
-
335
- ```ts
336
- const team = await platform.workspaces.team(workspaceId);
337
- const invite = await platform.workspaces.members.invite(workspaceId, {
338
- email: "pessoa@example.com",
339
- role: "auditor", // ou "admin", sempre explícito
340
- });
341
- // invite.acceptUrl é sensível: entregue somente à pessoa convidada.
342
- await platform.workspaces.invites.revoke(workspaceId, invite.inviteId);
343
- await platform.workspaces.members.changeRole(workspaceId, memberId, "auditor");
344
- await platform.workspaces.members.remove(workspaceId, memberId);
345
- ```
346
-
347
- `memberId` vem de `team.members`, e não é `userId`. O proprietário tem
348
- `memberId: null`; a API protege proprietário, acesso próprio e permissões de
349
- administração. `workspaces.invites.create` é um alias para `members.invite`.
350
- Convites pendentes ficam em `team.pendingInvites`; revogar o convite invalida o
351
- link. Para retirar acesso após aceite, remova o membro.
352
-
353
- A pessoa convidada pode consultar/aceitar o convite por uma rota server-side:
354
-
355
- ```ts
356
- const preview = await authyon.workspaceInvites.preview(invitationToken);
357
- await authyon.workspaceInvites.accept(invitationToken, {
358
- name: "Pessoa",
359
- password: registrationPassword,
360
- });
361
- ```
362
-
363
- Esses métodos não enviam token de usuário nem credenciais de ambiente. Nome e
364
- senha são necessários quando `preview.requiresRegistration` for verdadeiro;
365
- para uma conta existente, use `accept(invitationToken)`.
354
+ Todas as operações usam os endpoints externos `/env` com a credencial de
355
+ ambiente configurada no cliente. O SDK não repete mutações automaticamente.
366
356
 
367
- ### Tenant
357
+ ## Membros do tenant
368
358
 
369
359
  ```ts
370
360
  const user = authyon.user(() => getCurrentUserAccessToken());
@@ -379,9 +369,6 @@ await user.tenants.members.remove(tenantId, userId);
379
369
  await authyon.environment.tenants.members.add(tenantId, userId, ["reader"]);
380
370
  await authyon.environment.tenants.members.remove(tenantId, userId);
381
371
  // Os métodos tenant(credentials).members.add/remove existentes continuam disponíveis.
382
- // Administração com sessão da plataforma:
383
- await platform.tenants.members.add(scope, userId, ["reader"]);
384
- await platform.tenants.members.remove(scope, userId);
385
372
  ```
386
373
 
387
374
  Configure `envKey` para `user()`. O convite de tenant associa um usuário já
@@ -392,8 +379,8 @@ atendendo esse fluxo. Nunca importe `@authyon/server` no browser.
392
379
 
393
380
  ## Compatibilidade e segurança do transporte
394
381
 
395
- Os métodos anteriores permanecem disponíveis. As novas chamadas exigem os
396
- endpoints atuais da API e a migração `ClientCredentialMetadata` para metadados
382
+ As chamadas exigem os endpoints externos atuais da API e a migração
383
+ `ClientCredentialMetadata` para metadados
397
384
  persistidos. O SDK não altera o banco nem publica uma versão automaticamente.
398
385
 
399
386
  O adaptador Fetch agora rejeita redirects para evitar reenviar tokens/segredos;
@@ -1,4 +1,4 @@
1
- import { x as JwksTokenVerifier, A as AuthyonServerClient } from './authyonServerClient-t82mwTws.cjs';
1
+ import { G as JwksTokenVerifier, A as AuthyonServerClient } from './authyonServerClient-DmNnjw4z.cjs';
2
2
 
3
3
  type AbilitySubject = string | Record<string, unknown>;
4
4
  type AbilityConditions = Record<string, unknown>;
@@ -1,4 +1,4 @@
1
- import { x as JwksTokenVerifier, A as AuthyonServerClient } from './authyonServerClient-t82mwTws.js';
1
+ import { G as JwksTokenVerifier, A as AuthyonServerClient } from './authyonServerClient-DmNnjw4z.js';
2
2
 
3
3
  type AbilitySubject = string | Record<string, unknown>;
4
4
  type AbilityConditions = Record<string, unknown>;
@@ -401,14 +401,6 @@ type CreateCredentialInput = CredentialPermissionsInput & {
401
401
  description?: string;
402
402
  lifetimeDays?: number | null;
403
403
  };
404
- interface CredentialScope {
405
- workspaceId: string;
406
- environmentId: string;
407
- tenantId?: string;
408
- }
409
- interface TenantManagementScope extends CredentialScope {
410
- tenantId: string;
411
- }
412
404
  interface CredentialCreator {
413
405
  id: string | null;
414
406
  type: string;
@@ -424,64 +416,6 @@ interface CredentialDetail extends TenantCredentialSummary {
424
416
  lifetimeSeconds: number | null;
425
417
  accessTokenLifetimeSeconds: number;
426
418
  }
427
- type WorkspaceRole = "admin" | "auditor";
428
- interface WorkspaceMember {
429
- memberId: string | null;
430
- userId: string;
431
- email: string;
432
- name: string;
433
- role: string;
434
- isOwner: boolean;
435
- isSelf: boolean;
436
- invitedByName: string | null;
437
- joinedAt: string;
438
- lastLoginAt: string | null;
439
- }
440
- interface WorkspaceInvite {
441
- id: string;
442
- email: string;
443
- role: string;
444
- invitedByName: string | null;
445
- createdAt: string;
446
- expiresAt: string;
447
- }
448
- interface WorkspaceTeam {
449
- workspaceId: string;
450
- workspaceName: string;
451
- callerRole: string;
452
- canManage: boolean;
453
- members: WorkspaceMember[];
454
- pendingInvites: WorkspaceInvite[];
455
- }
456
- interface InviteWorkspaceMemberInput {
457
- email: string;
458
- role: WorkspaceRole;
459
- }
460
- interface WorkspaceInviteIssued {
461
- inviteId: string;
462
- email: string;
463
- role: string;
464
- /** Sensitive bearer link returned at issuance. Do not log or persist in public storage. */
465
- acceptUrl: string;
466
- expiresAt: string;
467
- }
468
- interface WorkspaceInvitePreview {
469
- workspaceName: string;
470
- email: string;
471
- role: string;
472
- expiresAt: string;
473
- requiresRegistration: boolean;
474
- }
475
- interface WorkspaceInviteAccepted {
476
- workspaceId: string;
477
- workspaceName: string;
478
- role: string;
479
- accountCreated: boolean;
480
- }
481
- interface AcceptWorkspaceInviteInput {
482
- name?: string;
483
- password?: string;
484
- }
485
419
  interface InviteTenantMemberInput {
486
420
  email: string;
487
421
  roles?: string[];
@@ -508,51 +442,107 @@ interface JsonRequestOptions {
508
442
 
509
443
  type ManagementRequest = <T>(path: string, options?: JsonRequestOptions) => Promise<T>;
510
444
 
511
- /** Platform user administration. Never falls back to an environment machine token. */
512
- declare class PlatformScopedClient {
513
- #private;
514
- /** @hidden */
515
- constructor(request: ManagementRequest, token: AccessTokenSource);
516
- readonly credentials: {
517
- list: (scope: CredentialScope, options?: CredentialListOptions) => Promise<Paged<TenantCredentialSummary>>;
518
- get: (scope: CredentialScope, credentialId: string) => Promise<CredentialDetail>;
519
- create: (scope: CredentialScope, input: CreateCredentialInput) => Promise<TenantCredentialIssued>;
520
- updatePermissions: (scope: CredentialScope, credentialId: string, input: CredentialPermissionsInput) => Promise<void>;
521
- updateScopes: (scope: CredentialScope, credentialId: string, scopes: readonly string[]) => Promise<void>;
522
- /** Returns a new secret once. API may require an explicit step-up first. */
523
- rotate: (scope: CredentialScope, credentialId: string) => Promise<TenantCredentialIssued>;
524
- revoke: (scope: CredentialScope, credentialId: string) => Promise<void>;
525
- };
526
- readonly workspaces: {
527
- team: (workspaceId: string) => Promise<WorkspaceTeam>;
528
- members: {
529
- invite: (workspaceId: string, input: InviteWorkspaceMemberInput) => Promise<WorkspaceInviteIssued>;
530
- /** memberId comes from team.members; it is not the platform userId. */
531
- remove: (workspaceId: string, memberId: string) => Promise<void>;
532
- changeRole: (workspaceId: string, memberId: string, role: WorkspaceRole) => Promise<void>;
533
- };
534
- invites: {
535
- create: (workspaceId: string, input: InviteWorkspaceMemberInput) => Promise<WorkspaceInviteIssued>;
536
- revoke: (workspaceId: string, inviteId: string) => Promise<void>;
537
- };
538
- };
539
- readonly tenants: {
540
- members: {
541
- list: (scope: TenantManagementScope, options?: PaginationOptions) => Promise<EnvironmentUser[]>;
542
- add: (scope: TenantManagementScope, userId: string, roles?: string[]) => Promise<void>;
543
- remove: (scope: TenantManagementScope, userId: string) => Promise<void>;
544
- };
545
- };
546
- readonly auth: {
547
- /** Explicitly confirms the current platform session; passwords are not retained. */
548
- stepUp: (currentPassword: string) => Promise<void>;
445
+ /** Lifecycle of a transaction-bound financial authorization. */
446
+ type FinancialAuthorizationStatus = "pending" | "approved" | "denied" | "consumed" | "expired";
447
+ /**
448
+ * The transaction the customer approves. The API hashes a canonical form of
449
+ * these fields; `consume()` must resend exactly the same values (amount is
450
+ * normalized to four decimal places, metadata keys are sorted).
451
+ */
452
+ interface FinancialTransaction {
453
+ /** Business action, e.g. `"pix.transfer"`. Max 100 characters. */
454
+ action: string;
455
+ /** Positive amount, up to 15 integer digits and 4 decimal places. */
456
+ amount: number;
457
+ /** ISO 4217 currency code, e.g. `"BRL"`. */
458
+ currency: string;
459
+ /** Human-readable beneficiary shown to the customer. Max 256 characters. */
460
+ beneficiary: string;
461
+ /** Optional JSON object bound into the hash (max 16 KiB). */
462
+ metadata?: Record<string, unknown>;
463
+ }
464
+ /** Evidence of how the customer proved their identity when approving. */
465
+ interface FinancialAssurance {
466
+ /** `urn:authyon:loa:3` (passkey) or `urn:authyon:loa:2` (authenticator code). */
467
+ acr: string;
468
+ /** Authentication methods, e.g. `["pwd", "otp"]` or `["pwd", "webauthn"]`. */
469
+ amr: string[];
470
+ /** When the second factor was verified (ISO 8601). */
471
+ authTime: string;
472
+ }
473
+ interface FinancialAuthorization {
474
+ id: string;
475
+ status: FinancialAuthorizationStatus;
476
+ subjectId: string;
477
+ tenantId?: string | null;
478
+ action: string;
479
+ amount: number;
480
+ currency: string;
481
+ beneficiary: string;
482
+ /** SHA-256 (hex) of the canonical transaction. */
483
+ transactionHash: string;
484
+ createdAt: string;
485
+ expiresAt: string;
486
+ decidedAt?: string | null;
487
+ consumedAt?: string | null;
488
+ /** Full canonical transaction — returned only to the customer (subject) view. */
489
+ transaction?: FinancialTransaction | null;
490
+ /** Present once approved. */
491
+ assurance?: FinancialAssurance | null;
492
+ }
493
+ /** Inline second factor sent with `confirm()`. */
494
+ type ConfirmFinancialAuthorizationInput = {
495
+ method: "authenticator";
496
+ /** Six-digit code from the customer's authenticator app. */
497
+ code: string;
498
+ } | {
499
+ method: "webauthn";
500
+ /** Assertion for the options returned by `webauthnOptions()`. */
501
+ webAuthn: {
502
+ ceremonyToken: string;
503
+ /** JSON-serialized `PublicKeyCredential` from `navigator.credentials.get()`. */
504
+ assertionJson: string;
549
505
  };
506
+ };
507
+ /** Passkey assertion options for approving one authorization. */
508
+ interface FinancialWebAuthnOptions {
509
+ ceremonyToken: string;
510
+ /** JSON `PublicKeyCredentialRequestOptions` to pass to `navigator.credentials.get()`. */
511
+ optionsJson: string;
550
512
  }
513
+
514
+ /** Sends a request already authenticated as the customer (end-user bearer). */
515
+ type SubjectRequest = <T>(path: string, options?: JsonRequestOptions) => Promise<T>;
516
+ /** Customer-side operations on a financial authorization (`/auth/authorizations`). */
517
+ declare function subjectFinancialAuthorizations(request: SubjectRequest): {
518
+ /** GET /auth/authorizations/{id} — the pending transaction, to show before asking for the code. */
519
+ get: (id: string) => Promise<FinancialAuthorization>;
520
+ /** POST /auth/authorizations/{id}/webauthn/options — passkey options for approving this authorization. */
521
+ webauthnOptions: (id: string) => Promise<FinancialWebAuthnOptions>;
522
+ /**
523
+ * POST /auth/authorizations/{id}/confirm — approves the transaction.
524
+ *
525
+ * Pass the authenticator code or passkey assertion to verify the second
526
+ * factor inline (recommended). Without `input`, the session itself must
527
+ * have used a passkey or authenticator code within the last 5 minutes,
528
+ * otherwise the API answers `step_up_required`.
529
+ */
530
+ confirm: (id: string, input?: ConfirmFinancialAuthorizationInput) => Promise<FinancialAuthorization>;
531
+ /** POST /auth/authorizations/{id}/reject — the customer declines the transaction. */
532
+ reject: (id: string) => Promise<FinancialAuthorization>;
533
+ };
534
+
551
535
  /** End-user operations require a user token and the environment publishable key. */
552
536
  declare class UserScopedClient {
553
537
  #private;
554
538
  /** @hidden */
555
539
  constructor(request: ManagementRequest, token: AccessTokenSource);
540
+ /**
541
+ * Customer-side approval of a financial authorization, for backends (BFF)
542
+ * that hold the customer's access token: `get`, `webauthnOptions`,
543
+ * `confirm`, `reject`.
544
+ */
545
+ readonly financialAuthorizations: ReturnType<typeof subjectFinancialAuthorizations>;
556
546
  readonly tenants: {
557
547
  members: {
558
548
  list: (tenantId: string, options?: PaginationOptions) => Promise<TenantMemberPage>;
@@ -562,13 +552,29 @@ declare class UserScopedClient {
562
552
  };
563
553
  };
564
554
  }
565
- /** Anonymous invite endpoints: the invitation token itself authorizes these requests. */
566
- declare class WorkspaceInvitesClient {
567
- #private;
568
- /** @hidden */
569
- constructor(request: ManagementRequest);
570
- preview(token: string): Promise<WorkspaceInvitePreview>;
571
- accept(token: string, input?: AcceptWorkspaceInviteInput): Promise<WorkspaceInviteAccepted>;
555
+
556
+ /** POST /env/authorizations — a transaction awaiting the customer's approval. */
557
+ interface CreateFinancialAuthorizationInput extends FinancialTransaction {
558
+ /** Environment user who must approve. */
559
+ subjectId: string;
560
+ /** Restrict approval to a session in this tenant. */
561
+ tenantId?: string;
562
+ /** Lifetime in seconds, clamped to 60–600. Default 300. */
563
+ expiresInSeconds?: number;
564
+ /**
565
+ * Sent as the `Idempotency-Key` header (max 128 chars). Retrying with the
566
+ * same key and transaction returns the same authorization; the same key
567
+ * with a different transaction fails with `idempotency_conflict`.
568
+ */
569
+ idempotencyKey: string;
570
+ }
571
+ /** POST /env/authorizations/{id}/consume — single-use redemption result. */
572
+ interface ConsumedFinancialAuthorization {
573
+ id: string;
574
+ status: "consumed";
575
+ consumedAt: string;
576
+ transactionHash: string;
577
+ assurance: FinancialAssurance | null;
572
578
  }
573
579
 
574
580
  interface ClientRequestContext {
@@ -682,11 +688,8 @@ declare class AuthyonServerClient {
682
688
  * "the token's tenant" rather than one you pass by id.
683
689
  */
684
690
  tenant(credentials: ClientCredentials): TenantScopedClient;
685
- /** Uses only the supplied platform-user access token. */
686
- platform(token: AccessTokenSource): PlatformScopedClient;
687
691
  /** Uses an end-user token; the configured environment key selects the environment. */
688
692
  user(token: AccessTokenSource): UserScopedClient;
689
- readonly workspaceInvites: WorkspaceInvitesClient;
690
693
  readonly environment: {
691
694
  users: {
692
695
  /** GET /env/users — paginated list of users in the environment. */
@@ -816,6 +819,27 @@ declare class AuthyonServerClient {
816
819
  /** GET /permissions/reserved — reserved permission names you can't redefine. */
817
820
  reserved: () => Promise<ReservedPermissions>;
818
821
  };
822
+ /**
823
+ * Transaction-bound step-up for financial operations. The environment
824
+ * credential needs the `authyon:financial:authorize` scope.
825
+ *
826
+ * 1. `create()` the authorization for the transaction and the customer.
827
+ * 2. The customer approves it with their authenticator code or passkey
828
+ * (`@authyon/auth` → `financialAuthorizations.confirm`).
829
+ * 3. `consume()` it with the same transaction right before executing it.
830
+ */
831
+ financialAuthorizations: {
832
+ /** POST /env/authorizations — registers a transaction awaiting the customer's approval. */
833
+ create: (input: CreateFinancialAuthorizationInput) => Promise<FinancialAuthorization>;
834
+ /** GET /env/authorizations/{id} — current status and, once approved, the assurance evidence. */
835
+ get: (id: string) => Promise<FinancialAuthorization>;
836
+ /**
837
+ * POST /env/authorizations/{id}/consume — redeems an approved
838
+ * authorization exactly once. Resend the same transaction given to
839
+ * `create()`; any difference fails with `transaction_mismatch`.
840
+ */
841
+ consume: (id: string, transaction: FinancialTransaction) => Promise<ConsumedFinancialAuthorization>;
842
+ };
819
843
  audit: {
820
844
  /** GET /env/audit — paginated list of the environment's audit events. */
821
845
  list: (params?: PaginationOptions) => Promise<Paged<AuditEvent>>;
@@ -897,4 +921,4 @@ declare class TenantScopedClient {
897
921
  /** Convenience factory: `const authyon = createClient({ clientId, clientSecret })`. */
898
922
  declare function createClient(options?: AuthyonServerClientOptions): AuthyonServerClient;
899
923
 
900
- export { type TenantMemberPage as $, AuthyonServerClient as A, type Organization as B, type ClientCredentials as C, type PaginationOptions as D, type EnvironmentUser as E, FetchHttpAdapter as F, type Permission as G, type HttpAdapter as H, type IntrospectResult as I, type JsonWebKeySet as J, type PermissionsByRole as K, LoggingHttpAdapter as L, PlatformScopedClient as M, type Role as N, type OpenIdConfiguration as O, type Paged as P, type RoleGrant as Q, type ReservedPermissions as R, type RoleInput as S, type RoleList as T, type RolePermissions as U, type SafeJwtAlgorithm as V, type TenantClientValidationResult as W, type TenantCredentialIssued as X, type TenantCredentialSummary as Y, type TenantManagementScope as Z, type TenantMember as _, type HttpLoggerOptions as a, type TenantMembership as a0, TenantScopedClient as a1, type TokenResult as a2, TokenVerificationError as a3, type TokenVerificationErrorCode as a4, type UpdateOrganizationInput as a5, type User as a6, UserScopedClient as a7, type ValidateResult as a8, type VerifiedAccessToken as a9, type WorkspaceInvite as aa, type WorkspaceInviteAccepted as ab, type WorkspaceInviteIssued as ac, type WorkspaceInvitePreview as ad, WorkspaceInvitesClient as ae, type WorkspaceMember as af, type WorkspaceRole as ag, type WorkspaceTeam as ah, createClient as ai, normalizeClientIp as aj, type AcceptWorkspaceInviteInput as b, type AccessTokenSource as c, type AuditEvent as d, type AuthyonJwksDiscoveryOptions as e, type AuthyonJwtClaims as f, type AuthyonServerClientOptions as g, type ClientRequestContext as h, type CreateCredentialInput as i, type CreateOrganizationInput as j, type CreatePermissionInput as k, type CreateTenantCredentialInput as l, type CreateUserInput as m, type CredentialCreator as n, type CredentialDetail as o, type CredentialListOptions as p, type CredentialPermissionsInput as q, type CredentialScope as r, type HttpAdapterRequest as s, type HttpLogEvent as t, type HttpLogger as u, type InviteTenantMemberInput as v, type InviteWorkspaceMemberInput as w, JwksTokenVerifier as x, type JwksTokenVerifierOptions as y, type LoginActivity as z };
924
+ export { type TenantCredentialIssued as $, AuthyonServerClient as A, type HttpLogger as B, type ClientCredentials as C, type InviteTenantMemberInput as D, type EnvironmentUser as E, FetchHttpAdapter as F, JwksTokenVerifier as G, type HttpAdapter as H, type IntrospectResult as I, type JsonWebKeySet as J, type JwksTokenVerifierOptions as K, LoggingHttpAdapter as L, type LoginActivity as M, type Organization as N, type OpenIdConfiguration as O, type Paged as P, type PaginationOptions as Q, type Permission as R, type PermissionsByRole as S, type ReservedPermissions as T, type Role as U, type RoleGrant as V, type RoleInput as W, type RoleList as X, type RolePermissions as Y, type SafeJwtAlgorithm as Z, type TenantClientValidationResult as _, type HttpLoggerOptions as a, type TenantCredentialSummary as a0, type TenantMember as a1, type TenantMemberPage as a2, type TenantMembership as a3, TenantScopedClient as a4, type TokenResult as a5, TokenVerificationError as a6, type TokenVerificationErrorCode as a7, type UpdateOrganizationInput as a8, type User as a9, UserScopedClient as aa, type ValidateResult as ab, type VerifiedAccessToken as ac, createClient as ad, normalizeClientIp as ae, type AccessTokenSource as b, type AuditEvent as c, type AuthyonJwksDiscoveryOptions as d, type AuthyonJwtClaims as e, type AuthyonServerClientOptions as f, type ClientRequestContext as g, type ConfirmFinancialAuthorizationInput as h, type ConsumedFinancialAuthorization as i, type CreateCredentialInput as j, type CreateFinancialAuthorizationInput as k, type CreateOrganizationInput as l, type CreatePermissionInput as m, type CreateTenantCredentialInput as n, type CreateUserInput as o, type CredentialCreator as p, type CredentialDetail as q, type CredentialListOptions as r, type CredentialPermissionsInput as s, type FinancialAssurance as t, type FinancialAuthorization as u, type FinancialAuthorizationStatus as v, type FinancialTransaction as w, type FinancialWebAuthnOptions as x, type HttpAdapterRequest as y, type HttpLogEvent as z };