wowok
Version:
Wowok Blockchain TypeScript API
93 lines (92 loc) • 3.86 kB
TypeScript
import type { CallEnv } from "../common.js";
import type { MessengerConfig, Message, SendMessageResult, DecryptedMessage, ZipContentType, ListOperationResponse, GuardListItem, PreKeyStatus, GetSettingsResponse, UpdateSettingsRequest } from "./types.js";
export declare class Messenger {
private session;
private serverClient;
private config;
private userAddress;
private onMessageCallback;
private pollingTimer;
private messageConsecutiveEmptyPulls;
private prekeyConsecutiveOkCount;
private currentMessageInterval;
private isPollingRunning;
private messageStorage;
private sessionStateStorage;
private decryptionEngine;
private waitingMessages;
private failedMessages;
private waitingMessageRetries;
constructor(userAddress: string, config?: Partial<MessengerConfig>);
getUserAddress(): string;
getPublicKey(): Promise<string>;
isValidGuardMessage(guardAddress: string | null | undefined, passportAddress: string | null | undefined): boolean;
private generateSignatureParams;
private generateNonce;
initialize(): Promise<void>;
private checkAndRefillPrekeys;
private startPollingTimer;
private stopPollingTimer;
private scheduleNextPoll;
private getNextPollInterval;
private poll;
private triggerFastPoll;
sendMessage(recipientAddress: string, plaintext: string, options?: {
guardAddress?: string;
passportAddress?: string;
force?: boolean;
}): Promise<SendMessageResult>;
pullMessages(limit?: number): Promise<{
messages: DecryptedMessage[];
prekey_status?: PreKeyStatus;
}>;
private getLastSentLeafIndex;
getSessionMessages(peerAddress: string): Message[];
getSessionState(peerAddress: string): import("./types.js").SessionState;
submitChainProof(env: CallEnv, peerAddress: string, description?: string): Promise<{
proofAddress: string;
txHash: string;
}>;
destroy(): void;
disconnect(): void;
setOnMessageCallback(onMessage: (messages: DecryptedMessage[]) => void): void;
sendZipFile(recipientAddress: string, source: string, options?: {
fileName?: string;
contentType?: ZipContentType;
guardAddress?: string;
passportAddress?: string;
force?: boolean;
}): Promise<SendMessageResult>;
private loadFileData;
private detectContentType;
private _createSignedRequest;
private _validateAddresses;
addToBlacklist(addresses: string[]): Promise<ListOperationResponse>;
removeFromBlacklist(addresses: string[]): Promise<ListOperationResponse>;
clearBlacklist(): Promise<ListOperationResponse>;
getBlacklist(): Promise<string[]>;
existInBlacklist(addresses: string[]): Promise<ListOperationResponse>;
addToFriendsList(addresses: string[]): Promise<ListOperationResponse>;
removeFromFriendsList(addresses: string[]): Promise<ListOperationResponse>;
clearFriendsList(): Promise<ListOperationResponse>;
getFriendsList(): Promise<string[]>;
existInFriendsList(addresses: string[]): Promise<ListOperationResponse>;
addToGuardList(guards: GuardListItem[]): Promise<ListOperationResponse>;
removeFromGuardList(addresses: string[]): Promise<ListOperationResponse>;
getGuardList(): Promise<ListOperationResponse>;
getSettings(): Promise<GetSettingsResponse>;
setSettings(settings: Partial<UpdateSettingsRequest>): Promise<boolean>;
private tryDecryptMessage;
private isRetryableError;
private processWaitingMessages;
private saveFailedMessage;
private reschedulePolling;
getFailedMessages(): Array<{
messageId: string;
from: string;
error: string;
leafIndex?: number;
}>;
clearFailedMessages(messageId?: string): void;
getWaitingMessageCount(): number;
}