matrix-js-sdk
Version:
Matrix Client-Server SDK for Javascript
99 lines • 4.67 kB
TypeScript
import * as RustSdkCryptoJs from "@matrix-org/matrix-sdk-crypto-js";
import type { IEventDecryptionResult, IMegolmSessionData } from "../@types/crypto";
import type { IDeviceLists, IToDeviceEvent } from "../sync-accumulator";
import type { IEncryptedEventInfo } from "../crypto/api";
import { MatrixEvent } from "../models/event";
import { Room } from "../models/room";
import { RoomMember } from "../models/room-member";
import { CryptoBackend, OnSyncCompletedData } from "../common-crypto/CryptoBackend";
import { IHttpOpts, MatrixHttpApi } from "../http-api";
import { DeviceTrustLevel, UserTrustLevel } from "../crypto/CrossSigning";
/**
* An implementation of {@link CryptoBackend} using the Rust matrix-sdk-crypto.
*/
export declare class RustCrypto implements CryptoBackend {
private readonly olmMachine;
globalErrorOnUnknownDevices: boolean;
/** whether {@link stop} has been called */
private stopped;
/** whether {@link outgoingRequestLoop} is currently running */
private outgoingRequestLoopRunning;
/** mapping of roomId → encryptor class */
private roomEncryptors;
private eventDecryptor;
private keyClaimManager;
private outgoingRequestProcessor;
constructor(olmMachine: RustSdkCryptoJs.OlmMachine, http: MatrixHttpApi<IHttpOpts & {
onlyData: true;
}>, _userId: string, _deviceId: string);
stop(): void;
encryptEvent(event: MatrixEvent, _room: Room): Promise<void>;
decryptEvent(event: MatrixEvent): Promise<IEventDecryptionResult>;
getEventEncryptionInfo(event: MatrixEvent): IEncryptedEventInfo;
checkUserTrust(userId: string): UserTrustLevel;
checkDeviceTrust(userId: string, deviceId: string): DeviceTrustLevel;
globalBlacklistUnverifiedDevices: boolean;
userHasCrossSigningKeys(): Promise<boolean>;
prepareToEncrypt(room: Room): void;
forceDiscardSession(roomId: string): Promise<void>;
exportRoomKeys(): Promise<IMegolmSessionData[]>;
/**
* Apply sync changes to the olm machine
* @param events - the received to-device messages
* @param oneTimeKeysCounts - the received one time key counts
* @param unusedFallbackKeys - the received unused fallback keys
* @param devices - the received device list updates
* @returns A list of preprocessed to-device messages.
*/
private receiveSyncChanges;
/** called by the sync loop to preprocess incoming to-device messages
*
* @param events - the received to-device messages
* @returns A list of preprocessed to-device messages.
*/
preprocessToDeviceMessages(events: IToDeviceEvent[]): Promise<IToDeviceEvent[]>;
/** called by the sync loop to process one time key counts and unused fallback keys
*
* @param oneTimeKeysCounts - the received one time key counts
* @param unusedFallbackKeys - the received unused fallback keys
*/
processKeyCounts(oneTimeKeysCounts?: Record<string, number>, unusedFallbackKeys?: string[]): Promise<void>;
/** called by the sync loop to process the notification that device lists have
* been changed.
*
* @param deviceLists - device_lists field from /sync
*/
processDeviceLists(deviceLists: IDeviceLists): Promise<void>;
/** called by the sync loop on m.room.encrypted events
*
* @param room - in which the event was received
* @param event - encryption event to be processed
*/
onCryptoEvent(room: Room, event: MatrixEvent): Promise<void>;
/** called by the sync loop after processing each sync.
*
* TODO: figure out something equivalent for sliding sync.
*
* @param syncState - information on the completed sync.
*/
onSyncCompleted(syncState: OnSyncCompletedData): void;
/** called by the MatrixClient on a room membership event
*
* @param event - The matrix event which caused this event to fire.
* @param member - The member whose RoomMember.membership changed.
* @param oldMembership - The previous membership state. Null if it's a new member.
*/
onRoomMembership(event: MatrixEvent, member: RoomMember, oldMembership?: string): void;
/** Callback for OlmMachine.registerRoomKeyUpdatedCallback
*
* Called by the rust-sdk whenever there is an update to (megolm) room keys. We
* check if we have any events waiting for the given keys, and schedule them for
* a decryption retry if so.
*
* @param keys - details of the updated keys
*/
onRoomKeysUpdated(keys: RustSdkCryptoJs.RoomKeyInfo[]): Promise<void>;
private onRoomKeyUpdated;
private outgoingRequestLoop;
}
//# sourceMappingURL=rust-crypto.d.ts.map