///
import type { proto } from '../../WAProto';
import type { Contact } from './Contact';
import type { MinimalMessage } from './Message';
export declare type KeyPair = {
public: Uint8Array;
private: Uint8Array;
};
export declare type SignedKeyPair = {
keyPair: KeyPair;
signature: Uint8Array;
keyId: number;
};
export declare type ProtocolAddress = {
name: string;
deviceId: number;
};
export declare type SignalIdentity = {
identifier: ProtocolAddress;
identifierKey: Uint8Array;
};
export declare type LTHashState = {
version: number;
hash: Buffer;
indexValueMap: {
[indexMacBase64: string]: {
valueMac: Uint8Array | Buffer;
};
};
};
export declare type SignalCreds = {
readonly signedIdentityKey: KeyPair;
readonly signedPreKey: SignedKeyPair;
readonly registrationId: number;
};
export declare type AccountSettings = {
/** unarchive chats when a new message is received */
unarchiveChats: boolean;
/** the default mode to start new conversations with */
defaultDisappearingMode?: Pick;
};
export declare type AuthenticationCreds = SignalCreds & {
readonly noiseKey: KeyPair;
readonly 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;
};
export declare type SignalDataTypeMap = {
'pre-key': KeyPair;
'session': any;
'sender-key': any;
'sender-key-memory': {
[jid: string]: boolean;
};
'app-state-sync-key': proto.Message.IAppStateSyncKeyData;
'app-state-sync-version': LTHashState;
};
export declare type SignalDataSet = {
[T in keyof SignalDataTypeMap]?: {
[id: string]: SignalDataTypeMap[T] | null;
};
};
declare type Awaitable = T | Promise;
export declare type SignalKeyStore = {
get(type: T, ids: string[]): Awaitable<{
[id: string]: SignalDataTypeMap[T];
}>;
set(data: SignalDataSet): Awaitable;
/** clear all the data in the store */
clear?(): Awaitable;
};
export declare type SignalKeyStoreWithTransaction = SignalKeyStore & {
isInTransaction: () => boolean;
transaction(exec: () => Promise): Promise;
};
export declare type TransactionCapabilityOptions = {
maxCommitRetries: number;
delayBetweenTriesMs: number;
};
export declare type SignalAuthState = {
creds: SignalCreds;
keys: SignalKeyStore;
};
export declare type AuthenticationState = {
creds: AuthenticationCreds;
keys: SignalKeyStore;
};
export {};