@arbidocs/client 0.4.128 → 0.4.130

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.d.cts CHANGED
@@ -3694,7 +3694,10 @@ interface paths {
3694
3694
  };
3695
3695
  /**
3696
3696
  * List Deployment Users
3697
- * @description The people registered on this deployment (not agents), with their type, by email. Deployment admins only.
3697
+ * @description The people registered on this deployment, with their type, by email. Deployment admins only.
3698
+ *
3699
+ * People only: no agents, no service accounts (flagged, or on the deployment's own domain) and no test accounts
3700
+ * (``ci+…@arbi.city``, ``agent-…@…``), by the same rule as the admin notifications.
3698
3701
  */
3699
3702
  get: operations['list_deployment_users'];
3700
3703
  put?: never;
@@ -3728,6 +3731,28 @@ interface paths {
3728
3731
  patch?: never;
3729
3732
  trace?: never;
3730
3733
  };
3734
+ '/v1/deployment/usage': {
3735
+ parameters: {
3736
+ query?: never;
3737
+ header?: never;
3738
+ path?: never;
3739
+ cookie?: never;
3740
+ };
3741
+ /**
3742
+ * Get Deployment Usage
3743
+ * @description Storage used (GB) and internal users, measured on this deployment (cached a minute). Deployment admins only.
3744
+ *
3745
+ * 503 when it can't be measured right now.
3746
+ */
3747
+ get: operations['get_deployment_usage'];
3748
+ put?: never;
3749
+ post?: never;
3750
+ delete?: never;
3751
+ options?: never;
3752
+ head?: never;
3753
+ patch?: never;
3754
+ trace?: never;
3755
+ };
3731
3756
  '/v1/tag/': {
3732
3757
  parameters: {
3733
3758
  query?: never;
@@ -13729,6 +13754,18 @@ interface components {
13729
13754
  /** External Ids */
13730
13755
  external_ids: string[];
13731
13756
  };
13757
+ /** DeploymentUsageResponse */
13758
+ DeploymentUsageResponse: {
13759
+ /** Storage Used Gb */
13760
+ storage_used_gb: number;
13761
+ /** Internal Users */
13762
+ internal_users: number;
13763
+ /**
13764
+ * As Of
13765
+ * Format: date-time
13766
+ */
13767
+ as_of: string;
13768
+ };
13732
13769
  /** DeploymentUserResponse */
13733
13770
  DeploymentUserResponse: {
13734
13771
  /** External Id */
@@ -13740,6 +13777,8 @@ interface components {
13740
13777
  /** Family Name */
13741
13778
  family_name?: string | null;
13742
13779
  user_type: components['schemas']['UserRole'];
13780
+ /** Registered At */
13781
+ registered_at?: string | null;
13743
13782
  };
13744
13783
  /**
13745
13784
  * DerivedFrom
@@ -17304,7 +17343,7 @@ interface components {
17304
17343
  * Type is self-descriptive, no need to parse content field.
17305
17344
  * @enum {string}
17306
17345
  */
17307
- NotificationType: 'workspaceuser_added_owner' | 'workspaceuser_added_collaborator' | 'workspaceuser_added_guest' | 'workspaceuser_removed' | 'workspaceuser_updated_owner' | 'workspaceuser_updated_collaborator' | 'workspaceuser_updated_guest' | 'contact_accepted' | 'signup_reward' | 'referral_reward' | 'box_seat_refused' | 'native_mail_received' | 'mail_draft_ready' | 'email_reply' | 'quota_threshold_50' | 'quota_threshold_90' | 'quota_threshold_100' | 'storage_quota_exceeded' | 'doc_shared' | 'docx_mention' | 'signature_requested' | 'signature_completed' | 'signature_declined' | 'workspace_access_request' | 'conversation_ready' | 'conversation_done' | 'conversation_notified' | 'workflow_failed' | 'agent_input_requested' | 'workflow_completed' | 'workflow_signal' | 'step_ready' | 'task_started' | 'task_completed' | 'mailbox_sync_complete' | 'drive_sync_complete' | 'activity' | 'mention' | 'thread_reply' | 'document_activity' | 'document_processed' | 'call_missed' | 'calendar_invite' | 'calendar_update' | 'calendar_cancel' | 'calendar_reply' | 'calendar_counter' | 'calendar_reminder' | 'calendar_share';
17346
+ NotificationType: 'workspaceuser_added_owner' | 'workspaceuser_added_collaborator' | 'workspaceuser_added_guest' | 'workspaceuser_removed' | 'workspaceuser_updated_owner' | 'workspaceuser_updated_collaborator' | 'workspaceuser_updated_guest' | 'contact_accepted' | 'signup_reward' | 'referral_reward' | 'box_seat_refused' | 'deployment_user_invited' | 'deployment_user_registered' | 'native_mail_received' | 'mail_draft_ready' | 'email_reply' | 'quota_threshold_50' | 'quota_threshold_90' | 'quota_threshold_100' | 'storage_quota_exceeded' | 'doc_shared' | 'docx_mention' | 'signature_requested' | 'signature_completed' | 'signature_declined' | 'workspace_access_request' | 'conversation_ready' | 'conversation_done' | 'conversation_notified' | 'workflow_failed' | 'agent_input_requested' | 'workflow_completed' | 'workflow_signal' | 'step_ready' | 'task_started' | 'task_completed' | 'mailbox_sync_complete' | 'drive_sync_complete' | 'activity' | 'mention' | 'thread_reply' | 'document_activity' | 'document_processed' | 'call_missed' | 'calendar_invite' | 'calendar_update' | 'calendar_cancel' | 'calendar_reply' | 'calendar_counter' | 'calendar_reminder' | 'calendar_share';
17308
17347
  /**
17309
17348
  * NotificationUpdate
17310
17349
  * @description Single notification update for bulk PATCH.
@@ -29786,6 +29825,26 @@ interface operations {
29786
29825
  };
29787
29826
  };
29788
29827
  };
29828
+ get_deployment_usage: {
29829
+ parameters: {
29830
+ query?: never;
29831
+ header?: never;
29832
+ path?: never;
29833
+ cookie?: never;
29834
+ };
29835
+ requestBody?: never;
29836
+ responses: {
29837
+ /** @description Successful Response */
29838
+ 200: {
29839
+ headers: {
29840
+ [name: string]: unknown;
29841
+ };
29842
+ content: {
29843
+ 'application/json': components['schemas']['DeploymentUsageResponse'];
29844
+ };
29845
+ };
29846
+ };
29847
+ };
29789
29848
  list_tags: {
29790
29849
  parameters: {
29791
29850
  query?: {
@@ -37664,6 +37723,12 @@ declare function base64ToBytes(base64String: string): Uint8Array;
37664
37723
  * Convert Uint8Array to base64 string
37665
37724
  */
37666
37725
  declare function bytesToBase64(bytes: Uint8Array): string;
37726
+ /**
37727
+ * Unpadded base64url (RFC 4648 §5): safe in URL fragments and query strings.
37728
+ */
37729
+ declare function bytesToBase64Url(bytes: Uint8Array): string;
37730
+ /** Inverse of {@link bytesToBase64Url}. Throws on anything that is not unpadded base64url. */
37731
+ declare function base64UrlToBytes(encoded: string): Uint8Array;
37667
37732
  /**
37668
37733
  * Base64 encode a Uint8Array (for compatibility with existing code)
37669
37734
  */
@@ -37739,6 +37804,17 @@ declare function derivePublicKey(privateKey: Uint8Array): Uint8Array;
37739
37804
  * Used when we have stored Ed25519 keys and need X25519 for encryption
37740
37805
  */
37741
37806
  declare function deriveEncryptionKeypairFromSigning(signingKeyPair: KeyPair): KeyPair;
37807
+ /**
37808
+ * The X25519 encryption keypair of a 64-byte Ed25519 signing secret key (the
37809
+ * libsodium layout: 32-byte seed ‖ 32-byte public key). The caller owns the
37810
+ * returned secret key and should zero it when done.
37811
+ */
37812
+ declare function encryptionKeypairFromSigningKey(signingPrivateKey: Uint8Array): KeyPair;
37813
+ /**
37814
+ * Open a workspace key sealed to the user (`wrapped_key` of `/v1/user/workspaces`)
37815
+ * with the user's Ed25519 signing secret key.
37816
+ */
37817
+ declare function unwrapWorkspaceKey(wrappedKey: string, signingPrivateKey: Uint8Array): Uint8Array;
37742
37818
  /**
37743
37819
  * Generate a random Ed25519 signing keypair.
37744
37820
  * Used for agent accounts that don't derive keys from a password.
@@ -38007,6 +38083,155 @@ declare function wrapIdentityKey(identitySecretKey: Uint8Array, passwordSecretKe
38007
38083
  */
38008
38084
  declare function unwrapIdentityKey(wrapped: string | null | undefined, passwordSecretKey: Uint8Array): Uint8Array;
38009
38085
 
38086
+ /**
38087
+ * Recovery keys.
38088
+ *
38089
+ * The recovery key is the account's 64-byte Ed25519 signing secret key. It reaches the user as a
38090
+ * recovery link, `<origin>/recover?email=…[&sso=1]#KEY=<base64url bytes>` — the key travels in the
38091
+ * URL fragment, which browsers never send to a server — saved to a password manager or downloaded
38092
+ * inside a one-link HTML file.
38093
+ *
38094
+ * For SSO users the key is first wrapped with their Auth0 `sub`, so the link is useless without
38095
+ * also completing the SSO login: `nonce(24) ‖ secretbox(signing key, SHA-256(sub))`, 104 bytes.
38096
+ *
38097
+ * Older recovery files hold the raw bytes (64 plain, 104 SSO-wrapped); both are still accepted.
38098
+ */
38099
+ /** Raw Ed25519 signing secret key. */
38100
+ declare const UNENCRYPTED_RECOVERY_KEY_SIZE = 64;
38101
+ /** 24 (nonce) + 64 (key) + 16 (auth tag). */
38102
+ declare const ENCRYPTED_RECOVERY_KEY_SIZE = 104;
38103
+ /** The error strings of the recovery flow. */
38104
+ declare const RECOVERY_KEY_ERRORS: {
38105
+ readonly INVALID_SIZE: "Invalid recovery key: file must be 64 or 104 bytes";
38106
+ readonly INVALID_FORMAT: "Invalid recovery key format";
38107
+ readonly READ_ERROR: "Failed to read recovery key file";
38108
+ readonly AUTH_FAILED: "Recovery key does not match this account";
38109
+ readonly ENCRYPTED_KEY_REQUIRES_SSO: "This recovery key is encrypted with your SSO identity. Please use SSO login and then click \"Forgot Password\" to use this key.";
38110
+ readonly DECRYPTION_FAILED: "Failed to decrypt recovery key. This key may belong to a different SSO account.";
38111
+ };
38112
+ /** Wrap the signing key with the user's Auth0 `sub` (104 bytes: nonce ‖ secretbox). */
38113
+ declare function encryptRecoveryKey(signingPrivateKey: Uint8Array, auth0Sub: string): Promise<Uint8Array>;
38114
+ /** Unwrap an SSO recovery key. Throws when it belongs to another account or is damaged. */
38115
+ declare function decryptRecoveryKey(encryptedKey: Uint8Array, auth0Sub: string): Promise<Uint8Array>;
38116
+ /** Whether recovery key bytes of this length are SSO-wrapped. */
38117
+ declare function isEncryptedRecoveryKey(byteLength: number): boolean;
38118
+ /** A timestamped name for the downloadable recovery file. */
38119
+ declare function getRecoveryKeyFilename(): string;
38120
+ /** A parsed recovery link. `isEncrypted`: the key is SSO-wrapped and needs the SSO login. */
38121
+ interface ParsedRecoveryUrl {
38122
+ email: string;
38123
+ recoveryKey: Uint8Array;
38124
+ isEncrypted: boolean;
38125
+ }
38126
+ /** Read a recovery link's query and fragment. Null when it carries no email or no valid key. */
38127
+ declare function parseRecoveryUrl(search: string, hash: string): ParsedRecoveryUrl | null;
38128
+ /** What a recovery link or file is made from. With `auth0Sub` the key is SSO-wrapped first. */
38129
+ interface RecoveryKeyParams {
38130
+ signingPrivateKey: Uint8Array;
38131
+ email: string;
38132
+ /** The app origin the link opens, e.g. `window.location.origin`. */
38133
+ origin: string;
38134
+ auth0Sub?: string | null;
38135
+ }
38136
+ /** The recovery link for an account (to save in a password manager, or inside the file). */
38137
+ declare function createRecoveryUrl(params: RecoveryKeyParams): Promise<string>;
38138
+ /** The downloadable recovery file: an HTML page holding the recovery link. */
38139
+ declare function createRecoveryFile(params: RecoveryKeyParams): Promise<{
38140
+ filename: string;
38141
+ html: string;
38142
+ url: string;
38143
+ }>;
38144
+ /** The result of reading an uploaded raw recovery key file. */
38145
+ interface RecoveryKeyValidationResult {
38146
+ valid: boolean;
38147
+ /** The key is SSO-wrapped. */
38148
+ isEncrypted: boolean;
38149
+ /** The raw file bytes (wrapped or not). */
38150
+ data: Uint8Array | null;
38151
+ error?: string;
38152
+ }
38153
+ /** Read an uploaded raw recovery key file: 64 bytes (plain) or 104 (SSO-wrapped). */
38154
+ declare function validateRecoveryKeyFile(file: Blob): Promise<RecoveryKeyValidationResult>;
38155
+
38156
+ /**
38157
+ * Secure mail delivery (`/v1/mail/secure`).
38158
+ *
38159
+ * The sender's browser builds the MIME message and seals it under a fresh random 32-byte message
38160
+ * key: `ciphertext` and `metadata_ciphertext` are each `base64(nonce ‖ secretbox(bytes, key))`. The
38161
+ * key reaches each recipient only in the link fragment (`fragment_key`), and the sender keeps it
38162
+ * sealed to their own X25519 public key (`sender_wrapped_key`). To claim a message the recipient
38163
+ * proves they hold the key (`claim_hash` = hex SHA-256 of it) and re-seals it to themselves.
38164
+ */
38165
+ declare const SECURE_MAIL_KEY_BYTES = 32;
38166
+ /** The encrypted parts of a secure message, as `/secure/send` takes and `/secure/{id}` returns. */
38167
+ interface SecureMailCiphertexts {
38168
+ ciphertext: string;
38169
+ metadata_ciphertext: string;
38170
+ }
38171
+ /** A sealed message plus the key material the send request needs. */
38172
+ interface SealedSecureMail extends SecureMailCiphertexts {
38173
+ /** The message key, base64 — sent to recipients in the link fragment only. */
38174
+ fragment_key: string;
38175
+ /** The message key sealed to the sender. */
38176
+ sender_wrapped_key: string;
38177
+ }
38178
+ /** What the recipient posts to `/secure/{id}/claim`. */
38179
+ interface SecureMailClaim {
38180
+ claim_hash: string;
38181
+ wrapped_key: string;
38182
+ recipient_public_key: string;
38183
+ }
38184
+ /**
38185
+ * Seal a raw MIME message and its JSON metadata under a fresh message key, and seal the key to the
38186
+ * sender. The key is zeroed before returning; only its base64 `fragment_key` remains.
38187
+ */
38188
+ declare function sealSecureMail(raw: Uint8Array, metadata: unknown, senderPublicKey: Uint8Array): Promise<SealedSecureMail>;
38189
+ /** The message key carried in a secure-mail link. Throws when it is not a 32-byte key. */
38190
+ declare function decodeSecureMailKey(fragmentKey: string): Uint8Array;
38191
+ /** Open a secure message. Throws on a wrong key or a tampered part. */
38192
+ declare function openSecureMail<T = unknown>(payload: SecureMailCiphertexts, key: Uint8Array): Promise<{
38193
+ raw: Uint8Array;
38194
+ metadata: T;
38195
+ }>;
38196
+ /** The claim body proving possession of `key` and re-sealing it to the recipient. */
38197
+ declare function secureMailClaim(key: Uint8Array, recipientPublicKey: Uint8Array): Promise<SecureMailClaim>;
38198
+
38199
+ /**
38200
+ * Encryption at rest for offline stores (IndexedDB copies of mail, calendar, …).
38201
+ *
38202
+ * Keys are derived in memory from the user's own X25519 identity key (by default the one the session
38203
+ * store keeps, wrapped by a non-extractable WebCrypto key). Nothing derived here is ever written to disk.
38204
+ *
38205
+ * - `enc`: XSalsa20-Poly1305 (libsodium secretbox) key for record contents; each record gets a fresh
38206
+ * random nonce, stored in front of the ciphertext.
38207
+ * - `index`: keyed BLAKE2b key for blind index values, so ids never appear in plaintext.
38208
+ *
38209
+ * Both are BLAKE2b derivations of the identity secret key, domain-separated by a per-store namespace
38210
+ * (`<namespace>:enc`, `<namespace>:index`), so stores can't read each other's records.
38211
+ */
38212
+
38213
+ interface OfflineSealer {
38214
+ sealBytes(plain: Uint8Array): Promise<Uint8Array>;
38215
+ openBytes(sealed: Uint8Array): Promise<Uint8Array>;
38216
+ sealJson(value: unknown): Promise<Uint8Array>;
38217
+ openJson<T>(sealed: Uint8Array): Promise<T>;
38218
+ /** A keyed hash of `parts`, used as an IndexedDB key so ids never appear in plaintext. */
38219
+ blind(...parts: string[]): Promise<string>;
38220
+ /** Forget the derived keys (sign-out, or the offline data was removed). */
38221
+ forget(): void;
38222
+ }
38223
+ interface OfflineSealerOptions {
38224
+ /** Builds the error thrown when no identity key is unlocked. */
38225
+ locked: () => Error;
38226
+ /**
38227
+ * The identity keypair to derive from; the sealer zeroes its secret key after use. Defaults to
38228
+ * the signed-in session's ({@link getUserEncryptionKeypair}).
38229
+ */
38230
+ keypair?: () => Promise<KeyPair | null>;
38231
+ }
38232
+ /** A sealer for one offline store, namespaced so stores can't read each other's records. */
38233
+ declare function createOfflineSealer(namespace: string, { locked, keypair: getKeypair }: OfflineSealerOptions): OfflineSealer;
38234
+
38010
38235
  /**
38011
38236
  * storage.ts - IndexedDB Storage Module
38012
38237
  *
@@ -38450,4 +38675,4 @@ interface ReopenDeps {
38450
38675
  */
38451
38676
  declare function createWorkspaceReopener(deps: ReopenDeps): () => Promise<boolean>;
38452
38677
 
38453
- export { type $defs, API_PREFIX, type ArbiClient, type ArbiClientOptions, type AuthStateProvider, type AutoReloginMiddlewareConfig, type BearerAuthMiddlewareConfig, CALL_KEY_BYTES, CHAT_KEY_BYTES, type ChangePasswordParams, type ChangePasswordRequest, type ChangePasswordResult, type CryptoProvider, type KeyLoginCredentials, type KeyPair, type LoginCredentials, type LoginParams, type LoginProfile, type LoginProvider, type LoginRequest, type LoginResult, type LoginWithKeyParams, type OnReloginSuccess, type PasswordChangeCredentials, type RegisterParams, type RegisterRequest, type RegisterResult, type RegistrationCredentials, type ReloginDeps, type ReloginHandler, type ReopenDeps, type SessionData, type SessionKeys, type SessionManager, type SessionState, type SessionStorageProvider, type SsoTokenProvider, type TokenProvider, type UserKeypairs, type WebSocketClientMessage, type WebSocketServerMessage, type WorkspaceKeyRefreshProvider, type WorkspaceOpenProvider, type WsAgentDmStatusMessage, type WsAuthMessage, type WsAuthResultMessage, type WsBatchCompleteMessage, type WsChatMessageMessage, type WsChatReadMessage, type WsChatUpdatedMessage, type WsConnectionClosedMessage, type WsConversationMessagePostedMessage, type WsErrorMessage, type WsNotificationResponse, type WsPresenceUpdateMessage, type WsResponseCompleteMessage, type WsTaskUpdateMessage, base64Decode, base64Encode, base64ToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, canPersistSession, changePassword, clearAllData, clearSession, type components, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, decryptWithChatKey, deriveDirectChatKey, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, encryptWithChatKey, generateCallKey, generateChatKey, generateIdentityKeypair, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRegistrationCredentials, generateUserKeypairs, getSession, getUserEncryptionKeypair, hasSession, identityFromLoginResponse, initSodium, initializeDatabase, isMessageType, openSealedCallKey, openSealedChatKey, type operations, parseCallFragment, parseServerMessage, passwordChangeErrorMessage, type paths, prewarmKeyPairs, saveSession, sealCallKey, sealChatKey, sealKeyForSession, sealedBoxDecrypt, sealedBoxEncrypt, signMessage, unlockIdentityWithPassword, unwrapIdentityKey, updateWrappedIdentityKey, type webhooks, wrapIdentityKey };
38678
+ export { type $defs, API_PREFIX, type ArbiClient, type ArbiClientOptions, type AuthStateProvider, type AutoReloginMiddlewareConfig, type BearerAuthMiddlewareConfig, CALL_KEY_BYTES, CHAT_KEY_BYTES, type ChangePasswordParams, type ChangePasswordRequest, type ChangePasswordResult, type CryptoProvider, ENCRYPTED_RECOVERY_KEY_SIZE, type KeyLoginCredentials, type KeyPair, type LoginCredentials, type LoginParams, type LoginProfile, type LoginProvider, type LoginRequest, type LoginResult, type LoginWithKeyParams, type OfflineSealer, type OfflineSealerOptions, type OnReloginSuccess, type ParsedRecoveryUrl, type PasswordChangeCredentials, RECOVERY_KEY_ERRORS, type RecoveryKeyParams, type RecoveryKeyValidationResult, type RegisterParams, type RegisterRequest, type RegisterResult, type RegistrationCredentials, type ReloginDeps, type ReloginHandler, type ReopenDeps, SECURE_MAIL_KEY_BYTES, type SealedSecureMail, type SecureMailCiphertexts, type SecureMailClaim, type SessionData, type SessionKeys, type SessionManager, type SessionState, type SessionStorageProvider, type SsoTokenProvider, type TokenProvider, UNENCRYPTED_RECOVERY_KEY_SIZE, type UserKeypairs, type WebSocketClientMessage, type WebSocketServerMessage, type WorkspaceKeyRefreshProvider, type WorkspaceOpenProvider, type WsAgentDmStatusMessage, type WsAuthMessage, type WsAuthResultMessage, type WsBatchCompleteMessage, type WsChatMessageMessage, type WsChatReadMessage, type WsChatUpdatedMessage, type WsConnectionClosedMessage, type WsConversationMessagePostedMessage, type WsErrorMessage, type WsNotificationResponse, type WsPresenceUpdateMessage, type WsResponseCompleteMessage, type WsTaskUpdateMessage, base64Decode, base64Encode, base64ToBytes, base64UrlToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, bytesToBase64Url, canPersistSession, changePassword, clearAllData, clearSession, type components, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createOfflineSealer, createRecoveryFile, createRecoveryUrl, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decodeSecureMailKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, decryptRecoveryKey, decryptWithChatKey, deriveDirectChatKey, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, encryptRecoveryKey, encryptWithChatKey, encryptionKeypairFromSigningKey, generateCallKey, generateChatKey, generateIdentityKeypair, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRegistrationCredentials, generateUserKeypairs, getRecoveryKeyFilename, getSession, getUserEncryptionKeypair, hasSession, identityFromLoginResponse, initSodium, initializeDatabase, isEncryptedRecoveryKey, isMessageType, openSealedCallKey, openSealedChatKey, openSecureMail, type operations, parseCallFragment, parseRecoveryUrl, parseServerMessage, passwordChangeErrorMessage, type paths, prewarmKeyPairs, saveSession, sealCallKey, sealChatKey, sealKeyForSession, sealSecureMail, sealedBoxDecrypt, sealedBoxEncrypt, secureMailClaim, signMessage, unlockIdentityWithPassword, unwrapIdentityKey, unwrapWorkspaceKey, updateWrappedIdentityKey, validateRecoveryKeyFile, type webhooks, wrapIdentityKey };
package/dist/index.d.ts CHANGED
@@ -3694,7 +3694,10 @@ interface paths {
3694
3694
  };
3695
3695
  /**
3696
3696
  * List Deployment Users
3697
- * @description The people registered on this deployment (not agents), with their type, by email. Deployment admins only.
3697
+ * @description The people registered on this deployment, with their type, by email. Deployment admins only.
3698
+ *
3699
+ * People only: no agents, no service accounts (flagged, or on the deployment's own domain) and no test accounts
3700
+ * (``ci+…@arbi.city``, ``agent-…@…``), by the same rule as the admin notifications.
3698
3701
  */
3699
3702
  get: operations['list_deployment_users'];
3700
3703
  put?: never;
@@ -3728,6 +3731,28 @@ interface paths {
3728
3731
  patch?: never;
3729
3732
  trace?: never;
3730
3733
  };
3734
+ '/v1/deployment/usage': {
3735
+ parameters: {
3736
+ query?: never;
3737
+ header?: never;
3738
+ path?: never;
3739
+ cookie?: never;
3740
+ };
3741
+ /**
3742
+ * Get Deployment Usage
3743
+ * @description Storage used (GB) and internal users, measured on this deployment (cached a minute). Deployment admins only.
3744
+ *
3745
+ * 503 when it can't be measured right now.
3746
+ */
3747
+ get: operations['get_deployment_usage'];
3748
+ put?: never;
3749
+ post?: never;
3750
+ delete?: never;
3751
+ options?: never;
3752
+ head?: never;
3753
+ patch?: never;
3754
+ trace?: never;
3755
+ };
3731
3756
  '/v1/tag/': {
3732
3757
  parameters: {
3733
3758
  query?: never;
@@ -13729,6 +13754,18 @@ interface components {
13729
13754
  /** External Ids */
13730
13755
  external_ids: string[];
13731
13756
  };
13757
+ /** DeploymentUsageResponse */
13758
+ DeploymentUsageResponse: {
13759
+ /** Storage Used Gb */
13760
+ storage_used_gb: number;
13761
+ /** Internal Users */
13762
+ internal_users: number;
13763
+ /**
13764
+ * As Of
13765
+ * Format: date-time
13766
+ */
13767
+ as_of: string;
13768
+ };
13732
13769
  /** DeploymentUserResponse */
13733
13770
  DeploymentUserResponse: {
13734
13771
  /** External Id */
@@ -13740,6 +13777,8 @@ interface components {
13740
13777
  /** Family Name */
13741
13778
  family_name?: string | null;
13742
13779
  user_type: components['schemas']['UserRole'];
13780
+ /** Registered At */
13781
+ registered_at?: string | null;
13743
13782
  };
13744
13783
  /**
13745
13784
  * DerivedFrom
@@ -17304,7 +17343,7 @@ interface components {
17304
17343
  * Type is self-descriptive, no need to parse content field.
17305
17344
  * @enum {string}
17306
17345
  */
17307
- NotificationType: 'workspaceuser_added_owner' | 'workspaceuser_added_collaborator' | 'workspaceuser_added_guest' | 'workspaceuser_removed' | 'workspaceuser_updated_owner' | 'workspaceuser_updated_collaborator' | 'workspaceuser_updated_guest' | 'contact_accepted' | 'signup_reward' | 'referral_reward' | 'box_seat_refused' | 'native_mail_received' | 'mail_draft_ready' | 'email_reply' | 'quota_threshold_50' | 'quota_threshold_90' | 'quota_threshold_100' | 'storage_quota_exceeded' | 'doc_shared' | 'docx_mention' | 'signature_requested' | 'signature_completed' | 'signature_declined' | 'workspace_access_request' | 'conversation_ready' | 'conversation_done' | 'conversation_notified' | 'workflow_failed' | 'agent_input_requested' | 'workflow_completed' | 'workflow_signal' | 'step_ready' | 'task_started' | 'task_completed' | 'mailbox_sync_complete' | 'drive_sync_complete' | 'activity' | 'mention' | 'thread_reply' | 'document_activity' | 'document_processed' | 'call_missed' | 'calendar_invite' | 'calendar_update' | 'calendar_cancel' | 'calendar_reply' | 'calendar_counter' | 'calendar_reminder' | 'calendar_share';
17346
+ NotificationType: 'workspaceuser_added_owner' | 'workspaceuser_added_collaborator' | 'workspaceuser_added_guest' | 'workspaceuser_removed' | 'workspaceuser_updated_owner' | 'workspaceuser_updated_collaborator' | 'workspaceuser_updated_guest' | 'contact_accepted' | 'signup_reward' | 'referral_reward' | 'box_seat_refused' | 'deployment_user_invited' | 'deployment_user_registered' | 'native_mail_received' | 'mail_draft_ready' | 'email_reply' | 'quota_threshold_50' | 'quota_threshold_90' | 'quota_threshold_100' | 'storage_quota_exceeded' | 'doc_shared' | 'docx_mention' | 'signature_requested' | 'signature_completed' | 'signature_declined' | 'workspace_access_request' | 'conversation_ready' | 'conversation_done' | 'conversation_notified' | 'workflow_failed' | 'agent_input_requested' | 'workflow_completed' | 'workflow_signal' | 'step_ready' | 'task_started' | 'task_completed' | 'mailbox_sync_complete' | 'drive_sync_complete' | 'activity' | 'mention' | 'thread_reply' | 'document_activity' | 'document_processed' | 'call_missed' | 'calendar_invite' | 'calendar_update' | 'calendar_cancel' | 'calendar_reply' | 'calendar_counter' | 'calendar_reminder' | 'calendar_share';
17308
17347
  /**
17309
17348
  * NotificationUpdate
17310
17349
  * @description Single notification update for bulk PATCH.
@@ -29786,6 +29825,26 @@ interface operations {
29786
29825
  };
29787
29826
  };
29788
29827
  };
29828
+ get_deployment_usage: {
29829
+ parameters: {
29830
+ query?: never;
29831
+ header?: never;
29832
+ path?: never;
29833
+ cookie?: never;
29834
+ };
29835
+ requestBody?: never;
29836
+ responses: {
29837
+ /** @description Successful Response */
29838
+ 200: {
29839
+ headers: {
29840
+ [name: string]: unknown;
29841
+ };
29842
+ content: {
29843
+ 'application/json': components['schemas']['DeploymentUsageResponse'];
29844
+ };
29845
+ };
29846
+ };
29847
+ };
29789
29848
  list_tags: {
29790
29849
  parameters: {
29791
29850
  query?: {
@@ -37664,6 +37723,12 @@ declare function base64ToBytes(base64String: string): Uint8Array;
37664
37723
  * Convert Uint8Array to base64 string
37665
37724
  */
37666
37725
  declare function bytesToBase64(bytes: Uint8Array): string;
37726
+ /**
37727
+ * Unpadded base64url (RFC 4648 §5): safe in URL fragments and query strings.
37728
+ */
37729
+ declare function bytesToBase64Url(bytes: Uint8Array): string;
37730
+ /** Inverse of {@link bytesToBase64Url}. Throws on anything that is not unpadded base64url. */
37731
+ declare function base64UrlToBytes(encoded: string): Uint8Array;
37667
37732
  /**
37668
37733
  * Base64 encode a Uint8Array (for compatibility with existing code)
37669
37734
  */
@@ -37739,6 +37804,17 @@ declare function derivePublicKey(privateKey: Uint8Array): Uint8Array;
37739
37804
  * Used when we have stored Ed25519 keys and need X25519 for encryption
37740
37805
  */
37741
37806
  declare function deriveEncryptionKeypairFromSigning(signingKeyPair: KeyPair): KeyPair;
37807
+ /**
37808
+ * The X25519 encryption keypair of a 64-byte Ed25519 signing secret key (the
37809
+ * libsodium layout: 32-byte seed ‖ 32-byte public key). The caller owns the
37810
+ * returned secret key and should zero it when done.
37811
+ */
37812
+ declare function encryptionKeypairFromSigningKey(signingPrivateKey: Uint8Array): KeyPair;
37813
+ /**
37814
+ * Open a workspace key sealed to the user (`wrapped_key` of `/v1/user/workspaces`)
37815
+ * with the user's Ed25519 signing secret key.
37816
+ */
37817
+ declare function unwrapWorkspaceKey(wrappedKey: string, signingPrivateKey: Uint8Array): Uint8Array;
37742
37818
  /**
37743
37819
  * Generate a random Ed25519 signing keypair.
37744
37820
  * Used for agent accounts that don't derive keys from a password.
@@ -38007,6 +38083,155 @@ declare function wrapIdentityKey(identitySecretKey: Uint8Array, passwordSecretKe
38007
38083
  */
38008
38084
  declare function unwrapIdentityKey(wrapped: string | null | undefined, passwordSecretKey: Uint8Array): Uint8Array;
38009
38085
 
38086
+ /**
38087
+ * Recovery keys.
38088
+ *
38089
+ * The recovery key is the account's 64-byte Ed25519 signing secret key. It reaches the user as a
38090
+ * recovery link, `<origin>/recover?email=…[&sso=1]#KEY=<base64url bytes>` — the key travels in the
38091
+ * URL fragment, which browsers never send to a server — saved to a password manager or downloaded
38092
+ * inside a one-link HTML file.
38093
+ *
38094
+ * For SSO users the key is first wrapped with their Auth0 `sub`, so the link is useless without
38095
+ * also completing the SSO login: `nonce(24) ‖ secretbox(signing key, SHA-256(sub))`, 104 bytes.
38096
+ *
38097
+ * Older recovery files hold the raw bytes (64 plain, 104 SSO-wrapped); both are still accepted.
38098
+ */
38099
+ /** Raw Ed25519 signing secret key. */
38100
+ declare const UNENCRYPTED_RECOVERY_KEY_SIZE = 64;
38101
+ /** 24 (nonce) + 64 (key) + 16 (auth tag). */
38102
+ declare const ENCRYPTED_RECOVERY_KEY_SIZE = 104;
38103
+ /** The error strings of the recovery flow. */
38104
+ declare const RECOVERY_KEY_ERRORS: {
38105
+ readonly INVALID_SIZE: "Invalid recovery key: file must be 64 or 104 bytes";
38106
+ readonly INVALID_FORMAT: "Invalid recovery key format";
38107
+ readonly READ_ERROR: "Failed to read recovery key file";
38108
+ readonly AUTH_FAILED: "Recovery key does not match this account";
38109
+ readonly ENCRYPTED_KEY_REQUIRES_SSO: "This recovery key is encrypted with your SSO identity. Please use SSO login and then click \"Forgot Password\" to use this key.";
38110
+ readonly DECRYPTION_FAILED: "Failed to decrypt recovery key. This key may belong to a different SSO account.";
38111
+ };
38112
+ /** Wrap the signing key with the user's Auth0 `sub` (104 bytes: nonce ‖ secretbox). */
38113
+ declare function encryptRecoveryKey(signingPrivateKey: Uint8Array, auth0Sub: string): Promise<Uint8Array>;
38114
+ /** Unwrap an SSO recovery key. Throws when it belongs to another account or is damaged. */
38115
+ declare function decryptRecoveryKey(encryptedKey: Uint8Array, auth0Sub: string): Promise<Uint8Array>;
38116
+ /** Whether recovery key bytes of this length are SSO-wrapped. */
38117
+ declare function isEncryptedRecoveryKey(byteLength: number): boolean;
38118
+ /** A timestamped name for the downloadable recovery file. */
38119
+ declare function getRecoveryKeyFilename(): string;
38120
+ /** A parsed recovery link. `isEncrypted`: the key is SSO-wrapped and needs the SSO login. */
38121
+ interface ParsedRecoveryUrl {
38122
+ email: string;
38123
+ recoveryKey: Uint8Array;
38124
+ isEncrypted: boolean;
38125
+ }
38126
+ /** Read a recovery link's query and fragment. Null when it carries no email or no valid key. */
38127
+ declare function parseRecoveryUrl(search: string, hash: string): ParsedRecoveryUrl | null;
38128
+ /** What a recovery link or file is made from. With `auth0Sub` the key is SSO-wrapped first. */
38129
+ interface RecoveryKeyParams {
38130
+ signingPrivateKey: Uint8Array;
38131
+ email: string;
38132
+ /** The app origin the link opens, e.g. `window.location.origin`. */
38133
+ origin: string;
38134
+ auth0Sub?: string | null;
38135
+ }
38136
+ /** The recovery link for an account (to save in a password manager, or inside the file). */
38137
+ declare function createRecoveryUrl(params: RecoveryKeyParams): Promise<string>;
38138
+ /** The downloadable recovery file: an HTML page holding the recovery link. */
38139
+ declare function createRecoveryFile(params: RecoveryKeyParams): Promise<{
38140
+ filename: string;
38141
+ html: string;
38142
+ url: string;
38143
+ }>;
38144
+ /** The result of reading an uploaded raw recovery key file. */
38145
+ interface RecoveryKeyValidationResult {
38146
+ valid: boolean;
38147
+ /** The key is SSO-wrapped. */
38148
+ isEncrypted: boolean;
38149
+ /** The raw file bytes (wrapped or not). */
38150
+ data: Uint8Array | null;
38151
+ error?: string;
38152
+ }
38153
+ /** Read an uploaded raw recovery key file: 64 bytes (plain) or 104 (SSO-wrapped). */
38154
+ declare function validateRecoveryKeyFile(file: Blob): Promise<RecoveryKeyValidationResult>;
38155
+
38156
+ /**
38157
+ * Secure mail delivery (`/v1/mail/secure`).
38158
+ *
38159
+ * The sender's browser builds the MIME message and seals it under a fresh random 32-byte message
38160
+ * key: `ciphertext` and `metadata_ciphertext` are each `base64(nonce ‖ secretbox(bytes, key))`. The
38161
+ * key reaches each recipient only in the link fragment (`fragment_key`), and the sender keeps it
38162
+ * sealed to their own X25519 public key (`sender_wrapped_key`). To claim a message the recipient
38163
+ * proves they hold the key (`claim_hash` = hex SHA-256 of it) and re-seals it to themselves.
38164
+ */
38165
+ declare const SECURE_MAIL_KEY_BYTES = 32;
38166
+ /** The encrypted parts of a secure message, as `/secure/send` takes and `/secure/{id}` returns. */
38167
+ interface SecureMailCiphertexts {
38168
+ ciphertext: string;
38169
+ metadata_ciphertext: string;
38170
+ }
38171
+ /** A sealed message plus the key material the send request needs. */
38172
+ interface SealedSecureMail extends SecureMailCiphertexts {
38173
+ /** The message key, base64 — sent to recipients in the link fragment only. */
38174
+ fragment_key: string;
38175
+ /** The message key sealed to the sender. */
38176
+ sender_wrapped_key: string;
38177
+ }
38178
+ /** What the recipient posts to `/secure/{id}/claim`. */
38179
+ interface SecureMailClaim {
38180
+ claim_hash: string;
38181
+ wrapped_key: string;
38182
+ recipient_public_key: string;
38183
+ }
38184
+ /**
38185
+ * Seal a raw MIME message and its JSON metadata under a fresh message key, and seal the key to the
38186
+ * sender. The key is zeroed before returning; only its base64 `fragment_key` remains.
38187
+ */
38188
+ declare function sealSecureMail(raw: Uint8Array, metadata: unknown, senderPublicKey: Uint8Array): Promise<SealedSecureMail>;
38189
+ /** The message key carried in a secure-mail link. Throws when it is not a 32-byte key. */
38190
+ declare function decodeSecureMailKey(fragmentKey: string): Uint8Array;
38191
+ /** Open a secure message. Throws on a wrong key or a tampered part. */
38192
+ declare function openSecureMail<T = unknown>(payload: SecureMailCiphertexts, key: Uint8Array): Promise<{
38193
+ raw: Uint8Array;
38194
+ metadata: T;
38195
+ }>;
38196
+ /** The claim body proving possession of `key` and re-sealing it to the recipient. */
38197
+ declare function secureMailClaim(key: Uint8Array, recipientPublicKey: Uint8Array): Promise<SecureMailClaim>;
38198
+
38199
+ /**
38200
+ * Encryption at rest for offline stores (IndexedDB copies of mail, calendar, …).
38201
+ *
38202
+ * Keys are derived in memory from the user's own X25519 identity key (by default the one the session
38203
+ * store keeps, wrapped by a non-extractable WebCrypto key). Nothing derived here is ever written to disk.
38204
+ *
38205
+ * - `enc`: XSalsa20-Poly1305 (libsodium secretbox) key for record contents; each record gets a fresh
38206
+ * random nonce, stored in front of the ciphertext.
38207
+ * - `index`: keyed BLAKE2b key for blind index values, so ids never appear in plaintext.
38208
+ *
38209
+ * Both are BLAKE2b derivations of the identity secret key, domain-separated by a per-store namespace
38210
+ * (`<namespace>:enc`, `<namespace>:index`), so stores can't read each other's records.
38211
+ */
38212
+
38213
+ interface OfflineSealer {
38214
+ sealBytes(plain: Uint8Array): Promise<Uint8Array>;
38215
+ openBytes(sealed: Uint8Array): Promise<Uint8Array>;
38216
+ sealJson(value: unknown): Promise<Uint8Array>;
38217
+ openJson<T>(sealed: Uint8Array): Promise<T>;
38218
+ /** A keyed hash of `parts`, used as an IndexedDB key so ids never appear in plaintext. */
38219
+ blind(...parts: string[]): Promise<string>;
38220
+ /** Forget the derived keys (sign-out, or the offline data was removed). */
38221
+ forget(): void;
38222
+ }
38223
+ interface OfflineSealerOptions {
38224
+ /** Builds the error thrown when no identity key is unlocked. */
38225
+ locked: () => Error;
38226
+ /**
38227
+ * The identity keypair to derive from; the sealer zeroes its secret key after use. Defaults to
38228
+ * the signed-in session's ({@link getUserEncryptionKeypair}).
38229
+ */
38230
+ keypair?: () => Promise<KeyPair | null>;
38231
+ }
38232
+ /** A sealer for one offline store, namespaced so stores can't read each other's records. */
38233
+ declare function createOfflineSealer(namespace: string, { locked, keypair: getKeypair }: OfflineSealerOptions): OfflineSealer;
38234
+
38010
38235
  /**
38011
38236
  * storage.ts - IndexedDB Storage Module
38012
38237
  *
@@ -38450,4 +38675,4 @@ interface ReopenDeps {
38450
38675
  */
38451
38676
  declare function createWorkspaceReopener(deps: ReopenDeps): () => Promise<boolean>;
38452
38677
 
38453
- export { type $defs, API_PREFIX, type ArbiClient, type ArbiClientOptions, type AuthStateProvider, type AutoReloginMiddlewareConfig, type BearerAuthMiddlewareConfig, CALL_KEY_BYTES, CHAT_KEY_BYTES, type ChangePasswordParams, type ChangePasswordRequest, type ChangePasswordResult, type CryptoProvider, type KeyLoginCredentials, type KeyPair, type LoginCredentials, type LoginParams, type LoginProfile, type LoginProvider, type LoginRequest, type LoginResult, type LoginWithKeyParams, type OnReloginSuccess, type PasswordChangeCredentials, type RegisterParams, type RegisterRequest, type RegisterResult, type RegistrationCredentials, type ReloginDeps, type ReloginHandler, type ReopenDeps, type SessionData, type SessionKeys, type SessionManager, type SessionState, type SessionStorageProvider, type SsoTokenProvider, type TokenProvider, type UserKeypairs, type WebSocketClientMessage, type WebSocketServerMessage, type WorkspaceKeyRefreshProvider, type WorkspaceOpenProvider, type WsAgentDmStatusMessage, type WsAuthMessage, type WsAuthResultMessage, type WsBatchCompleteMessage, type WsChatMessageMessage, type WsChatReadMessage, type WsChatUpdatedMessage, type WsConnectionClosedMessage, type WsConversationMessagePostedMessage, type WsErrorMessage, type WsNotificationResponse, type WsPresenceUpdateMessage, type WsResponseCompleteMessage, type WsTaskUpdateMessage, base64Decode, base64Encode, base64ToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, canPersistSession, changePassword, clearAllData, clearSession, type components, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, decryptWithChatKey, deriveDirectChatKey, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, encryptWithChatKey, generateCallKey, generateChatKey, generateIdentityKeypair, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRegistrationCredentials, generateUserKeypairs, getSession, getUserEncryptionKeypair, hasSession, identityFromLoginResponse, initSodium, initializeDatabase, isMessageType, openSealedCallKey, openSealedChatKey, type operations, parseCallFragment, parseServerMessage, passwordChangeErrorMessage, type paths, prewarmKeyPairs, saveSession, sealCallKey, sealChatKey, sealKeyForSession, sealedBoxDecrypt, sealedBoxEncrypt, signMessage, unlockIdentityWithPassword, unwrapIdentityKey, updateWrappedIdentityKey, type webhooks, wrapIdentityKey };
38678
+ export { type $defs, API_PREFIX, type ArbiClient, type ArbiClientOptions, type AuthStateProvider, type AutoReloginMiddlewareConfig, type BearerAuthMiddlewareConfig, CALL_KEY_BYTES, CHAT_KEY_BYTES, type ChangePasswordParams, type ChangePasswordRequest, type ChangePasswordResult, type CryptoProvider, ENCRYPTED_RECOVERY_KEY_SIZE, type KeyLoginCredentials, type KeyPair, type LoginCredentials, type LoginParams, type LoginProfile, type LoginProvider, type LoginRequest, type LoginResult, type LoginWithKeyParams, type OfflineSealer, type OfflineSealerOptions, type OnReloginSuccess, type ParsedRecoveryUrl, type PasswordChangeCredentials, RECOVERY_KEY_ERRORS, type RecoveryKeyParams, type RecoveryKeyValidationResult, type RegisterParams, type RegisterRequest, type RegisterResult, type RegistrationCredentials, type ReloginDeps, type ReloginHandler, type ReopenDeps, SECURE_MAIL_KEY_BYTES, type SealedSecureMail, type SecureMailCiphertexts, type SecureMailClaim, type SessionData, type SessionKeys, type SessionManager, type SessionState, type SessionStorageProvider, type SsoTokenProvider, type TokenProvider, UNENCRYPTED_RECOVERY_KEY_SIZE, type UserKeypairs, type WebSocketClientMessage, type WebSocketServerMessage, type WorkspaceKeyRefreshProvider, type WorkspaceOpenProvider, type WsAgentDmStatusMessage, type WsAuthMessage, type WsAuthResultMessage, type WsBatchCompleteMessage, type WsChatMessageMessage, type WsChatReadMessage, type WsChatUpdatedMessage, type WsConnectionClosedMessage, type WsConversationMessagePostedMessage, type WsErrorMessage, type WsNotificationResponse, type WsPresenceUpdateMessage, type WsResponseCompleteMessage, type WsTaskUpdateMessage, base64Decode, base64Encode, base64ToBytes, base64UrlToBytes, buildCallFragment, buildWebSocketUrl, bytesToBase64, bytesToBase64Url, canPersistSession, changePassword, clearAllData, clearSession, type components, computeSharedSecret, createArbiClient, createAuthMessage, createAutoReloginMiddleware, createBearerAuthMiddleware, createContentHash, createOfflineSealer, createRecoveryFile, createRecoveryUrl, createReloginHandler, createSessionManager, createWorkspaceReopener, decodeCallKey, decodeSecureMailKey, decryptCallTitle, decryptFile, decryptMessage, decryptMessageWithSharedSecret, decryptRecoveryKey, decryptWithChatKey, deriveDirectChatKey, deriveEncryptionKeypairFromSigning, derivePublicKey, encodeCallKey, encryptCallTitle, encryptFile, encryptMessage, encryptMessageWithSharedSecret, encryptRecoveryKey, encryptWithChatKey, encryptionKeypairFromSigningKey, generateCallKey, generateChatKey, generateIdentityKeypair, generateKeyPairs, generateLoginCredentials, generateLoginCredentialsFromKey, generatePasswordChangeCredentials, generateRandomSigningKeypair, generateRegistrationCredentials, generateUserKeypairs, getRecoveryKeyFilename, getSession, getUserEncryptionKeypair, hasSession, identityFromLoginResponse, initSodium, initializeDatabase, isEncryptedRecoveryKey, isMessageType, openSealedCallKey, openSealedChatKey, openSecureMail, type operations, parseCallFragment, parseRecoveryUrl, parseServerMessage, passwordChangeErrorMessage, type paths, prewarmKeyPairs, saveSession, sealCallKey, sealChatKey, sealKeyForSession, sealSecureMail, sealedBoxDecrypt, sealedBoxEncrypt, secureMailClaim, signMessage, unlockIdentityWithPassword, unwrapIdentityKey, unwrapWorkspaceKey, updateWrappedIdentityKey, validateRecoveryKeyFile, type webhooks, wrapIdentityKey };