UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

111 lines (110 loc) 5.72 kB
import Database from "libsql"; import type { Message, SessionState, MessengerConfig } from "./types.js"; type KeyPairType = { pubKey: ArrayBuffer; privKey: ArrayBuffer; }; interface StorageType { getIdentityKeyPair(): Promise<KeyPairType | undefined>; getLocalRegistrationId(): Promise<number | undefined>; isTrustedIdentity(identifier: string, identityKey: ArrayBuffer, direction?: number): Promise<boolean>; saveIdentity(encodedAddress: string, publicKey: ArrayBuffer): Promise<boolean>; loadIdentity(address: string): Promise<ArrayBuffer | undefined>; loadPreKey(keyId: string | number): Promise<KeyPairType | undefined>; storePreKey(keyId: string | number, keyPair: KeyPairType): Promise<void>; removePreKey(keyId: string | number): Promise<void>; loadSignedPreKey(keyId: string | number): Promise<KeyPairType | undefined>; storeSignedPreKey(keyId: string | number, keyPair: KeyPairType): Promise<void>; removeSignedPreKey(keyId: string | number): Promise<void>; loadSession(encodedAddress: string): Promise<string | undefined>; storeSession(encodedAddress: string, record: string): Promise<void>; removeSession(encodedAddress: string): Promise<void>; } export declare function getDatabase(userAddress: string): Database.Database; export declare function resetDbConnection(): void; interface PersistedMeta { nextPreKeyId: number; } export declare class SignalProtocolStorage implements StorageType { private storePrefix; private userAddress; constructor(userAddress: string, storeType?: string); private get db(); setIdentity(identity: KeyPairType, registrationId: number): Promise<void>; getIdentityKeyPair(): Promise<KeyPairType | undefined>; getLocalRegistrationId(): Promise<number | undefined>; isTrustedIdentity(identifier: string, identityKey: ArrayBuffer): Promise<boolean>; saveIdentity(encodedAddress: string, publicKey: ArrayBuffer): Promise<boolean>; loadIdentity(address: string): Promise<ArrayBuffer | undefined>; loadPreKey(keyId: string | number): Promise<KeyPairType | undefined>; storePreKey(keyId: string | number, keyPair: KeyPairType): Promise<void>; removePreKey(keyId: string | number): Promise<void>; loadSignedPreKey(keyId: string | number): Promise<KeyPairType | undefined>; storeSignedPreKey(keyId: string | number, keyPair: KeyPairType): Promise<void>; removeSignedPreKey(keyId: string | number): Promise<void>; loadSignedPreKeyWithSignature(keyId: string | number): Promise<(KeyPairType & { signature: ArrayBuffer; }) | undefined>; storeSignedPreKeyWithSignature(keyId: string | number, keyPair: KeyPairType, signature: ArrayBuffer): Promise<void>; loadSession(encodedAddress: string): Promise<string | undefined>; storeSession(encodedAddress: string, record: string): Promise<void>; removeSession(encodedAddress: string): Promise<void>; getMeta(): Promise<PersistedMeta>; setMeta(meta: Partial<PersistedMeta>): Promise<void>; listPreKeys(): number[]; private getValue; private putValue; private delValue; } export declare class MessageStorage { private userAddress; constructor(userAddress: string); private get db(); saveMessage(message: Message): void; getMessage(messageId: string): Message | undefined; getMessagesBySession(myAddress: string, peerAddress: string): Message[]; getPendingMessages(myAddress: string): Message[]; updateMessageStatus(messageId: string, status: Message["status"], updates?: Partial<Message>): void; updateMessageViewed(messageId: string, viewedAt?: number): boolean; updateMessagesViewed(messageIds: string[], viewedAt?: number): number; getAllMessages(userAddress: string): Message[]; getMessageById(messageId: string): Message | undefined; updateMessageId(oldMessageId: string, newMessageId: string, updates?: Partial<Message>): boolean; private rowToMessage; getLastReceivedLeafIndex(myAddress: string, peerAddress: string): number; } export declare class SessionStateStorage { private userAddress; constructor(userAddress: string); private get db(); private getSessionId; getSessionState(myAddress: string, peerAddress: string): SessionState | undefined; updateSessionState(myAddress: string, peerAddress: string, updates: Partial<Omit<SessionState, "sessionId" | "myAddress" | "peerAddress">>): void; getCurrentRoot(myAddress: string, peerAddress: string): string; } export interface PersistedMessengerState { version: string; accounts: string[]; config: Partial<MessengerConfig>; updatedAt: number; } export declare class MessengerPersistStorage { private initialized; private get db(); private initTable; saveState(instanceId: string, state: PersistedMessengerState): void; loadState(instanceId: string): PersistedMessengerState | null; deleteState(instanceId: string): void; getAllInstanceIds(): string[]; private get processId(); tryAcquireSSELock(accountAddress: string, instanceId: string): boolean; updateSSELockHeartbeat(accountAddress: string, instanceId: string): void; releaseSSELock(accountAddress: string, instanceId: string): void; holdsSSELock(accountAddress: string, instanceId: string): boolean; tryAcquirePollingLock(accountAddress: string, instanceId: string): boolean; updatePollingLockHeartbeat(accountAddress: string, instanceId: string): void; releasePollingLock(accountAddress: string, instanceId: string): void; holdsPollingLock(accountAddress: string, instanceId: string): boolean; } export declare const defaultPersistStorage: MessengerPersistStorage; export {};