@whiskeysockets/baileys
Version:
A WebSockets library for interacting with WhatsApp Web
104 lines (103 loc) • 3.11 kB
TypeScript
import type { proto } from '../../WAProto';
import type { Contact } from './Contact';
import type { MinimalMessage } from './Message';
export type KeyPair = {
public: Uint8Array;
private: Uint8Array;
};
export type SignedKeyPair = {
keyPair: KeyPair;
signature: Uint8Array;
keyId: number;
timestampS?: number;
};
export type ProtocolAddress = {
name: string;
deviceId: number;
};
export type SignalIdentity = {
identifier: ProtocolAddress;
identifierKey: Uint8Array;
};
export type LTHashState = {
version: number;
hash: Buffer;
indexValueMap: {
[indexMacBase64: string]: {
valueMac: Uint8Array | Buffer;
};
};
};
export type SignalCreds = {
readonly signedIdentityKey: KeyPair;
readonly signedPreKey: SignedKeyPair;
readonly registrationId: number;
};
export type AccountSettings = {
/** unarchive chats when a new message is received */
unarchiveChats: boolean;
/** the default mode to start new conversations with */
defaultDisappearingMode?: Pick<proto.IConversation, 'ephemeralExpiration' | 'ephemeralSettingTimestamp'>;
};
export type AuthenticationCreds = SignalCreds & {
readonly noiseKey: KeyPair;
readonly pairingEphemeralKeyPair: KeyPair;
advSecretKey: string;
me?: Contact;
account?: proto.IADVSignedDeviceIdentity;
signalIdentities?: SignalIdentity[];
myAppStateKeyId?: string;
firstUnuploadedPreKeyId: number;
nextPreKeyId: number;
lastAccountSyncTimestamp?: number;
platform?: string;
processedHistoryMessages: MinimalMessage[];
/** number of times history & app state has been synced */
accountSyncCounter: number;
accountSettings: AccountSettings;
registered: boolean;
pairingCode: string | undefined;
lastPropHash: string | undefined;
routingInfo: Buffer | undefined;
};
export type SignalDataTypeMap = {
'pre-key': KeyPair;
'session': Uint8Array;
'sender-key': Uint8Array;
'sender-key-memory': {
[jid: string]: boolean;
};
'app-state-sync-key': proto.Message.IAppStateSyncKeyData;
'app-state-sync-version': LTHashState;
};
export type SignalDataSet = {
[T in keyof SignalDataTypeMap]?: {
[id: string]: SignalDataTypeMap[T] | null;
};
};
type Awaitable<T> = T | Promise<T>;
export type SignalKeyStore = {
get<T extends keyof SignalDataTypeMap>(type: T, ids: string[]): Awaitable<{
[id: string]: SignalDataTypeMap[T];
}>;
set(data: SignalDataSet): Awaitable<void>;
/** clear all the data in the store */
clear?(): Awaitable<void>;
};
export type SignalKeyStoreWithTransaction = SignalKeyStore & {
isInTransaction: () => boolean;
transaction<T>(exec: () => Promise<T>): Promise<T>;
};
export type TransactionCapabilityOptions = {
maxCommitRetries: number;
delayBetweenTriesMs: number;
};
export type SignalAuthState = {
creds: SignalCreds;
keys: SignalKeyStore | SignalKeyStoreWithTransaction;
};
export type AuthenticationState = {
creds: AuthenticationCreds;
keys: SignalKeyStore;
};
export {};