// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../../../core/resource'; import * as QRAPI from './qr'; import { BaseQR, QR as QrapiQR, QRConfirmScannedResponse, QRScanParams, QRScanResponse } from './qr'; import * as SASAPI from './sas'; import { BaseSAS, SAS as SasapiSAS, SASConfirmResponse, SASStartResponse } from './sas'; import { APIPromise } from '../../../../core/api-promise'; import { RequestOptions } from '../../../../internal/request-options'; import { path } from '../../../../internal/utils/path'; /** * Manage device verification transactions */ export class BaseVerifications extends APIResource { static override readonly _key: readonly ['app', 'setup', 'verifications'] = Object.freeze([ 'app', 'setup', 'verifications', ] as const); /** * Start verifying this device from another signed-in device. */ create( body: VerificationCreateParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.post('/v1/app/setup/verifications', { body, ...options }); } /** * Get the current state of a device verification transaction. */ retrieve(verificationID: string, options?: RequestOptions): APIPromise { return this._client.get(path`/v1/app/setup/verifications/${verificationID}`, options); } /** * List pending and active device verifications. Use this to recover state without * a WebSocket connection. */ list(options?: RequestOptions): APIPromise { return this._client.get('/v1/app/setup/verifications', options); } /** * Accept an incoming device verification request. */ accept(verificationID: string, options?: RequestOptions): APIPromise { return this._client.post(path`/v1/app/setup/verifications/${verificationID}/accept`, options); } /** * Cancel an active device verification request. */ cancel( verificationID: string, body: VerificationCancelParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.post(path`/v1/app/setup/verifications/${verificationID}/cancel`, { body, ...options, }); } } /** * Manage device verification transactions */ export class Verifications extends BaseVerifications { qr: QRAPI.QR = new QRAPI.QR(this._client); sas: SASAPI.SAS = new SASAPI.SAS(this._client); } export interface VerificationCreateResponse { /** * Current app sign-in and encrypted messaging setup state. */ session: VerificationCreateResponse.Session; /** * Trusted device verification progress. */ verification?: VerificationCreateResponse.Verification; } export namespace VerificationCreateResponse { /** * Current app sign-in and encrypted messaging setup state. */ export interface Session { /** * Encrypted messaging setup status. */ e2ee: Session.E2EE; /** * Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper * Server. */ state: | 'needs-login' | 'initializing' | 'needs-cross-signing-setup' | 'needs-verification' | 'needs-secrets' | 'needs-first-sync' | 'ready'; /** * Signed-in account details. Omitted until sign-in is complete. */ matrix?: Session.Matrix; /** * Trusted device verification progress. */ verification?: Session.Verification; } export namespace Session { /** * Encrypted messaging setup status. */ export interface E2EE { /** * Whether this account can verify trusted devices. */ crossSigning: boolean; /** * Whether the first encrypted message sync is complete. */ firstSyncDone: boolean; /** * Whether the user confirmed that they saved their recovery key. */ hasBackedUpRecoveryKey: boolean; /** * Whether encrypted messaging setup has started. */ initialized: boolean; /** * Whether encrypted message backup is available. */ keyBackup: boolean; /** * Encrypted messaging keys available on this device. */ secrets: E2EE.Secrets; /** * Whether secure key storage is available. */ secretStorage: boolean; /** * Whether this device is trusted for encrypted messages. */ verified: boolean; /** * Unix timestamp for when the recovery key was created. */ recoveryKeyGeneratedAt?: number; } export namespace E2EE { /** * Encrypted messaging keys available on this device. */ export interface Secrets { /** * Whether the account identity key is available. */ masterKey: boolean; /** * Whether the encrypted message backup key is available. */ megolmBackupKey: boolean; /** * Whether a recovery key is available. */ recoveryKey: boolean; /** * Whether the device trust key is available. */ selfSigningKey: boolean; /** * Whether the user trust key is available. */ userSigningKey: boolean; } } /** * Signed-in account details. Omitted until sign-in is complete. */ export interface Matrix { /** * Current device ID. */ deviceID: string; /** * Beeper homeserver URL for this account. */ homeserver: string; /** * Signed-in Beeper user ID. */ userID: string; } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } export interface VerificationRetrieveResponse { /** * Current app sign-in and encrypted messaging setup state. */ session: VerificationRetrieveResponse.Session; /** * Trusted device verification progress. */ verification?: VerificationRetrieveResponse.Verification; } export namespace VerificationRetrieveResponse { /** * Current app sign-in and encrypted messaging setup state. */ export interface Session { /** * Encrypted messaging setup status. */ e2ee: Session.E2EE; /** * Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper * Server. */ state: | 'needs-login' | 'initializing' | 'needs-cross-signing-setup' | 'needs-verification' | 'needs-secrets' | 'needs-first-sync' | 'ready'; /** * Signed-in account details. Omitted until sign-in is complete. */ matrix?: Session.Matrix; /** * Trusted device verification progress. */ verification?: Session.Verification; } export namespace Session { /** * Encrypted messaging setup status. */ export interface E2EE { /** * Whether this account can verify trusted devices. */ crossSigning: boolean; /** * Whether the first encrypted message sync is complete. */ firstSyncDone: boolean; /** * Whether the user confirmed that they saved their recovery key. */ hasBackedUpRecoveryKey: boolean; /** * Whether encrypted messaging setup has started. */ initialized: boolean; /** * Whether encrypted message backup is available. */ keyBackup: boolean; /** * Encrypted messaging keys available on this device. */ secrets: E2EE.Secrets; /** * Whether secure key storage is available. */ secretStorage: boolean; /** * Whether this device is trusted for encrypted messages. */ verified: boolean; /** * Unix timestamp for when the recovery key was created. */ recoveryKeyGeneratedAt?: number; } export namespace E2EE { /** * Encrypted messaging keys available on this device. */ export interface Secrets { /** * Whether the account identity key is available. */ masterKey: boolean; /** * Whether the encrypted message backup key is available. */ megolmBackupKey: boolean; /** * Whether a recovery key is available. */ recoveryKey: boolean; /** * Whether the device trust key is available. */ selfSigningKey: boolean; /** * Whether the user trust key is available. */ userSigningKey: boolean; } } /** * Signed-in account details. Omitted until sign-in is complete. */ export interface Matrix { /** * Current device ID. */ deviceID: string; /** * Beeper homeserver URL for this account. */ homeserver: string; /** * Signed-in Beeper user ID. */ userID: string; } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } export interface VerificationListResponse { items: Array; } export namespace VerificationListResponse { /** * Trusted device verification progress. */ export interface Item { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Item.Error; /** * Other device participating in verification. */ otherDevice?: Item.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Item.QR; /** * Emoji or number comparison data for verification. */ sas?: Item.SAS; } export namespace Item { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } export interface VerificationAcceptResponse { /** * Current app sign-in and encrypted messaging setup state. */ session: VerificationAcceptResponse.Session; /** * Trusted device verification progress. */ verification?: VerificationAcceptResponse.Verification; } export namespace VerificationAcceptResponse { /** * Current app sign-in and encrypted messaging setup state. */ export interface Session { /** * Encrypted messaging setup status. */ e2ee: Session.E2EE; /** * Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper * Server. */ state: | 'needs-login' | 'initializing' | 'needs-cross-signing-setup' | 'needs-verification' | 'needs-secrets' | 'needs-first-sync' | 'ready'; /** * Signed-in account details. Omitted until sign-in is complete. */ matrix?: Session.Matrix; /** * Trusted device verification progress. */ verification?: Session.Verification; } export namespace Session { /** * Encrypted messaging setup status. */ export interface E2EE { /** * Whether this account can verify trusted devices. */ crossSigning: boolean; /** * Whether the first encrypted message sync is complete. */ firstSyncDone: boolean; /** * Whether the user confirmed that they saved their recovery key. */ hasBackedUpRecoveryKey: boolean; /** * Whether encrypted messaging setup has started. */ initialized: boolean; /** * Whether encrypted message backup is available. */ keyBackup: boolean; /** * Encrypted messaging keys available on this device. */ secrets: E2EE.Secrets; /** * Whether secure key storage is available. */ secretStorage: boolean; /** * Whether this device is trusted for encrypted messages. */ verified: boolean; /** * Unix timestamp for when the recovery key was created. */ recoveryKeyGeneratedAt?: number; } export namespace E2EE { /** * Encrypted messaging keys available on this device. */ export interface Secrets { /** * Whether the account identity key is available. */ masterKey: boolean; /** * Whether the encrypted message backup key is available. */ megolmBackupKey: boolean; /** * Whether a recovery key is available. */ recoveryKey: boolean; /** * Whether the device trust key is available. */ selfSigningKey: boolean; /** * Whether the user trust key is available. */ userSigningKey: boolean; } } /** * Signed-in account details. Omitted until sign-in is complete. */ export interface Matrix { /** * Current device ID. */ deviceID: string; /** * Beeper homeserver URL for this account. */ homeserver: string; /** * Signed-in Beeper user ID. */ userID: string; } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } export interface VerificationCancelResponse { /** * Current app sign-in and encrypted messaging setup state. */ session: VerificationCancelResponse.Session; /** * Trusted device verification progress. */ verification?: VerificationCancelResponse.Verification; } export namespace VerificationCancelResponse { /** * Current app sign-in and encrypted messaging setup state. */ export interface Session { /** * Encrypted messaging setup status. */ e2ee: Session.E2EE; /** * Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper * Server. */ state: | 'needs-login' | 'initializing' | 'needs-cross-signing-setup' | 'needs-verification' | 'needs-secrets' | 'needs-first-sync' | 'ready'; /** * Signed-in account details. Omitted until sign-in is complete. */ matrix?: Session.Matrix; /** * Trusted device verification progress. */ verification?: Session.Verification; } export namespace Session { /** * Encrypted messaging setup status. */ export interface E2EE { /** * Whether this account can verify trusted devices. */ crossSigning: boolean; /** * Whether the first encrypted message sync is complete. */ firstSyncDone: boolean; /** * Whether the user confirmed that they saved their recovery key. */ hasBackedUpRecoveryKey: boolean; /** * Whether encrypted messaging setup has started. */ initialized: boolean; /** * Whether encrypted message backup is available. */ keyBackup: boolean; /** * Encrypted messaging keys available on this device. */ secrets: E2EE.Secrets; /** * Whether secure key storage is available. */ secretStorage: boolean; /** * Whether this device is trusted for encrypted messages. */ verified: boolean; /** * Unix timestamp for when the recovery key was created. */ recoveryKeyGeneratedAt?: number; } export namespace E2EE { /** * Encrypted messaging keys available on this device. */ export interface Secrets { /** * Whether the account identity key is available. */ masterKey: boolean; /** * Whether the encrypted message backup key is available. */ megolmBackupKey: boolean; /** * Whether a recovery key is available. */ recoveryKey: boolean; /** * Whether the device trust key is available. */ selfSigningKey: boolean; /** * Whether the user trust key is available. */ userSigningKey: boolean; } } /** * Signed-in account details. Omitted until sign-in is complete. */ export interface Matrix { /** * Current device ID. */ deviceID: string; /** * Beeper homeserver URL for this account. */ homeserver: string; /** * Signed-in Beeper user ID. */ userID: string; } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } /** * Trusted device verification progress. */ export interface Verification { /** * Verification ID to pass in verification action paths. */ id: string; /** * Verification actions that are valid for the current state. */ availableActions: Array<'accept' | 'cancel' | 'qr.confirmScanned' | 'sas.start' | 'sas.confirm'>; /** * Whether this device started or received the verification. */ direction: 'incoming' | 'outgoing'; /** * Verification methods supported for this transaction. */ methods: Array<'qr' | 'sas'>; /** * Why this verification exists. */ purpose: 'login' | 'device'; /** * Current trusted-device verification state. */ state: 'requested' | 'ready' | 'sas_ready' | 'qr_scanned' | 'done' | 'cancelled' | 'error'; /** * Verification error details, if verification stopped. */ error?: Verification.Error; /** * Other device participating in verification. */ otherDevice?: Verification.OtherDevice; /** * Other Beeper user participating in verification. */ otherUserID?: string; /** * QR verification data. */ qr?: Verification.QR; /** * Emoji or number comparison data for verification. */ sas?: Verification.SAS; } export namespace Verification { /** * Verification error details, if verification stopped. */ export interface Error { /** * Verification error code. */ code: string; /** * User-facing verification error message. */ reason: string; } /** * Other device participating in verification. */ export interface OtherDevice { /** * Other device ID. */ id: string; /** * Other device display name, if known. */ name?: string; } /** * QR verification data. */ export interface QR { /** * QR code payload to display for verification. */ data: string; } /** * Emoji or number comparison data for verification. */ export interface SAS { /** * Emoji sequence to compare on both devices. */ emojis: string; /** * Number sequence to compare on both devices. */ decimals?: string; } } } export interface VerificationCreateParams { /** * Why this verification is being started. */ purpose?: 'login' | 'device'; /** * Beeper user ID to verify. Defaults to the signed-in user. */ userID?: string; } export interface VerificationCancelParams { /** * Optional cancellation code. */ code?: string; /** * Optional user-facing cancellation reason. */ reason?: string; } Verifications.QR = QrapiQR; Verifications.BaseQR = BaseQR; Verifications.SAS = SasapiSAS; Verifications.BaseSAS = BaseSAS; export declare namespace Verifications { export { type VerificationCreateResponse as VerificationCreateResponse, type VerificationRetrieveResponse as VerificationRetrieveResponse, type VerificationListResponse as VerificationListResponse, type VerificationAcceptResponse as VerificationAcceptResponse, type VerificationCancelResponse as VerificationCancelResponse, type VerificationCreateParams as VerificationCreateParams, type VerificationCancelParams as VerificationCancelParams, }; export { QrapiQR as QR, BaseQR as BaseQR, type QRConfirmScannedResponse as QRConfirmScannedResponse, type QRScanResponse as QRScanResponse, type QRScanParams as QRScanParams, }; export { SasapiSAS as SAS, BaseSAS as BaseSAS, type SASConfirmResponse as SASConfirmResponse, type SASStartResponse as SASStartResponse, }; }