import type { Contact } from "./Contact"; import type { proto } from "../../WAProto"; 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 CollectionType = 'regular_high' | 'regular_low' | 'critical_unblock_low' | 'critical_block'; export declare type AuthenticationCreds = { noiseKey: KeyPair; signedIdentityKey: KeyPair; signedPreKey: SignedKeyPair; registrationId: number; advSecretKey: string; me?: Contact; account?: proto.ADVSignedDeviceIdentity; signalIdentities?: SignalIdentity[]; appStateSyncKeys?: proto.IAppStateSyncKey[]; appStateVersion?: { [T in CollectionType]: number; }; firstUnuploadedPreKeyId: number; serverHasPreKeys: boolean; nextPreKeyId: number; }; declare type Awaitable = T | Promise; export declare type SignalKeyStore = { getPreKey: (keyId: number) => Awaitable; setPreKey: (keyId: number, pair: KeyPair | null) => Awaitable; getSession: (sessionId: string) => Awaitable; setSession: (sessionId: string, item: any | null) => Awaitable; getSenderKey: (id: string) => Awaitable; setSenderKey: (id: string, item: any | null) => Awaitable; }; export declare type AuthenticationState = { creds: AuthenticationCreds; keys: SignalKeyStore; }; export {};