///
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 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;
pairingCode: string | undefined;
registered: boolean;
lastPropHash: string | undefined;
};
export declare type SignalDataTypeMap = {
"pre-key": KeyPair;
session: any;
"sender-key": any;
"sender-key-memory": {
[jid: string]: boolean;
};
"contacts-tc-token": {
token: Buffer;
timestamp?: string;
};
"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 {};