superchats
Version:
SuperChats is a premium library with unique features that control Whatsapp functions. With Superchats you can build service bots, multiservice chats or any system that uses whatsapp
79 lines (78 loc) • 2.08 kB
TypeScript
import { KeyPairType, SignedPublicPreKeyType, PreKeyType } from './types';
export declare enum ChainType {
SENDING = 1,
RECEIVING = 2
}
export declare enum BaseKeyType {
OURS = 1,
THEIRS = 2
}
export interface SessionType<T = ArrayBuffer> {
indexInfo: IndexInfo<T>;
registrationId?: number;
currentRatchet: Ratchet<T>;
pendingPreKey?: PendingPreKey<T>;
oldRatchetList: OldRatchetInfo<T>[];
chains: {
[ephKeyString: string]: Chain<T>;
};
}
export interface IndexInfo<T> {
closed: number;
remoteIdentityKey: T;
baseKey?: T;
baseKeyType?: BaseKeyType;
}
export interface Ratchet<T> {
rootKey: T;
ephemeralKeyPair?: KeyPairType<T>;
lastRemoteEphemeralKey: T;
previousCounter: number;
added?: number;
}
export interface OldRatchetInfo<T> {
ephemeralKey: T;
added: number;
}
export interface Chain<T> {
chainType: ChainType;
chainKey: {
key?: T;
counter: number;
};
messageKeys: {
[key: number]: T;
};
}
export interface PendingPreKey<T> {
baseKey: T;
preKeyId?: number;
signedKeyId: number;
}
export declare enum EncryptionResultMessageType {
WhisperMessage = 1,
PreKeyWhisperMessage = 3
}
export interface EncryptionResult {
type: EncryptionResultMessageType;
body: ArrayBuffer;
registrationId: number;
}
export interface DeviceType<T = ArrayBuffer> {
identityKey: T;
signedPreKey: SignedPublicPreKeyType<T>;
preKey?: PreKeyType<T>;
registrationId?: number;
}
export interface RecordType {
archiveCurrentState: () => void;
deleteAllSessions: () => void;
getOpenSession: () => SessionType | undefined;
getSessionByBaseKey: (baseKey: ArrayBuffer) => SessionType | undefined;
getSessionByRemoteEphemeralKey: (remoteEphemeralKey: ArrayBuffer) => SessionType | undefined;
getSessions: () => SessionType[];
haveOpenSession: () => boolean;
promoteState: (session: SessionType) => void;
serialize: () => string;
updateSessionState: (session: SessionType) => void;
}