import { QualifiedId } from '@wireapp/api-client/lib/user'; import { TypedEventEmitter } from '@wireapp/commons'; import { CoreCrypto, E2eiConversationState, WireIdentity, DeviceStatus } from '@wireapp/core-crypto'; import { ClientService } from '../../../client'; import { CoreDatabase } from '../../../storage/CoreDB'; import { StringifiedQualifiedId } from '../../../util/qualifiedIdUtil'; import { RecurringTaskScheduler } from '../../../util/RecurringTaskScheduler'; import { MLSService } from '../MLSService'; export type DeviceIdentity = Omit & { status?: DeviceStatus; deviceId: string; qualifiedUserId: QualifiedId; }; type Events = { crlChanged: { domain: string; }; }; export declare class E2EIServiceExternal extends TypedEventEmitter { private readonly coreCryptoClient; private readonly coreDatabase; private readonly recurringTaskScheduler; private readonly clientService; private readonly mlsService; private _acmeService?; private readonly enrollmentStorage; constructor(coreCryptoClient: CoreCrypto, coreDatabase: CoreDatabase, recurringTaskScheduler: RecurringTaskScheduler, clientService: ClientService, mlsService: MLSService); isEnrollmentInProgress(): Promise; clearAllProgress(): Promise; getConversationState(conversationId: Uint8Array): Promise; isE2EIEnabled(): Promise; getAllGroupUsersIdentities(groupId: string): Promise | undefined>; getUsersIdentities(groupId: string, userIds: QualifiedId[]): Promise | undefined>; getDevicesIdentities(groupId: string, userClientsMap: Record): Promise; isFreshMLSSelfClient(): Promise; private registerLocalCertificateRoot; /** * will initialize the E2EIServiceExternal with the given discoveryUrl and userId. * It will also register the server certificates in CoreCrypto and start the CRL background check process * * @param discoveryUrl the discovery url of the acme server */ initialize(discoveryUrl: string): Promise; private get acmeService(); private registerCrossSignedCertificates; /** * This function is used to register different server certificates in CoreCrypto. * * 1. Root Certificate: This is the root certificate of the server. * - It must only be registered once. * - It must be the first certificate to be registered. Nothing else will work * * 2. Intermediate Certificate: This is the intermediate certificate of the server. It must be updated every 24 hours. * - It must be registered after the root certificate. * - It must be updated every 24 hours. * * Both must be registered before the first enrollment. */ private registerServerCertificates; private scheduleCrlDistributionTimer; private initialiseCrlDistributionTimers; private addCrlDistributionTimer; private cancelCrlDistributionTimer; private validateCrlDistributionPoint; private validateCrl; private handleNewCrlDistributionPoints; } export {}; //# sourceMappingURL=E2EIServiceExternal.d.ts.map