UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

66 lines (65 loc) 2.65 kB
import { PQSessionCipher } from "./pq/index.js"; import type { PQSessionStore } from "./pq/session.js"; import type { MessengerConfig, RemoteBundle } from "./types.js"; import type { X25519KeyPair } from "./pq/types.js"; export interface LocalIdentity { x25519KeyPair: X25519KeyPair; registrationId: number; } export interface EncryptedMessage { type: number; body: ArrayBuffer; registrationId?: number; } export declare class MessengerSession { private pqStore; private pqCipher; private serverClient; private config; private identity; private userAddress; constructor(userAddress: string, config?: Partial<MessengerConfig>); get store(): PQSessionStore; get cipher(): PQSessionCipher; ensureIdentity(_userAddress?: string): Promise<LocalIdentity>; private deriveRegistrationId; registerDevice(userAddress: string): Promise<void>; private verifyRegistrationComplete; isDeviceRegistered(userAddress: string): Promise<boolean>; private generatePreKeyBatch; ensurePreKeys(userAddress: string, force?: boolean): Promise<void>; private generateNonce; establishSession(myAddress: string, peerAddress: string, peerDeviceId?: number, remoteBundle?: RemoteBundle): Promise<void>; encryptMessage(myAddress: string, peerAddress: string, plaintext: string, peerDeviceId?: number): Promise<EncryptedMessage>; decryptMessage(myAddress: string, peerAddress: string, ciphertext: ArrayBuffer, msgType: number, peerDeviceId?: number): Promise<string>; getIdentityKey(): Promise<string>; getRegistrationId(): Promise<number>; } export interface SessionSnapshot { sessionData: string | null; timestamp: number; } export declare class SessionStateManager { private store; constructor(store: PQSessionStore); snapshotSession(peerAddress: string, peerDeviceId: number): Promise<SessionSnapshot>; rollbackSession(peerAddress: string, peerDeviceId: number, snapshot: SessionSnapshot): Promise<void>; commitSession(_peerAddress: string, _peerDeviceId: number): Promise<void>; } export interface DecryptResult { success: boolean; plaintext?: string; sessionUpdated: boolean; sessionRolledBack: boolean; messageType: "PREKEY" | "WHISPER"; error?: string; } export declare class DecryptionEngine { private sessionManager; private store; private cipher; constructor(store: PQSessionStore); decryptMessage(myAddress: string, peerAddress: string, ciphertext: ArrayBuffer, msgType: number, peerDeviceId?: number): Promise<DecryptResult>; private handlePreKeyMessage; private handleWhisperMessage; }